inhaltsverzeichnis · ia32 stack ia32 stack “popping” “popping” popl dest liest den...
TRANSCRIPT
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikVorle
sung:Rech
nerstru
ktu
ren,Teil
2(M
odulIP
7)
Vorle
sung:Rechnerstrukturen,
Teil
2(M
odulIP
7)
J.Zhang
zhan
g@in
formatik.u
ni-h
amburg.d
e
Unive
rsitat
Ham
burg
Fach
bereich
Inform
atik
AB
Tech
nisch
eA
spekte
Multim
odaler
System
e
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikVorle
sung:Rech
nerstru
ktu
ren,Teil
2(M
odulIP
7)
Inhaltsv
erze
ichnis
5.Assem
bler-P
rogramm
ierung
..
..
..
..
..
..
..
..
..
..148
IA32
Stack
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.149
Prozed
ur
der
Ablau
fsteueru
ng
..
..
..
..
..
..
..
..
..
..
.152
Gru
ndlegen
de
Daten
typen
..
..
..
..
..
..
..
..
..
..
..172
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
IA32
Kelle
rspeich
er
●Speich
erregion,die
mit
Stack-
operation
enverw
altetw
ird
●W
achst
inRich
tung
nied
erigererAdressen
●Register
%esp
gibt
die
aktuelle
Stack-A
dresse
an
✦Adresse
des
obersten
Elem
ents
Seite
148
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
IA32
Sta
ck
IA32
Sta
ck
“Push
ing”
●push
lSrc
●H
oltden
Operan
den
bei
Src
●D
ekremen
t%
espbei
4
●Speich
ertden
Operan
den
bei
der
von%
espvorgegeb
enen
Adresse
Seite
149
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
IA32
Sta
ck
IA32
Sta
ck“Poppin
g”
“Pop
pin
g”
●pop
lD
est
●Liest
den
Operan
den
bei
der
von%
espvorgegeb
enen
Adresse
●In
kremen
t%
espbei
4
●Sch
reibt
nach
Des
t
Seite
150
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
IA32
Sta
ck
Beisp
iele
fur
Sta
ck-O
pera
tion
Seite
151
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Pro
zedur
der
Abla
ufste
ueru
ng
Prozed
ur-A
ufru
f(“C
all”)
●B
enutzt
den
Stack
zur
Unterstu
tzung
von“C
all”und
“Retu
rn”
calllab
el“P
ush
”“R
eturn
”A
dresse
inStack,
“Jum
p”
tolab
el
Wert
der
“Retu
rn”
Adresse
●A
dresse
der
Anweisu
ng
uber
den
“call”hin
aus
●D
isassembler
Beisp
iel:804854e:
e83d
0600
00call
8048b90
<m
ain
>
8048553:50
push
l%
eax
●Zuru
ckkomm
ende
(“Retu
rn”)
Adresse
=0x8048553
Prozed
ur
“Retu
rn”:
●ret
Pop
-Adresse
vomStack;
“Jum
p”
zur
Adresse
Seite
152
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Beisp
ielPro
zedura
ufru
f
Seite
153
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Beisp
ielPro
zedur
“Retu
rn”
Seite
154
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Sta
ck-b
asie
rende
Spra
chen
Sprach
en,die
Reku
rsionunterstu
tzen
●z.B
.,C,Pascal,
Java
●Code
muss
“Reen
trant”
sein
✦M
ultip
lesim
ultan
eIn
stantiieru
ngen
einer
einzeln
enProzed
ur
●Brau
cht
einen
Ort
um
den
Zustan
djed
erIn
stantiieru
ng
zusp
eichern
✦Argu
men
te
✦Lokale
Variab
le
✦Ruckspru
ngad
resse
Seite
155
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Sta
ck-b
asie
rende
Spra
chen
Stack-D
isziplin
●Zustan
dein
ergegeb
ene
Prozed
ur,
die
einen
besch
rankten
Zeitrau
mben
otigtw
ird
✦von
“when
called”
zu“w
hen
return
”
●D
er“C
allee”kom
mt
vordem
“Caller”
zuru
ck
Stack
“Fram
es”
●Zustan
dfu
rein
eein
zelne
Prozed
ur-In
stantiieru
ng
Seite
156
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Sta
ck“Fra
mes”
Inhalt
●Lokale
Variab
len
●“R
eturn
”Adresse
●Tem
porare
Daten
Verw
altung
●D
erSpeich
erbereich
,der
bei
“Enter”
Prozed
ur
zugeteilt
wird
✦“S
et-up”
Code
●Freigegeb
enbei
“Retu
rn”
✦“F
inish
”Code
Adressen
verweise
(“Poin
ter”)
●Stack
Adressen
verweis
%esp
gibt
das
obere
Ende
des
Stacks
an
●“F
rame”
Adressen
verweis
%eb
pgib
tden
Anfan
gdes
aktuellen
“Fram
e”an
Seite
157
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
IA32/Lin
ux
Sta
ck“Fra
me”
Aktu
ellerStack
“Fram
e”(V
onob
en(T
op)
nach
unten
(Bottom
))
●Param
eterfu
rein
eweitere
Funktion
,die
gleichau
fgerufen
wird
(“call”)
✦Anstieg
der
Argu
men
te
●Lokale
Variab
len
✦wen
nsie
nich
tin
Registern
beh
altenwerd
enkon
nen
●G
espeich
erterRegister
Kon
text
●Alter
“Fram
e”Adressen
verweis
Seite
158
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
IA32/Lin
ux
Sta
ck“Fra
me”
“Caller”
Stack
“Fram
e”
●“R
eturn
”Adresse
✦w
irdvon
“Call”-A
nweisu
ng
“gepush
t”
●Argu
men
tefu
rdiesen
“Call”
Seite
159
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Registe
rSpeich
eru
ngs-K
onventio
nen
Wen
nw
ho
vonProzed
uryoo
aufgeru
fenw
ird
●ist
yoo
der
“Caller”,
who
der
“Callee”
Kan
ndas
Register
fur
vorubergeh
ende
Speich
erung
ben
utzt
werd
en?
●D
erIn
halt
des
Registers
%ed
xw
irdvon
who
ubersch
rieben
Seite
160
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Registe
rSpeich
eru
ngs-K
onventio
nen
Wen
nw
ho
vonProzed
uryoo
aufgeru
fenw
ird
●ist
yoo
der
“Caller”,
who
istder
“Callee”
Kan
ndas
Register
fur
vorubergeh
ende
Speich
erung
ben
utzt
werd
en?
Kon
vention
en
●“C
aller”sp
eichert
(“Caller
Save”)
✦D
er“C
aller”sp
eichert
vordem
“Callin
g”voru
bergeh
end
insein
emFram
e
●“C
allee”sp
eichert
(“Callee
Save”)
✦D
er“C
allee”sp
eichert
vorVerw
endung
vorubergeh
end
insein
emFram
e
Seite
161
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
IA32/Lin
ux
Registe
rVerw
endung
Gan
zzahlige
Register
●Zwei
werd
ensp
eziellverw
endet
%eb
p,%
esp
●D
reiwerd
enals
“Callee
save”verw
altet%
ebx,%
esi,%
edi
✦Alte
Werte
werd
envor
Verw
endung
auf
dem
Stack
gesichert
●D
reiwerd
enals
“Caller-save”
verwaltet
%eax,
%ed
x,%
ecx
✦Tu
was
Du
willst,
aber
erwarte,
dass
jeder
“Callee”
eben
sohan
delt
●Register
%eax
speich
ertau
chden
zuru
ck-gelieferten
Wert
Seite
162
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Rekursiv
eFakulta
t●
%eax
gebrauch
toh
ne
vorheriges
Speich
ern
●%
ebxgebrau
cht,
aber
amA
nfan
ggesp
eichert
und
amEnde
zuru
ckgeschrieb
en
Seite
163
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Rfa
ctSta
ck-A
ufb
au
Seite
164
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Rfa
ctSta
ck-K
orp
er
Seite
165
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Rfa
ctRekursio
n
Seite
166
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Rfa
ctErg
ebnis
Seite
167
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Rfa
ctD
urch
fuhru
ng
Seite
168
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Adre
ssenverw
eis
●Adressen
verweis
ubergeb
en,um
Wert
einer
Variab
lenzu
rucksch
reiben
zukon
nen
Seite
169
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Adre
ssenverw
eis
schaffen
und
initia
lisiere
nB
enutzen
des
Stacks
fur
Lokale
Variab
le
●Variab
levalm
uss
aufdem
Stack
gespeich
ertwerd
en
✦Ein
Adressen
verweis
dorth
inm
uss
geschaff
enwerd
en
●Com
puter
Adressen
verweis
als-4(%
ebp)
●In
den
Stack
“push
en”
alszw
eitesA
rgum
ent
Seite
170
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Pro
zedur
der
Abla
ufsteu
erung
Zusa
mm
enfa
ssung
Der
Stack
ermoglich
tdie
Reku
rsion
●Private
Speich
erung
fur
jeden
Prozed
ur-“C
all”
✦In
stantiieru
ngen
komm
ensich
nich
tin
sG
ehege
✦Adressieru
ng
vonlokalen
Variab
lenund
Argu
men
tenkan
nrelativ
zuden
Position
endes
Stacks
sein
●K
ann
vonStack-D
isziplin
verwaltet
werd
en
✦Prozed
uren
komm
enin
um
gekehrter
Reih
enfolge
der
“Calls”
zuru
ck
IA32
Prozed
uren
sind
Kom
bin
ationvon
Anweisu
ngen
+K
onven
tionen
●“C
all”/
“Retu
rn”
Anweisu
ngen
●Register
Verw
endungs-K
onven
tionen
✦“C
aller/Callee
save”
✦%
ebp
und
%esp
●O
rganisation
s-Kon
vention
endes
Stack
“Fram
es”
Seite
171
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Gru
ndle
gende
Date
nty
pen
Gan
zzahl(In
teger)
●W
irdin
allgemein
enRegistern
gespeich
ertund
angew
andt
●“M
itVorzeich
en”
vs.“oh
ne
Vorzeich
en”:
abhan
gigvon
den
verwen
deten
Anweisu
ngen
Intel
GA
SB
ytesC
byteb
1[u
nsign
ed]ch
arword
w2
[unsign
ed]sh
ortdou
ble
word
l4
[unsign
ed]in
t
Gleitkom
ma
(Floatin
gPoin
t)
●W
irdin
Gleitkom
ma-
Registern
gespeich
ertund
angew
andt
Intel
GA
SB
ytesC
Sin
gles
4float
Dou
ble
l8
dou
ble
Exten
ded
t10/12
long
dou
ble
Seite
172
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
“A
rray”
Zuord
nung
Gru
ndlegen
des
Prin
zipT
A[L
];
●“A
rray”m
itD
atendes
Typ
sT
und
der
Lan
geL
●Fortlau
fend
zugeteilte
Region
vonL∗siz
eof(T
)Bytes
Seite
173
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
“A
rray”
Zugang
Gru
ndlegen
des
Prin
zipT
A[L
];
●“A
rray”m
itD
atendes
Typ
sT
und
der
Lan
geL
●Bezeich
ner
Akan
nals
Adressen
verweis
verwen
det
werd
en,um
Elem
ent
0an
zuord
nen
(“toarray”)
Seite
174
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
“A
rray”B
eisp
iel
Seite
175
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Zugriff
auf“A
rray”
Referen
zierung
●D
erCode
fuhrt
keine
Bereich
suberpru
fung
(“bou
nds
checkin
g”)durch
●Verh
altenau
ßerhalb
des
Indexb
ereichs
istIm
plem
entieru
ngsab
han
gig
✦K
eine
garantierte
relativeZuteilu
ng
verschied
ener
“Arrays”
Um
setzung
durch
GCC
●Elim
inert
“Loop
”-Variab
lei
●K
onvertiert
“Array”-C
ode
zuAdressen
verweis-C
ode
●W
irdin
“do-w
hile”
Form
ausged
ruckt
✦Test
bei
Ein
trittunnotig
Seite
176
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Stru
ktu
ren
Kon
zept
●Fortlau
fend
zugeteilte
Speich
erregion
●Bezieh
tsich
mit
Nam
enau
fTeile
inder
Stru
ktur
●Teile
konnen
verschied
enen
Typ
ssein
Seite
177
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Generie
ren
ein
es
Adre
ssenve
rweise
saufein
Stru
ktu
rteil
Gen
erierenein
esAdressen
verweises
aufein
“Array”-E
lemen
t
●“O
ffset”
jedes
Stru
kturteils
wird
zum
Com
pilerzeitp
unkt
festgelegt
Seite
178
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Stru
ktu
rrefe
renzie
rung
Seite
179
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Zusa
mm
enfa
ssung
“Arrays”
inC
●Fortlau
fend
zugeteilter
Speich
er
●A
dressverw
eisau
fdas
ersteElem
ent
●K
eine
Bereich
suberpru
fung
(“Bou
nds
Checkin
g”)
Com
piler
Optim
ierungen
●Com
piler
wan
delt
Array
Code
oftin
Adressverw
eise(“p
ointer
code”)
um
●Verw
endet
Adressieru
ngsm
odium
“Array”-In
dizes
zuskalieren
●V
ieleTricks,
um
die
“Array”-In
dizieru
ng
inSch
leifenzu
verbessern
Stru
kturen
●B
yteswerd
enin
der
ausgew
iesenen
Reih
enfolge
zugeteilt
●In
der
Mitte
und
amEnde
polstern
,um
die
richtige
Ausrich
tung
zuerreich
en
Seite
180
Arb
eitsb
ere
ichTA
MS
Fach
bereich
Inform
atikK
apite
l:Assem
bler-P
rogra
mm
ierung
Absch
nitt:
Gru
ndleg
ende
Daten
typen
Erg
anze
nde
Lite
ratu
rZur
Rech
nerarch
itektur
(Teil
2,4.
Term
in):
Lite
ratu
r
[1]Ran
dal
E.Bryan
tan
dD
avidO
’Hallaron
.Com
puter
systems.
pages
1000–2000.Pearson
Education
,In
c.,N
ewJersey,
2003.
Seite
181