【发布时间】:2018-11-17 19:12:22
【问题描述】:
我有一个 C 64 位程序,其函数声明如下:
#include <stdio.h>
extern double wartosc (double a, double b, double x, int n);
int main() {
printf("%f", wartosc(4, 3, 2, -2));
}
函数用汇编实现,代码:
section .text
global _wartosc
_wartosc:
cmp rdi, 0
jl finish
xorpd xmm0, xmm0
finish:
ret
为什么 printf 函数输出 0?对比 rdi 寄存器的论点似乎无效
如果我理解正确,参数 a、b、x 被传递到 xmm0、xmm1 和 xmm2 寄存器并且最后一个参数在 rdi 中,结果由 xmm0 寄存器返回。
【问题讨论】:
标签: c macos assembly nasm x86-64