Я работаю над проектом, в котором я хотел бы добавить несколько пользовательских кодов операций в x86 и запустить их в QEMU.Я как-то разобрался, как изменить генерацию кода в QEMU, чтобы взять инструкцию по сборке с «поддельным» кодом операции и что-то с ней сделать в QEMU.
Однако у меня возникли проблемы с тем, как на самом деле я хотел бы создать двоичный файл с поддельной инструкцией.Единственный способ, о котором я подумал, - это добавить некоторые операторы db
, а затем просто написать инструкцию вручную.Например:
xor EAX, EBX
db 0xf1,0x32,0x55,0x00
mov EBX, EAX
(предположим, что в БД достаточно байтов, чтобы быть действительной инструкцией).Будет ли это на самом деле компилировать двоичный файл, где байты, которые я определил во второй строке, рассматриваются как инструкция?
Есть ли более элегантный подход к этому?Поскольку я буду модифицировать QEMU для поддержки этих изменений, я на самом деле не связан форматом инструкций - мне просто нужно получить код OP, который будет распознаваться генератором кода QEMU, а остальное я могу сформулировать так, как я хочу.