Seite 1 von 1

Assembler: Verständnis von Rechenoperationen

Verfasst: Mo Jun 16, 2014 2:59 pm
von Architekt
Hallo,
Mein letzter Thread artet langsam aus und weicht nun schon stark vom Thema ab.
Deswegen hier mein neuer wo ich mal lieber klein anfange, statt zuviel auf einmal zu versuchen.

Nehmen wir mal diesen funktionierenden Assembler Code:

Code: Alles auswählen

movl	4(%esp), %eax # b
push	%eax
movl	0(%esp), %eax # a
imull	4(%esp), %eax
addl	$4, %esp
movl	%eax, 12(%esp) # c
Soweit ich weiß, berechnet imull folgendermaßen:

Code: Alles auswählen

push A
imull C, B
Also:

Code: Alles auswählen

C = A * B
Warum aber muss ich, für eine korrekte Ausgabe, als Ziel 4(%esp) angeben, und nicht etwa direkt 12(%esp) und mir damit den move sparen?

Re: Assembler: Verständnis von Rechenoperationen

Verfasst: Mo Jun 16, 2014 4:21 pm
von Architekt
Hat sich erledigt. Ich hab es nun endlich. Nun macht mir nur noch der div Operator zu schaffen. :)

edit:
Auch geschafft. Kann geclosed werden.

Danke an dani93 für die vielseitige Hilfe! ;)

Re: Assembler: Verständnis von Rechenoperationen

Verfasst: Mo Jun 16, 2014 5:41 pm
von Xin
Im Idealfall schreibst Du auch die Antwort auf Deine Frage in Deinen Thread.
Es gibt nichts ärgerliches als Leute, die das gleiche Problem wie man selbst haben, in einem Forum fragen und dann "Hat sich erledigt" schreiben. Für diejenigen, die diese Frage auch googlen hat es ja noch nicht erledigt. ^^

Re: Assembler: Verständnis von Rechenoperationen

Verfasst: Mo Jun 16, 2014 6:37 pm
von Architekt
Mein Problem war das Verständnis von Ziel und Quelle. ich dachte (aus welchem Grund auch immer) bei imull wäre der erste Operant das Ziel, es ist jedoch (konsistenter Weise) umgekehrt:

Code: Alles auswählen

imull Quelle, Ziel
Genau wie bei addl, movl etc. auch.