Seite 2 von 2
Re: Assembler: Vergleiche & Sprünge
Verfasst: So Jul 06, 2014 11:29 pm
von nufan
Architekt hat geschrieben:Gibt es da noch eine "schönere" / "bessere" Variante? Oder lieber den Stack vermeiden (sprich kein push) und Register verwenden?
Ich würde dein esp innerhalb deiner Funktion nur ganz am Beginn (sub) und ganz am Ende (add) ändern und dazwischen mit Offsets arbeiten.
Natürlich ist es aber besser mit Registern zu arbeiten, sofern es möglich ist.
Re: Assembler: Vergleiche & Sprünge
Verfasst: Mo Jul 07, 2014 5:18 pm
von Architekt
Ich habe direkt noch eine, wie ich denke, letzte Frage:
Wie würde sich am besten so etwas wie:
in Assembler realisieren lassen? Ich verstehe den 'andl' Operator nicht ganz.
Die erste Bedingung würde ich wie folgt angehen:
Doch nun weiß ich nicht so recht weiter. Muss ich das ganze wie folgt erweitern?
Code: Alles auswählen
movl $1, %eax
movl $1, %ebx
cmpl %eax, %ebx
pushl %eax
movl $2, %eax
movl $2, %ebx
andl %eax, %ebx
Mich verwirrt, wie ich mit den zwei Operanden umgehen soll.
Re: Assembler: Vergleiche & Sprünge
Verfasst: Mo Jul 07, 2014 6:08 pm
von oenone
Architekt hat geschrieben:Ich habe direkt noch eine, wie ich denke, letzte Frage:
Wie würde sich am besten so etwas wie:
in Assembler realisieren lassen?
Das wird üblicherweise in zwei Vergleiche aufgespalten, so wie
In Assembler dann etwa so:
Code: Alles auswählen
movl $1, %eax
movl $1 %ebx
cmpl %eax, %ebx
jne end
movl $2, %eax
movl $2, %ebx
cmpl %eax, %ebx
jne end
...
end:
Edit: Beispiel:
kompiliert mit gcc -S foo.c
Inhalt foo.S:
Code: Alles auswählen
...
cmpl $1, 12(%esp) <--------- x == 1
jne L3
cmpl $2, 8(%esp) <--------- y == 2
jne L3
movl 8(%esp), %eax <------------ x = y
movl %eax, 12(%esp) <------------ " " "
L3:
leave
Re: Assembler: Vergleiche & Sprünge
Verfasst: Mo Jul 07, 2014 6:42 pm
von Architekt
Dann ist für mein Vorhaben also and, or und xor völlig uninteressant?
Re: Assembler: Vergleiche & Sprünge
Verfasst: Mo Jul 07, 2014 7:06 pm
von oenone
Architekt hat geschrieben:Dann ist für mein Vorhaben also and, or und xor völlig uninteressant?
And, Or und Xor sind für Assembler eher als Bit-Verknüpfungen und nicht als logische Verknüpfungen geeignet.