我定义了一个汇编函数,它接受三个参数(int、double、double),它应该添加两个 putted double 值并返回这个加法的结果。而且我不知道为什么下面的代码不起作用:
extern double ftaylor(unsigned int n, double x, double y);
int main()
{
double z = 14;
z = ftaylor(30, 13.45, 7);
printf("%f", z);
return 0;
}
以及组装功能:
.globl ftaylor
ftaylor:
.lcomm state, 8
.lcomm state2, 8
push %rbp
mov %rsp, %rbp
push %rax
mov %rdi, %rax
movsd %xmm0, state
movsd %xmm1, state2
finit
fld state
fld state2
fadd %st(1), %st(0)
fstp state
fstp state2
movsd state, %xmm0
pop %rax
mov %rbp, %rsp
pop %rbp
ret
终端上打印的结果是13.45
。看起来处理器不执行加法。我不知道为什么。