我有一个涉及仿真的项目(如果你查看我的帖子历史,你会看到我走了多远!)我正在寻找使用 C 进行伪二进制翻译并使用优化器和/或编译器使用 C 代码将我的 switch 语句内容编译为单个汇编指令,主要用于非常标准的指令,例如 mov
s、add
、SR
和其他简单的位操作和算术指令。我希望同时为 ARM 和 x86-64 执行此操作,并在两个程序集中尽可能少地编写它。
如果我描述的东西不存在,那么我想知道是否有某种“汇编语言”可以用来编写我的代码,然后将该程序集编译为 x86-64 和 ARM。
最佳答案
明确回答这部分:
这正是 LLVM IR 的目标。
对于 example :
你可以代表这个C函数
int mul_add(int x, int y, int z) {
return x * y + z;
}
使用这个 LLVM IR
define i32 @mul_add(i32 %x, i32 %y, i32 %z) {
entry:
%tmp = mul i32 %x, %y
%tmp2 = add i32 %tmp, %z
ret i32 %tmp2
}
关于c - 是否有专门设计用于以跨平台方式使用汇编指令对位操作进行 1 到 1 编译的 C 函数或宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25484505/