【发布时间】:2016-04-24 10:24:02
【问题描述】:
我在 ASM 和 C 中得到了这个非常简单的函数。我想从 C 代码中调用 ASM 函数以获得双精度。我认为 ASM 的返回值应该存储在 XMM0 中,但实际上我的返回值是从 rax 获取的,或者如果 rax 没有设置,我得到 1。
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
它有什么问题?感谢所有提示。
【问题讨论】:
标签: c function assembly 64-bit call