c 库 x86/x64 汇编程序

标签 c assembly x86 64-bit

是否有用于将 x86/x64 汇编字符串组装成操作码的 C 库?

示例代码:

/* size_t assemble(char *string, int asm_flavor, char *out, size_t max_size); */

unsigned char bytes[32];
size_t size = assemble("xor eax, eax\n"
                       "inc eax\n"
                       "ret",
                       asm_x64, &bytes, 32);

for(int i = 0; i < size; i++) {
    printf("%02x ", bytes[i]);
}

/* Output: 31 C0 40 C3 */

我看过asmpure ,但是它需要修改才能在非 Windows 机器上运行。

实际上我需要一个汇编器和一个反汇编器,是否有同时提供两者的库?

最佳答案

有一座图书馆,看似幽灵;它的存在广为人知:

XED(X86编码解码器)

英特尔写道:https://software.intel.com/sites/landingpage/pintool/docs/71313/Xed/html/

可以用Pin下载:https://software.intel.com/en-us/articles/pintool-downloads

关于c 库 x86/x64 汇编程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001094/

相关文章:

c - 这是关于c中的递归函数

c - 如何指向一个指针的指针

c - x86_64 ASM - 指令的最大字节数?

assembly - x86 控制台滚动后出现奇怪的打印

c - 两点之间的插值,我错过了什么吗?

是否可以使用本地端口通过 UDP 连接到多个远程对等点?

linux nasm 代码什么都不显示

c - 了解反汇编的 C 代码(特别是像 var_28 = dword ptr -28h 之类的东西)(二进制炸弹实验室)

x86 - 像 CLR 和 JVM 这样的运行时能够使用 Haswell TSX 指令吗?

ubuntu - x86 程序集 jl 不起作用