Я много искал в Google способ включения машинного кода прямо в исходный файл сборки. Мне не повезло.
Что я подразумеваю под «встроенным машинным кодом», может быть неясно, поэтому позвольте мне привести пример того, что я ищу:
; here's my normal assembly code...
mov eax, 8
add eax, 10
; now I would like to be able to add some machine code
__machinecode__("40") ; this is equivalent to 'inc eax' (I think!)
Итак, это все.
mov eax, ebx
покрываются, и другой порядок префиксов инструкций покрывается, недопустимые инструкции покрываются и так далее. Еще одна причина заключается в использовании кода в качестве данных (например, для сжатия вашей 256-байтовой демонстрационной сборки), и вы должны быть уверены, что у вас правильная кодировка. Есть и другие причины. - person Alexey Frunze   schedule 10.04.2013db 'jH5j6j7'
:push 0x48; xor eax, 0x376a366a
.db 'H5j6j7'
:xor rax, 0x376a366a
.db 'j6j7'
:push 0x36; push 0x37
... Другой причиной может быть то, что некоторые ассемблеры могут не поддерживать некоторые недокументированные инструкции. - person nrz   schedule 10.04.2013