我有一个涉及仿真的项目(如果您查看我的帖子历史记录,您会看到我已经走了多远!)并且我希望使用 C 进行伪二进制翻译并使用优化器和/或编译器使用 C 代码将我的 switch 语句内容编译为单个汇编指令,主要用于非常标准的指令,例如mov
s, add
, SR
以及其他简单的位操作和算术指令。我希望同时为 ARM 和 x86-64 执行此操作,并在两个程序集中编写尽可能少的内容。
如果我描述的东西不存在,那么我想知道是否有某种“汇编语言”可以用来编写我的代码,然后将该程序集编译为 x86-64 和 ARM。
为了清楚地回答这部分:
...然后我想知道是否有某种“汇编语言”我可以
用于编写我的代码,然后将该程序集编译为 x86-64 并
手臂。
正是如此LLVM IR http://llvm.org/docs/LangRef.html正在瞄准。
LLVM 表示的目标是轻量级和低级别,同时
同时具有表现力、类型化和可扩展性。其目的是
成为某种“通用IR”,通过处于足够低的水平
高层次的想法可以清晰地映射到它(类似于如何
微处理器是“通用IR”,允许多种源语言
映射到它们)。
For example http://llvm.org/releases/2.6/docs/tutorial/JITTutorial1.html:
你可以表示这个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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)