Deutsch
Assembler Forum

PushSome / PopSome

 

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 ich den Stack oft nutze um Werte zu tauschen - aber besonders vor ApiCalls wäre das natürlich sinnvoll.

Salve.
 
11.11.2005  
 




Michael
Wodrich
Auch das Tauschen ist ja möglich, 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-Forum 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...
 
11.11.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.948 Betrachtungen

Unbenanntvor 0 min.
p.specht14.09.2013

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Michael Wodrich (2x)
Frank Abbing (1x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie