Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh...

31
logo Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten– 1/31– 2008-04-01

Transcript of Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh...

Page 1: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Assembler - Adressierungsarten

Dr.-Ing. Volkmar Sieh

Department Informatik 3: RechnerarchitekturFriedrich-Alexander-Universität Erlangen-Nürnberg

SS 2008

Assembler - Adressierungsarten– 1/31– 2008-04-01

Page 2: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – EinführungBeispiel (C, C++, Java):i n t a , ∗b , c [ 1 0 ] ;s t ruc t { char y ; i n t x ; i n t ∗p } d , ∗e , f [ 5 ] ;

. . . = 13 ;

. . . = a ;

. . . = ∗b ;

. . . = c [ i ] ;

. . . = d . x ;

. . . = e−>x ;

. . . = f [ i ] . x ;

a = . . . ;∗b = . . . ;c [ i ] = . . . ;d . x = . . . ;e−>x = . . . ;f [ i ] . x = . . . ;

... und Kombinationen davon:c [ f [ e−>x ] . y ] = . . . ;∗ f [∗ b ] . p = . . . ;

Assembler - Adressierungsarten– 2/31– 2008-04-01

Page 3: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – effektive Adresse

Bei vielen Adressierungsarten wird eine sogenannte „effektiveAdresse” dynamisch zur Laufzeit berechnet.

Gründe (Beispiele):

Basisadresse einer Datenstruktur fest, Index variabel (z.B.beim Array-Zugriff)Basisadresse einer Datenstruktur variabel, Displacementbekannt (z.B. beim Zugriff über Pointer auf Records)

Assembler - Adressierungsarten– 3/31– 2008-04-01

Page 4: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – effektive Adresse

Beispiel: Zugriff auf Array-Elemente:

short i n t i ; // Adre s s e 8short i n t f [ 5 ] ; // Adre s s e 14

f [ i ] = 300 ;

Adresse von i bekannt (8)Adresse von f bekannt (14)Größe der Elemente von f bekannt (2)

Adresse(f [i ]) = Adresse(f ) + i ∗ 2

Assembler - Adressierungsarten– 4/31– 2008-04-01

Page 5: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – effektive Adresse

Beispiel: Zugriff auf Record-Elemente über Pointer:

s t ruc t r e c {short i n t x ; long i n t i ;short i n t y ; short i n t z ;

} ;s t ruc t r e c ∗p ; // Adre s s e 8s t ruc t r e c s ; // Adre s s e 14

p−>y = 9 ;

Adresse von p bekannt (8)Displacement von s.y bezüglich sbekannt (6)

Adresse(p− > y) = p + 6

Assembler - Adressierungsarten– 5/31– 2008-04-01

Page 6: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten

Bei der Ausführung von Befehlen mit Parametern (z.B. Additionzweier Werte) sind folgende Punkte sind zu unterscheiden:

wo stehen die eigentlichen Parameter (im Befehl, im Registeroder im Speicher)wo stehen die Informationen, wie man an die Parameterkommt (i.a. sind diese Informationen Teil des Befehls)wie berechnet sich die effektive Adresse (wenn die Parameterim Speicher stehen)

Assembler - Adressierungsarten– 6/31– 2008-04-01

Page 7: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Überblick

RegisterImmediate OperandDirect (Absolute) AddressRegister IndirectRegister Indirect with IndexRegister Indirect with Displacement / PC-relativeRegister Indirect with Index and DisplacementMemory IndirectRegister Indirect with Pre-/Post-DecrementRegister Indirect with Pre-/Post-Increment...

Assembler - Adressierungsarten– 7/31– 2008-04-01

Page 8: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register

Register-Name bzw. -Nummer ist Bestandteil des BefehlsOperand liegt im Register

Syntax-Beispiele (i80x86):movl %eax , . . .movb . . . , %a l

Verwendung: Schreiben bzw. Lesen von in Registern gespeichertenVariablenr e g i s t e r short i n t r ; /∗ r l i e g t im R e g i s t e r %ax ∗/r e g i s t e r short i n t s ; /∗ s l i e g t im R e g i s t e r %bx ∗/r = s ;

ergibt compiliert:movw %bx , %ax

Assembler - Adressierungsarten– 8/31– 2008-04-01

Page 9: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Immediate Operand

Operand ist Bestandteil des Befehls

Syntax-Beispiele (i80x86):

movl $14 , . . .movl $0x14 , . . .movb $ ’ a ’ , . . .

Verwendung: Zuweisung von Konstanten an Variablen

r e g i s t e r long i n t x ; /∗ x l i e g t im R e g i s t e r %edx ∗/x = 14 ;

ergibt compiliert:

movl $14 , %edx

Assembler - Adressierungsarten– 9/31– 2008-04-01

Page 10: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Immediate Operand

Anmerkung:

Viele Prozessoren (besonders RISC-CPUs) verwenden zurKodierung der Befehle jeweils gleichlange Byte-Folgen (z.B.m88100: jeder Befehl ist genau 4 Bytes lang).

Aber: unmöglich, z.B. einen movl 0x12345678, %eax-Befehl(allein Konstante ist 4 Byte lang) in 4 Bytes zu kodieren.

Abhilfe: Aufteilen des Befehls in zwei Teil-Befehle:statt einem Befehl zwei Befehle

movl $0x12345678 , %eax s e t h i $0x1234 , %eaxs e t l o $0x5678 , %eax

Assembler - Adressierungsarten– 10/31– 2008-04-01

Page 11: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Direct (Absolute) Address

effektive Adresse ist Bestandteil des BefehlsOperand liegt im Speicher

Syntax-Beispiele (i80x86):movl 1236 , . . .movb . . . , 4345

Hinweis: Statt der Adressen werden häufig lieber symbolischeWerte geschrieben. Z.B.:movl varx , . . .movb . . . , f l a g

Die symbolischen Werte müssen jedoch auf irgendeine Weisedefiniert werden (z.B. durch define- oder equ-Anweisungen).Definition im Folgenden aus Platzgründen häufig weggelassen.

Assembler - Adressierungsarten– 11/31– 2008-04-01

Page 12: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Direct (Absolute) AddressVerwendung: Schreiben bzw. Lesen von im Speicher abgelegtenVariablenchar c ; /∗ c hat Adre s s e 1245 ∗/char d ; /∗ d hat Adre s s e 1246 ∗/c = ’A ’ ; d = c ;

ergibt compiliert:movb $65 , 1245movb 1245 , 1246

oder (lesbarer)#d e f i n e c 1245#d e f i n e d 1246

movb $ ’A ’ , cmovb c , d

Assembler - Adressierungsarten– 12/31– 2008-04-01

Page 13: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect

Register-Name/-Nummer ist Bestandteil des BefehlsRegister enthält effektive AdresseOperand liegt im Speicher

Syntax-Beispiele (i80x86):

movl (%ebx ) , . . .movb . . . , (%ebp )

Assembler - Adressierungsarten– 13/31– 2008-04-01

Page 14: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect

Verwendung: z.B. Schreiben bzw. Lesen von Variablen überPointer, die in Registern liegen.

r e g i s t e r short i n t ∗p ; /∗ p l i e g t im R e g i s t e r %edx ∗/short i n t x ; /∗ x hat d i e Adre s s e 1456 ∗/

p = &x ;∗p = 14 ;x = ∗p ;

ergibt compiliert:

movl $1456 , %edxmovw $14 , (%edx )movw (%edx ) , 1456

Assembler - Adressierungsarten– 14/31– 2008-04-01

Page 15: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Index

Register-Namen/-Nummern sowie Scale-Faktor sindBestandteile des BefehlsRegister A enthält Anfangsadresse des Objektes(„Startadresse”, „Basisadresse”)Register B enthält Indexeffektive Adresse berechnet sich alsAdresse = Basisadresse + Index ∗ ScaleFaktorOperand liegt im Speicher

Syntax-Beispiele (i80x86):

movl (%ebx , %ecx , 4 ) , . . .movb . . . , (%ebp , %edi , 8)

Assembler - Adressierungsarten– 15/31– 2008-04-01

Page 16: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Index

Verwendung: Schreiben bzw. Lesen von Array-Elementen

short i n t f [ 1 0 0 ] ; /∗ f hat d i e Adre s s e 1246 ∗/r e g i s t e r short i n t ∗p ; /∗ p l i e g t im R e g i s t e r %ebx ∗/r e g i s t e r short i n t i ; /∗ i l i e g t im R e g i s t e r %ecx ∗/

p = &f [ 0 ] ;p [ i ] = 50 ;f [ 1 ] = p [ i ] ;

ergibt compiliert:

movl $1246 , %ebxmovw $50 , (%ebx , %ecx , 2)movw (%ebx , %ecx , 2 ) , 1248

Assembler - Adressierungsarten– 16/31– 2008-04-01

Page 17: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Displacement

Register-Name/-Nummer sowie Displacement sindBestandteile des BefehlsRegister enthält Basisadresseeffektive Adresse berechnet sich alsAdresse = Basisadresse + DisplacementOperand liegt im Speicher

Syntax-Beispiele (i80x86):

movl 4(%ebp ) , . . .movb . . . , 17(% e s i )

Assembler - Adressierungsarten– 17/31– 2008-04-01

Page 18: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Displacement

Bemerkungen:

wird für das Register der Instruction-Pointer/Program-Counterverwendet, spricht man auch von „PC-relativer”-Adressierungstatt der Bezeichnung Displacement wird auch häufig dieBezeichnung „Offset” verwendet

Assembler - Adressierungsarten– 18/31– 2008-04-01

Page 19: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Displacement

Verwendung: Schreiben bzw. Lesen von Record-Elementen überPointer

s t ruc t r e c { long i n t x ; char c ; short i n t s ; } ;s t ruc t r e c r ; /∗ r hat d i e Adre s s e 3456 ∗/r e g i s t e r s t ruc t r e c ∗p ; /∗ p l i e g t im R e g i s t e r %eax ∗/

p = &r ;p−>c = ’A ’ ;r . s = p−>s ;

ergibt compiliert:

movl $3456 , %eaxmovb $ ’A ’ , 4(%eax )movw 6(%eax ) , 3462 /∗ =3456+6 ; mit Al ignment ∗/

Assembler - Adressierungsarten– 19/31– 2008-04-01

Page 20: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Index andDisplacement

Register-Name/-Nummer, Scale-Faktor sowie Displacementsind Bestandteile des BefehlsRegister A enthält BasisadresseRegister B enthält Indexeffektive Adresse berechnet sich alsAdresse = Basisadresse + Index ∗ ScaleFaktor + DisplacementOperand liegt im Speicher

Syntax-Beispiele (i80x86):

movw 4(%ebp , %eax , 8 ) , . . .movl . . . , 16(%edx , %ebx , 4)

Assembler - Adressierungsarten– 20/31– 2008-04-01

Page 21: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect with Index andDisplacement

Verwendung: Schreiben bzw. Lesen von Record-Elementen einesArrayss t ruc t r e c { long i n t x ; char c ; short i n t s ; } ;s t ruc t r e c f [ 1 0 0 ] ; /∗ f hat d i e Adre s s e 452 ∗/r e g i s t e r s t ruc t r e c ∗p ; /∗ p l i e g t im R e g i s t e r %ecx ∗/r e g i s t e r long i n t i ; /∗ i l i e g t im R e g i s t e r %eax ∗/

p = &f [ 0 ] ;p [ i ] . c = ’A ’ ;f [ 2 ] . s = p [ i ] . s ;

ergibt compiliert:movl $452 , %ecxmovb $ ’A ’ , 4(%ecx , %eax , 8)movw 6(%ecx , %eax , 8 ) , 474 /∗ =452+2∗8+6 ; mit Al ignment ∗/

Assembler - Adressierungsarten– 21/31– 2008-04-01

Page 22: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Memory Indirect

Speicheradresse ist Bestandteil des Befehlseffektive Adresse ist der Inhalt der angegebenen SpeicherzelleOperand liegt im Speicher

Syntax-Beispiele:

movl ( 24 ) , . . .movb . . . , (465)

Assembler - Adressierungsarten– 22/31– 2008-04-01

Page 23: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Memory Indirect

Verwendung: Schreiben bzw. Lesen von Variablen über Pointer, dieim Speicher liegen

short i n t x ; /∗ x hat d i e Adre s s e 340 ∗/short i n t ∗p ; /∗ p hat d i e Adre s s e 342 ∗/

p = &x ;∗p = 45 ;x = ∗p ;

ergibt compiliert:

movl $340 , 342movw 45 , (342)movw (342) , 340

Assembler - Adressierungsarten– 23/31– 2008-04-01

Page 24: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect withPre-/Post-Increment/Decrement

Register-Name/Nummer sowie die Größe des Operanden sindBestandteile des BefehlsRegister enthält effektive AdresseOperand liegt im Speichervor/nach dem Zugriff auf den Operanden wird Registerinhaltinkrementiert/dekrementiert (um die Größe des Operanden)

Syntax-Beispiele (i80x86):

movw −(%esp ) , . . .movb +(%eax ) , . . .movl . . . , (%ebp)+movw . . . , (%ecx)−

Assembler - Adressierungsarten– 24/31– 2008-04-01

Page 25: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Register Indirect withPre-/Post-Increment/Decrement

Verwendung: Push und Pop von Werten auf dem Stack (später)

s t ruc t r e c { long i n t x ; short i n t y ; char c ; } ;s t ruc t r e c a ; /∗ a hat d i e Adre s s e 1232 ∗/s t ruc t r e c b ; /∗ b hat d i e Adre s s e 344 ∗/

a = b ;

ergibt compiliert:

movl $1232 , %eaxmovl $344 , %ebxmovl (%ebx )+ , (%eax)+movw (%ebx )+ , (%eax)+movb (%ebx )+ , (%eax)+

Assembler - Adressierungsarten– 25/31– 2008-04-01

Page 26: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – m68x05tax /∗ Reg. −> Reg. ∗/txal d a #12 /∗ Immediate Operand −> Reg. ∗/l d x #34l d a 1234 /∗ D i r e c t Address −> Reg. ∗/l d x 5678s t a 1234 /∗ Reg. −> D i r e c t Address ∗/s t x 5678l d a , x /∗ Reg. I n d i r e c t −> Reg. ∗/l d x , xs t a , x /∗ Reg. −> Reg. I n d i r e c t ∗/s t x , xl d a 12 , x /∗ Reg. I n d i r e c t w i th D i sp l acement −> Reg. ∗/l d x 34 , xs t a 56 , x /∗ Reg. −> Reg. I n d i r e c t w i th D i sp lacement ∗/s t x 78 , x

Assembler - Adressierungsarten– 26/31– 2008-04-01

Page 27: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Hinweise

nicht alle CPUs können alle Adressierungsarten (insbesondereviele Einschränkungen bei RISC-CPUs und kleinenMikro-Controllern)nicht alle Adressierungsarten sind mit allen Registern möglich(z.B. ist der Instruction Pointer nicht als Basis- oderIndex-Register erlaubt)nicht alle Kombinationen von Adressierungsarten (Ziel undQuelle) sind möglich (z.B. erlauben viele CPUs movl 1232,432 nicht)es existieren i.a. Einschränkungen für die möglichen Wertebzw. die Größe von Scale-Faktor und Displacement (z.B. kannder Scale-Faktor nur 1, 2, 4 oder 8 betragen; Displacementhäufig < 256)

Assembler - Adressierungsarten– 27/31– 2008-04-01

Page 28: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Hinweise

Zum Teil werden Befehle und Adressierungsarten (z.B. aushistorischen Gründen) anders geschrieben. Beispiele (i80x86):

statt wird verwendetmovl %eax , −(%esp )movl (%esp )+ , %eax

movl %e f l a g s , −(%esp )movl (%esp )+ , %e f l a g s

movl $1234 , %e i p

movl (%esp )+ , %e i p

pu sh l %eaxpop l %eax

p u s h f lp o p f l

jmp 1234

re t

Assembler - Adressierungsarten– 28/31– 2008-04-01

Page 29: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – lea-Befehl

Nicht alle Programmier-Konstrukte zum Zugriff auf Variableninnerhalb von (verschachtelten) Arrays und Records sind direktumsetzbar. Z.B.:

char f [ 1 0 ] [ 1 0 ] ;i n t i , j ;

f [ i ] [ j ] = . . . ;

Adresse(f [i ][j]) wäre im Beispiel Adresse(f ) + i ∗ 10 + j . Dafürexistiert keine Adressierungsart (bei den meisten Prozessoren).

In diesen Fällen muss die Adresse explizit berechnet werden

lea-Befehlexplizite Arithmetik (später)

Assembler - Adressierungsarten– 29/31– 2008-04-01

Page 30: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – lea-Befehls t ruc t r e c { short i n t v a l u e ; char name [ 6 ] ; } ;s t ruc t r e c r ; /∗ r hat d i e Adre s s e 432 ∗/r e g i s t e r s t ruc t r e c ∗p ; /∗ p l i e g t im R e g i s t e r %eax ∗/r e g i s t e r long i n t i ; /∗ i l i e g t im R e g i s t e r %ebx ∗/

p = &r ; p−>name [ i ] = ’A ’ ;

ist equivalent zur e g i s t e r char ∗n ; /∗ n l i e g t im R e g i s t e r %ecx ∗/

p = &r ; n = &p−>name [ 0 ] ; n [ i ] = ’A ’ ;

ergibt compiliertmovl $432 , %eaxlea 2(%eax ) , %ecxmovb $ ’A ’ , (%ecx , %ebx , 1) ;

Assembler - Adressierungsarten– 30/31– 2008-04-01

Page 31: Assembler - Ad · PDF filelogo Assembler-Adressierungsarten Dr.-Ing.VolkmarSieh DepartmentInformatik3:Rechnerarchitektur Friedrich-Alexander-UniversitätErlangen

logo

Adressierungsarten – Hinweise

Ersatz für fehlende Adressierungsarten:

movl 12345678 , %eax

movl (12345678) , %eax

movl 8(%eax ,%ebx ,1) ,% eax

movl $12345678 , %eaxmovl (%eax ) , %eax

movl $12345678 , %eaxmovl (%eax ) , %eaxmovl (%eax ) , %eax

l e a l 8(%eax ) , %eaxmovl (%eax ,%ebx ,1) ,% eax

Weitere Adressierungsarten können über Arithmetik-Befehlenachgebildet werden.

Assembler - Adressierungsarten– 31/31– 2008-04-01