Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Weiter Assembler
Arno-Wien - Di 03.01.06 19:55
Titel: Weiter Assembler
Aufgrund der Beispiele, die ich von euch bekommen habe, habe ich folgendes übersetzt:
Alle Variablen sind extended
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure rechnung_compiler; begin ywert:=zwei*xwert*ywert-y_konst; xwert:=xqu-yqu-x_konst; xqu:=xwert*xwert; yqu:=ywert*ywert; summe:=xqu+yqu; end;
procedure rechnung_assembler; asm fld y_konst fld ywert fld xwert fld zwei fmulp fmulp fmulp fsub fstp ywert
fld x_konst fld yqu fld xqu fsubp fsubp fstp xwert
fld xwert fmulp fstp xqu
fld ywert fld ywert fmulp fstp yqu
fld xqu fld yqu faddp fstp summe end; |
Ergibt eine Invalid floating point operation.
Bitte um Hilfe
Ich weiss, dass man das viel eleganter übersetzen könnte, aber es ist der erste Versuch.
Arno
Allesquarks - Di 03.01.06 22:12
Fehler tritt wo auf (bei dir zuhause oder in Zeile x)!!!!!!!
Auf Anhieb würde ich sagen ein mulp zuviel. Du multiplizierst vier Zahlen und benutzt dann ein leeres Register.
By the way. Solche Zahlen kann man auch auf dem Stack halten, da die meiseten deiner Befehle nicht nur mit dem Tos funktionieren.
Für die Grundoperationen gibt es auch noch die Operationen mit umgekehrter Operandenreihenfolge mulrp subrp etc.
BenBE - Mi 04.01.06 11:09
Ich würd so direkt mal auf Zeile 18\19 tippen *g* FPStack Underrun at FSUB...
Müsste übrigens, wenn Du es schon so machst FSUBP heißen.
Zeile 29 ist gleich die nächste, die crasht ;-)
Ansonsten kann ich Dir auch nur Strg+Alt+C \ Strg+Alt+F empfehlen ;-)
(Übrigens: Fehler ohne Delphi gefunden ;-))
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!