是否有专门设计的 C 函数或宏,用于以跨平台方式与汇编指令进行一对一编译以进行位操作?

2024-03-14

我有一个涉及仿真的项目(如果您查看我的帖子历史记录,您会看到我已经走了多远!)并且我希望使用 C 进行伪二进制翻译并使用优化器和/或编译器使用 C 代码将我的 switch 语句内容编译为单个汇编指令,主要用于非常标准的指令,例如movs, 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(使用前将#替换为@)

是否有专门设计的 C 函数或宏,用于以跨平台方式与汇编指令进行一对一编译以进行位操作? 的相关文章

随机推荐