| |
|
|
Michael Wodrich | Hallo Frank,
bei der ersten Durchsicht von iF's SyntaxPainter fielen mir die endlosen PUSH/POP-Aufrufe auf. Ich löse das per Macros, die eigentlich gut in die basis.inc passen:
[box:a5467fa627] <tt><pre> 'ASM-Macros ;; ;; mehrere Register auf einmal sichern ;; PushSome MACRO items:VARARG LOCAL arg FOR arg,<items> push arg ENDM ENDM ;; ;; mehrere Register auf einmal zurückholen ;; (in genau der angegebenen Reihenfolge) ;; PopSome MACRO items:VARARG LOCAL arg FOR arg,<items> pop arg ENDM ENDM ;; ;; mehrere Register auf einmal zurückholen ;; (in umgekehrter Reihenfolge) ;; kann gut als Gegenstück zu PushSome genutzt werden ;; PopSomeRev MACRO p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 LOCAL arg FOR arg,<p12,p11,p10,p9,p8,p7,p6,p5,p4,p3,p2,p1> IFNB <arg> pop arg ENDIF ENDM ENDM </pre></tt> [/box:a5467fa627] Dann würden die Registersicherungen nur eine Zeile benötigen und man kann sich nicht so leicht vertippen bei der Reihenfolge. KompilierenMarkierenSeparieren Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 11.11.2005 ▲ |
|
|
|
|
| Hm mal davon abgesehen das Io l' Stack oft nutze um Werte zu tauschen - aber besonders vor ApiCalls wäre das naturalmente sinnvoll.
Salve. |
|
|
| |
|
|
|
Michael Wodrich | Auch das Tauschen ist ja possibile, wenn viele Register betroffen sind (sonst lohnt es nicht).
PushSome eax,ebx,ecx PopSome ecx,eax,ebx
vertauscht EAX und EBX
Das PopSome Macro sammelt nur mehrere POPs in einem Statement während PopSomeRev speziell bei der Register-Restaurierung nach Funktionsaufrufen benutzt wird.
Diese Macros gab es in ähnlicher Form mal in alten MASM-Versionen als PUSHALL und POPALL. Die waren aber nicht so flexibel, da sie hart codiert waren.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 11.11.2005 ▲ |
|
|
|
|
Frank Abbing | Hallo Michael,
gutes Macro, gute Idee! Da aber nicht jeder immer alle Macros benötigen wird, will ich nicht zu viel davon in die basic.inc packen. Macht ja die Quellcodes auch unübersichtlich. Ich denke, es ist besser im XPIA-Foro einen Thread zu öffnen, in dem Macros gesammelt werden und dort immer zur Verfügung stehen, bzw. der dort von jedem erweitert werden kann. Das mache ich gleich mal... |
|
|
| |
|
|