Autor Beitrag
j0hnny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Do 24.06.10 13:40 
Moin!

Ich würde gerne den tyParser (www.delphi-forum.de/viewtopic.php?t=36946) um eine eigene Funktion erweitern. Die Stellen, an denen die Funktionen definiert werden (abs, sin usw.) habe ich gefunden. Allerdings weiß ich nicht, was ich unter "machine code fragments" eintragen muss. Z.b. beim sin

ausblenden Delphi-Quelltext
1:
... ExprFuncs = (_sin, ...) ...					

ausblenden Delphi-Quelltext
1:
2:
... if S = 'sin' then
        Result := _sin else ...

ausblenden Delphi-Quelltext
1:
..._sin      : _SP^ := sin(_SP^);...					

ausblenden Delphi-Quelltext
1:
2:
...       _sin     : begin
                   Move(fsin, P^, SizeOf(fsin)); Inc(P, SizeOf(fsin));...

Aber woher kriege ich jetzt diesen Wert:
ausblenden Delphi-Quelltext
1:
 fsin: array[0..1of Byte = ($d9,$fe);					


Vielen Dank für euere Hilfe!

Moderiert von user profile iconNarses: URL-Tags ergänzt.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 24.06.10 18:47 
Ich habe die entsprechenden Funktionen zuerst in Delphi implementiert, Break-Point gesetzt und dann im Debugger ausgelesen.
j0hnny Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Do 24.06.10 19:07 
Danke für deine Antwort!

An welcher Stelle müsste ich denn den Breakpoint setzen? Für den sin bei
ausblenden Delphi-Quelltext
1:
_sin      : _SP^ := sin(_SP^);					

?

Und in welchem Fenster kann ich dann die Bytes auslesen?

Sorry, bin recht neu bei Delphi. Danke schonmal!


Zuletzt bearbeitet von j0hnny am Do 24.06.10 20:39, insgesamt 1-mal bearbeitet
j0hnny Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Do 24.06.10 20:18 
Oh! Ok ich habe gesehen, dass obiger Codeausschnitt nur für ein parsen ohne Compilierung gedacht ist.

Aber wie und wo ich jetzt diesen Bytearray her bekomme, habe ich noch nicht herausfinden können.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Also im CPU Fenster habe ich jetzt den Aufruf der sin-Funktion nachvollziehen können. Allerdings komme ich schon bei der heavidide-Funktion mit der if-Abfrage schon nicht mehr weiter. Das einzige, was ich finden kann ist "$9b,$df,$e0,$9e". Z.b. das "$d9,$ee,$d8,$d9" kann ich schon nicht mehr finden.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 25.06.10 18:48 
Bei Heaviside ist es nicht 1:1 umgesetzt wie beim Delphi-compiler, daher stimmt der Code nicht ganz überein.

Alternativ kannst du es wie ähnlich wie XPower machen. Dort wird die Funktion nicht in die Funktion reincodiert sondern eine externe Funktion aufgerufen.

Für diesen Beitrag haben gedankt: j0hnny