Ich habe diese wirklich einfache Funktionen in ASM und C. Ich möchte ASM-Funktion von C-Code für Doppel aufrufen. Ich denke, Rückgabewert von ASM sollte in XMM0 gespeichert werden, aber was passiert eigentlich, dass mein Rückgabewert von rax genommen wird oder wenn rax nicht gesetzt ist, bekomme ich 1.Aufruf ASM x64-Funktion von C (Doppel), GAS
C-Code:
#include <stdio.h>
int main() {
double a = 3.14;
double b = add(a);
printf("%lf\n", b);
return 0;
}
ASM-Funktion:
.type add, @function
.globl add
add:
#movq $1, %rax
addsd %XMM0, %XMM0
ret
Was ist falsch daran? Schätze alle Hinweise.
Vielen Dank! – zderzak678