0
我在ASM和C中有这个非常简单的函数。我想从C代码中调用ASM函数进行加倍。我觉得从ASM返回值应存放在XMM0,但什么是真正发生的是,我的返回值被从兵营采取或如果RAX没有设置,我得到1从C(双)调用ASM x64函数,GAS
C代码:
#include <stdio.h>
int main() {
double a = 3.14;
double b = add(a);
printf("%lf\n", b);
return 0;
}
ASM功能:
.type add, @function
.globl add
add:
#movq $1, %rax
addsd %XMM0, %XMM0
ret
它有什么问题?欣赏所有提示。
非常感谢! – zderzak678