我有一个函数,其中的代码我想转换成汇编(因为各种原因):
int foo(int x, int y, int z);
我使用以下方法生成汇编代码:
clang -S -mllvm --x86-asm-syntax=intel foo.c
汇编输出:foo.s 开始是这样的:
汇编输出:foo.s 开始是这样的:
_foo: ## @foo
.cfi_startproc
## BB#0:
push RBP
Ltmp2:
.cfi_def_cfa_offset 16
...
我认为这是该函数对应的汇编代码。我的问题是,我应该将汇编输出中的哪一部分复制到C代码中(我正在尝试使用内嵌汇编),以使函数能够工作?代码应该如下所示:
int foo(int x, int y, int z) {
__asm__("..."); // <-- What goes inside?
}
谢谢
#ifdef
。正确编写内联汇编,特别是准确设置约束、破坏和输入/输出,是困难的,但这是使其正常工作所必需的。(如果你选择这条路,请检查反汇编输出,以确保你的汇编代码按照你的预期插入。) - Peter Cordes