Not logged in. · Lost password · Register

Bibi
Avatar
Member since Feb 2003
277 posts
Subject: Frage zum pre-(post)increment decrement
Ich verstehe hier nicht so ganz was der Sinn des ganzen ist...
Also wenn ich das richtig verstanden habe setze ich z.B.mein Register nach dem ich eine Variable in das Register geschrieben habe von einem long runter zu einem byte ..aber was soll das?dadurch geht mir doch was verloren oder täusche ich mich.... :anx:

in dem mir vorliegen Beispiel:
struct rec{long int x;short int y;char c};
struct rec a; /*hat die Adresse 1232
struct rec b; /* hat die Adresse 344

a=b;

movl $1232,%eax
movl $344,%ebx
movl (%ebx)+,(%eax)+
movw(%ebx)+,(%eax)+
movb(%ebx)+,(%eax)+
Ford Prefect
Pangalaktischer- Donnergurgler-Trinker
(Administrator)
Avatar
Member since Oct 2002
3258 posts
Hallo,


du willst die gesamte Struktur kopieren.
Als erstes kopierst du den long. Dabei setzt du das Register eax auf die Adresse von a, und ebx auf die von b.

Nun, beim Kopieren des Wertes mittels indirekter Adressierung, erhöhst du dabei mittels Postincrement beide Registerwerte.

Somit zeigen sie nun auf a + sizeof(long), resp. b + sizeof(long).
Dort stehen die jew. short y.

Dieser wird analog kopiert. movw = move word

Am ende wird noch der char mit movb = move byte kopiert. Das letzte Postincrement koennte man sich theoretisch sparen.
Es macht nur sinn, wenn man weitere Werte, die hinter c stehen, kopieren will.


cu
Ford Prefect
Quote: <mute> mit Miranda macht irc kein spass :P <Loki|muh> dann geh doch wieder :)
<mute> ich benutze kein miranda <Loki|muh> na und? :)
Bibi
Avatar
Member since Feb 2003
277 posts
klingt einleuchtend danke  :-D

allerdings hätte ich jetzt noch ne Frage zum lea befehl.

Der lea Befehl wird soweit ich weiß benutzt wenn man wenn es für einen Befehl keine Adressierungsart gibt.
Mir ist allerdings noch nicht so ganz klar wie dieser lea Befehl funktioniert also aufgebaut ist....

Nun habe ich folgende Aufgabe vor mir liegen:

lea 34,%eax
lea 12(%eax),%ebx
lea (%eax,%ebx,4)%ecx
lea 4(%eax,%ebx,2),%ecx

Frage lautet : warum wird der lea Befehl verwendet,anstatt diese Funktion direkt mit Arithmetikbefehlen zu berechnen? :anx: keine Ahnung  :rolleyes:
cody
Dipl.-Gamerx
Avatar
Member since Sep 2003
1140 posts
Wahrscheinlich ist lea schneller.
Ansonsten bräuchtest du mehrere add und mul Befehle.
cody@komputer:~$ LOAD "*",8,1
-bash: LOAD: command not found
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen