Floating Points
-
Hallo,
ich möchte eine Funktion in Assembler schreiben, die zwei Gleitkommazahlen addiert und das Ergebnis zurück liefert. Aber irgendwie bekomme ich das nicht hin. Mit Integer-Zahlen klappt es wunderbar.
Mein Ergebnis ist immer total falsch.test.c:
#include <stdio.h>
int main(void){
double a,b,c;
a=1.0E00;
b=1.0E00;
c=r_addu(a,b);
printf("c=%1.16g\n",c);
return 0;
}add.S:
.globl r_addu
.type r_addu, @function
r_addu:
pushl %ebp
movl %esp, %ebp
fldl 8(%ebp)
faddl 16(%ebp)
leave
retWo liegt der Fehler?
Gruß
Boris
-
Schaut eigentlich richtig aus. Du hast es offenbar so gemacht, wie ich es immer empfehle, nämlich den Output vom Compiler hernehmen und anpassen...
-
Ah, mir ist schon klar, was das Problem ist: wenn du keinen Prototype für die Funktion angibts, nimmt der C-Compiler an, dass sie ein int liefert. So kann's natürlich nicht gehen...
-
Super danke!
Das ist natürlich vollkommen richtig, was Du schreibst!!