Pantene742, WASI не предназначен для запуска в браузере, там он не будет НИКОГДА. Дело в том, что Mozilla очень против добавления в браузер дополнительных языков для создания приложений. Допустимы только библиотеки находящиеся в песочнице из JS кода. Цель существования WASI в создания изолированных микросервисов, чтобы приложения на Си могли запускать изолированный WASM код. Конечно такой WASM-код может быть запущен в браузере, если на JS реализовать стандартные WASI API.
sos1mple, А если заменить rcx на rbx? cmp не нужен, любая целочисленная арифметическая операция затрагивает регистр флагов(кроме lea). Собственно cmp это sub не меняющий регистры, кроме флагов.
Ещё из штатных пожиратель IOPS есть помощник совместимости программ. Он регулярно сканирует весь диск и нужно лезть в планировщик задач, чтобы это отключить. Возможно он требует меньше 1000 IOPS/s и поэтому на SSD это не так заметно.
Begginer_serg, Мое сочинение как бы намекает, что результаты будут чисто рандомные для каждого из вариантов. Чтобы получить нормальный результат, Вам нужен эталонный i386, а не i3.
В современном процессоре мерить скорость группы инструкций бесполезно. Только в каком либо ARM M0 это будет давать вменяемые результаты. Во первых уже очень давно процессоры выполняют несколько инструкций с не пересекающимеся данными за 1 такт. Чуть позже они начали делать это спекулетивно, то есть просто надеясь, что выполнение доберётся до этих инструкций не уйдя по условному переходу или исключению. Откаты ошибочных предположений очень долгие и Вы даже не поймёте почему простейшая инструкция add reg,reg стоящая за je short label занимает сотни тактов. Ещё чуть позже все процессоры Intel начали компилировать x86-код, в свой внутренний микрокод(подозреваю новую архитектуру AMD в том же), так как x86 с самого начала был не оптимален для спекулетивного выполнения. И естественно любая компиляция требует времени и хранит результат в кеше процессора, а он не резиновый. Учитывая, что lea reg, [reg+reg+imm] когда то выполнялась за 1 такт, то вероятно в микрокоде все подобные сложения будут выполнятся за 1 такт несмотря на то, что инструкции теоретически должны дождаться результата работы прошлых команд. А вот с обращением к памяти всё довольно печально, Вы ведь знаете о CAS Latency? На моём устаревшем процессоре один запрос к памяти мимо кеша занимает 38 тактов и повышение частоты процессора так же увеличивает эту цифру. Это сводит на нет всю пользу Вашего вопроса.
В современном коде гораздо важнее общая архитектура, неправильно выбранный алгоритм или лишние/повторные вычисления никакие оптимизации инструкций не спасут. Затем идёт оптимизация доступа к памяти, чтобы обращения за пределы кеша происходили как можно реже. И последнее, игра с условными переходами, чтобы снизить число промахов спекуляций. В остальном любой не оптимизированный код, современным процессором выполняется почти так же быстро как идеальный.
В винде всё можно. Читать и писать память другого процесса, в том числе читать/изменять список загруженных *.exe/*.dll, проецировать общую память, создавать новые потоки, изменять все регистры существующих, а так же приостанавливать их работу. Главное, чтобы права на всё это были. Очень легко вызвать int add(int,int). Но если передавать указатель... Каждый процесс имеет независимое адресное пространство и указатель из одного процесса является мусором в другом. В простейшем случае, мы просто смещаем стек нового потока, копируем в него пару структур и конвертируем указатели. Но, что если указателей к которым может получить доступ функция совсем не пара? Что если там есть дескриптор файла или ещё какой локальный для процесса ресурс? Далеко не каждую функцию легко вызвать и это всегда совсем не проще сокетов.
4sadly, Что значит мешать языки? Вот php использует уйму Си/С++ кода, это мешанина? А когда запускаются shell скрипты или вызываются sql-процедуры? А так же фронтенд и бекенд зачастую работают на различных языках. Мешанина языков вполне обыденная вещь, просто считайте это отдельным сервисом. И соответственно отделите код так, чтобы было понятно, что и где.
После вывода команды можно ли отправить следующую? Если нет, то возможно проблема с mtu. Если создать большой файл в котором будет только "ааааааа...". Будет ли он полностью прочтён? Возможно встречаются какие то специальные символы, винда не рассчитана на работу с Линукс терминалами. Что за сервер используется? Если не OpenSSH, то малоизвестные глюки вполне возможны.
В чём именно вопрос?
1) Как склеить ASM-код с Си-кодом 16/32/64-бит разрядности в один исполняемый файл PE/ELF/собственный контейнер с применением FASM/NASM/MASM/TASM/AS и компилятором MS/GCC/LLVM? Нужное подчеркнуть.
2) Как из 16-битного режима вызвать 32/64-битный код на Си, чтоб работало?
TommyAngel, OEM или не OEM даже сам Майкрософт не может понять. По закону ты будешь виноват независимо от того считает ли себя Windows лицензионной или нет. Главное, что с подобным сайтом у Вас вероятно нет договора на покупку Windows или чека для физ.лиц, а только ключ. Ну так все кряки это тоже по сути ключ. Такие же ключи продаются на ebay за 200р и ими тоже можно активировать Windows. А вот если договор есть, то можно даже крякать windows, главное чтобы число компов не превышало число лицензий.
Если Ваш сервер физически унесут и снимут диск, то поможет Вам iptables и авторизация по ключам? Если ЦРУ войдёт на циску через бэкдор, подделает ip-адрес и зайдёт как root через дыру в sshd, то поможет?
Что значит "не запускается"? Windbg в списке модулей отображает Ваш модуль? По идее запуск "службы" проходит успешно только если драйвер был загружен, запущен и вернул success.
SergeiSmirnov, Для простоты реализации двойного стека, ядро может маскировать IPv4-адреса под IPv6-адреса. Выглядеть они будут как то так ::ffff:0101:0101. То есть сначала нужно сделать allow ::ffff:0:0/96
Sanders, Explorer имеет недокументированный UAC api, через который они могут запрашивать файловые операции создать/переименовать/удалить/изменить права. Для всех остальных данная привилегия недоступна, так как пользователь может не понять, что это спрашивает не Explorer, а левая программа. Для остальных есть либо явный перезапуск, либо собственный DCOM сервер с админскими правами.