NAsm: "Undefinierte" Nachkommastellen?

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

NAsm: "Undefinierte" Nachkommastellen?

Beitrag von Mok »

Hallo.
Ich habe mir gestern mit dem x87-FPU-Befehlssatz mein "eigenes" ASin geschrieben:

Code: Alles auswählen

[section .text]
    global _ASin
    _ASin:
        ENTER   4, 0
        FLD     dword [ebp+8]
        FMUL    st0, st0
        FLD1
        FSUBR
        FSQRT
        FPATAN 
        PUSH    eax
        FISTP   dword [esp]
        POP     eax

        LEAVE
        RET     4
Den Code habe ich mit dem VS2010 Linker zu einer Objektdatei und einer statischen Lib gelinkt.
Folgendes Problem tritt auf, wenn ich eine der Dateien einbinde und die Prozedur importiere:

Code: Alles auswählen

Import "fputest.obj"
  MyASin.f( Value.f ) As "_ASin"
EndImport

Debug ASin( -1 )    ; Ergebnis = -1.5707963267948966
Debug MyASin( -1 )  ; Ergebnis = -1.#IND
Wie kann denn eine Nachkommastelle undefiniert sein?

Und jetzt noch etwas ganz Komisches:
Wenn ich die Lib in einem C++ Programm benutze, ASin aufrufe und per cout/endl ausgebe, wird auch -1.#IND angezeigt ABER: wenn ich in C++ den ASM-Code an die MAsm-Syntax anpasse und inline schreibe, kommt tatsächlich -1.5708 raus. :?
Kann mir das jemand von den Profis erklären?

Danke im Voraus, Mok.

Edit:
Achso -1.#IND heißt einfach undefiniert, ich hab mich schon gefragt woher "-1." kommt... wie auch immer...
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: NAsm: "Undefinierte" Nachkommastellen?

Beitrag von Danilo »

Der Rückgabewert von Floats wird doch auf dem FPU-Stack erwartet?
Probier mal FISTP durch FIST zu ersetzen.
Wenn das geht, dann kannst Du Dir das kopieren in eax wohl ganz sparen,
oder machst es zusätzlich (manche compiler legen es zusätzlich in eax).
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: NAsm: "Undefinierte" Nachkommastellen?

Beitrag von Mok »

Danke für deine Antwort Danilo - es funktioniert mit FIST einwandfrei. (Wie oben bereits von dir erklärt funzt es natürlich auch ohne)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten