Italia
Assembler Foro

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 Io l' Stack oft nutze um Werte zu tauschen - aber besonders vor ApiCalls wäre das naturalmente sinnvoll.

Salve.
 
11.11.2005  
 




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...
 
11.11.2005  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.932 Views

Untitledvor 0 min.
p.specht14.09.2013

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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