Я пытаюсь использовать dynasm. Я нашел несколько обучающих программ онлайн для этого, но все они требуют использования странных строк кода, таких как |.arch x64
что мой компилятор (MSVC) отвергает. Есть упоминания о автономном парсере Lua и .dasc
файлы, но ни один из этих руководств не упоминает, как все это должно быть настроено.
Как диназм должен быть настроен в проекте?
DynASM позволяет вам гораздо проще записывать сборку, смешивая код C и код ASM. Файлы DynASM должны быть предварительно обработаны. Результатом компиляции файла DynASM (.dasc) является файл C (.c), который вы можете позже интегрировать в ваш проект.
Для предварительной обработки файла DynASM вы должны использовать программу dynasm, которая поставляется с исходным кодом LuaJIT (dynasm/dynasm.lua)
, Упомянутые вами «странные» строки — это код ASM, который обрабатывается DynASM. ASM-код сохраняется как байтовые значения в массиве actions
в результирующей C-программе.
На DynASM есть большой тур Джош Хаберман: Привет, Мир JIT: Радость Простых JIT. Учебник включает пример кода. Код доступен в виде GitHub репозиторий. Получить его и начать играть с ним (примечание: в настоящее время основная ветвь не создается, я только что отправил pull-запрос, чтобы исправить это).
Еще одно хорошее вступление к DynASM:
Других решений пока нет …