【发布时间】:2013-06-08 15:35:47
【问题描述】:
是否有用于将 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 机器上运行。
我实际上都需要一个汇编器和一个反汇编器,有没有一个库可以同时提供?
【问题讨论】:
-
我怀疑你会得到一个库,但你可以捆绑 NASM 并使用 system/popen 调用它
-
@Tyilo 不要听 Linuxios,你的感觉会给你正确的方向 -
system()ing nasm(或任何其他工具,就此而言)是错误.也许您想看一下它的源代码并提取基本部分。或者看看 TCC,微型 C 编译器 - 它有一个 x86 后端,也许你可以将 C 解析与机器代码生成分开。 -
@H2CO3:这是错误的,但总比停止一个项目要好。
-
@Gilbert 我不需要 inline 汇编器,我需要 runtime 汇编器!