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
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
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...