Assembler: Verständnis von Rechenoperationen

Pascal, Basic und andere nicht aufgelistete
Antworten
Benutzeravatar
Architekt
Beiträge: 172
Registriert: Sa Mai 24, 2014 12:04 pm

Assembler: Verständnis von Rechenoperationen

Beitrag von Architekt » Mo Jun 16, 2014 2:59 pm

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?

Benutzeravatar
Architekt
Beiträge: 172
Registriert: Sa Mai 24, 2014 12:04 pm

Re: Assembler: Verständnis von Rechenoperationen

Beitrag von Architekt » Mo Jun 16, 2014 4:21 pm

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! ;)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Assembler: Verständnis von Rechenoperationen

Beitrag von Xin » Mo Jun 16, 2014 5:41 pm

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. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Architekt
Beiträge: 172
Registriert: Sa Mai 24, 2014 12:04 pm

Re: Assembler: Verständnis von Rechenoperationen

Beitrag von Architekt » Mo Jun 16, 2014 6:37 pm

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.

Antworten