Я ищу писать JIT-компилятор для виртуальной машины для хобби, над которой я работал недавно. Я знаю немного сборки, (я в основном программист на C. Я могу прочитать большую сборку со ссылкой на коды операций, которые я не понимаю, и написать несколько простых программ.), Но мне трудно понять несколько примеров самомодифицирующегося кода, который я нашел в Интернете.
Это один из таких примеров: http://asm.sourceforge.net/articles/smc.html
Приведенная примерная программа выполняет около четырех различных модификаций при запуске, ни одна из которых не объясняется четко. Прерывания ядра Linux используются несколько раз и не объясняются и не детализированы. (Автор пересылал данные в несколько регистров перед вызовом прерываний. Я предполагаю, что он передавал аргументы, но эти аргументы вообще не объясняются, оставляя читателя догадываться.)
То, что я ищу, является самым простым, самым простым примером в коде самомодифицирующей программы. Что-то, на что я могу смотреть, и использовать, чтобы понять, как должен быть написан самомодифицирующий код в сборке x86 и как он работает. Есть ли какие-либо ресурсы, на которые вы можете указать мне, или какие-либо примеры, которые вы можете дать, которые будут адекватно демонстрировать это?
Я использую NASM в качестве своего ассемблера.
EDIT: Я также запускаю этот код в Linux.