assembly - 如何使用 X86 编码器解码器 (XED) 语法编译一组 ASM 指令

标签 assembly makefile x86 x86-64 xed

我需要生成随机 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/

相关文章:

c++ - C++如何处理不确定格式的数字和字符?

c++ - 不应该应用的 makefile 规则

c - 适用于 Windows 的硬件性能计数器 API

c++ - Cmake 生成独立的makefile

assembly - 从Rust更改x86中的执行堆栈

x86 - 是否存在 VMM 在中断窗口退出时无法将中断注入(inject)客户机的情况?

assembly - 实现 ARMv5TE 和 VFPv1 的 ARM 处理器?

assembly - ARM 指令 ldrex/strex 是否必须对缓存对齐的数据进行操作?

compiler-construction - 修复的定义?

无法在 netbeans 中运行我的 C 代码