我需要生成随机 ASM 指令。我从 UOPS 找到了一个非常有用的 XML 文件这使得随机指令生成器程序非常简单。但是,XML 文件提供了英特尔 X86 编码器解码器 (XED) 语法中的指令,我想知道是否有办法将它们编译为可执行文件,就像使用 NASM 或 MASM 程序一样。
指令列表看起来像这样:
DEC R8W
LOCK ADC byte ptr [0xB8], 0x82
IN AX, DX
BTR qword ptr [RBX], 0xF7
IN EAX, DX
ADD RAX, 0x25C9FB2C
LOCK BTC qword ptr [RBP], 0xA5
CMOVBE ESI, R10D
{load} MOV CH, DL
我使用的是 Ubuntu 22.04
最佳答案
从 XML 文件生成的指令旨在与 Gnu 汇编器(在 Intel 语法模式下)一起使用。
您必须添加行 .intel_syntax noprefix
到文件的开头:
.intel_syntax noprefix
DEC R8W
LOCK ADC byte ptr [0xB8], 0x82
IN AX, DX
BTR qword ptr [RBX], 0xF7
IN EAX, DX
ADD RAX, 0x25C9FB2C
LOCK BTC qword ptr [RBP], 0xA5
CMOVBE ESI, R10D
{load} MOV CH, DL
然后,您可以通过运行 as <filename>
生成可执行文件.
关于assembly - 如何使用 X86 编码器解码器 (XED) 语法编译一组 ASM 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72890131/