Entwickler-Ecke
Sonstiges (Delphi) - Parser um Funktion erweitern
j0hnny - Do 24.06.10 13:40
Titel: Parser um Funktion erweitern
Moin!
Ich würde gerne den tyParser (
http://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
Delphi-Quelltext
1:
| ... ExprFuncs = (_sin, ...) ... |
Delphi-Quelltext
1: 2:
| ... if S = 'sin' then Result := _sin else ... |
Delphi-Quelltext
1:
| ..._sin : _SP^ := sin(_SP^);... |
Delphi-Quelltext
1: 2:
| ... _sin : begin Move(fsin, P^, SizeOf(fsin)); Inc(P, SizeOf(fsin));... |
Aber woher kriege ich jetzt diesen Wert:
Delphi-Quelltext
1:
| fsin: array[0..1] of Byte = ($d9,$fe); |
Vielen Dank für euere Hilfe!
Moderiert von
Narses: URL-Tags ergänzt.
delfiphan - Do 24.06.10 18:47
Ich habe die entsprechenden Funktionen zuerst in Delphi implementiert, Break-Point gesetzt und dann im Debugger ausgelesen.
j0hnny - 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
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!
j0hnny - 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
Narses: 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 - 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.
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!