У меня есть 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.