inhaltsverzeichnis · ia32 stack ia32 stack “popping” “popping” popl dest liest den...

18
Arbeitsbereich TAMS Fachbereich Informatik Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang [email protected] Universit ¨ at Hamburg Fachbereich Informatik AB Technische Aspekte Multimodaler Systeme Arbeitsbereich TAMS Fachbereich Informatik Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Inhaltsverzeichnis 5. Assembler-Programmierung .................... 148 IA32 Stack .............................149 Prozedur der Ablaufsteuerung .....................152 Grundlegende Datentypen ......................172

Upload: dangtu

Post on 29-Aug-2019

233 views

Category:

Documents


0 download

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