Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

11/20/2019

Leksion 6: Përkthimi dhe Thirrja e


Programeve.

Përgatiti: Dr. Ina Papadhopulli

int x = 10; Në Disk


x = 2*10 +15;

Në Memorje për
ekzekutim

1
11/20/2019

Kalimi nga program në C, në program të


ekzekutueshëm

Kompilatori
• Software që përkthen kodin nga gjuhë e
nivelit të lartë (p.sh. C), në assembler.
• Në fillim shumë programme shkruheshin në
assembler pasi memorjet kishin kapacitet të
vogël edhe kompilatorët nuk ishin efiçentë.
• Sot kompilatorët mund të gjenerojnë kod në
assembler më të mirë se kodi I shkruar nga
njeriu.

2
11/20/2019

Asembluesi
• Software që përkthen nga gjuhë asembler në
gjuhë binare.
• Një kod burim në asembler konvertohet në
një file object (.obj)
• Një program mund të ketë disa kode burim

Asembluesi
• Detyrat e asembluesit:
– Të bëjë përkthimin e etiketave në adresa
– Të përthejë çdo instruksion në formë binare
• Një file .obj nuk mund të ekzekutohet
• Etiketat:
– Lokale (zgjidhen nga asembluesi)
– Globale (nuk zgjidhen dot nga asembluesi)
• Etiketat mund të përdoren para se të deklarohen.
• Symbol table Loop: beq $9, $0, End
add $8, $8, $10
addi $9, $9, -1
j Loop 6
End:

3
11/20/2019

Formati i file-ve objekt


• File .obj ka 6 seksione:
– Header
• Madhësia dhe pozicioni i pjesëve të tjera
– Segmenti tekst
• Kodi makinë i gjithë routines në file
– Segmenti data
• Paraqitje binare e gjithë të dhënave në file burim
– Informacioni i realokimit
• Identifikon të dhënat dhe instruksionet që varen nga adresa
absolute (thirrje proçedurash, lw , sw; jo PC-relative)
– Symbol table
• Liston referencat e pazgjidhura
7
– Informacion për debugging

Shembull i një file .obj

4
11/20/2019

Linker
• Mjet që bashkon disa file të cilat janë asembluar
veç e veç.
• Gjeneron një file të ekzekutueshëm (.exe)
• Detyrat:
– Kërkon libraritë për të përcaktuar libraritë e
përdorura nga programi
– Përcakton vendodhjet në memorje që do të zërë çdo
modul – zgjidh referencat absolute
– Zgjidh referencat midis file-ve të ndryshëm
(përfshirë edhe libraritë).
• Formati i file .exe ngjan me formatin e file .obj,
9
por nuk ka referenca të pazgjidhura

Linker

10

5
11/20/2019

Linker
• Librari statike: bashkësi file te tipit .obj
• Pyetje: Çdo program përfshin gjithë
librarinë?
• Përgjigje: Jo, linker-i përzgjedh vetëm ato
file .obj që nevojiten për të zgjidhur
referencat.

11

12

6
11/20/2019

13

Link-imi statik
(Avantazhe/Disavantazhe)
(+) Thirrja e routinave të librarive bëhet shpejt
(-) Një version i ri (i korrigjuar) i një routine,
nuk bëhet pjesë e programit .exe
(-) Edhe nëse një routine nuk ekzekutohet është
pjesë e programit .exe (p.sh. Libraria
standarte e gjuhës C është 2.5MB)

14

7
11/20/2019

Link-imi dinamik
• Dynamically Linked Libraries (DLLs):
routina librarie të cilave i bëhet link gjatë
ekzekutimit (nuk janë pjesë e file .exe)
• Link-imi bëhet:
– Nga Loader-i (me dynamic linker)
• Bëhet link edhe i routina-ve që nuk do të thirren
– Vetëm pasi routine është thirrur

15

Link-imi
dinamik

16

8
11/20/2019

Loader
• Pjesë e Sistemit Operativ. Merr një file të ekzekutueshëm
dhe e kopjon nga disku në memorjen kryesore. Hapat:
– Lexon header-in për të përcaktuar madhësinë e tekstit dhe
data.
– Krijon në memorje një hapësirë për tekstin dhe data (edhe
stack-un).
– Kopjon tekstin dhe data në memorje
– Kopjon parametrat (nëse ka) të programit kryesor në stack
– Inicializon regjistrat dhe vendos stack-pointerin tek adresa e
parë e lirë.
– Kopjon parametrat tek regjistrat e argumentave dhe thërret
funksionin kryesor. Kur ky funksion përfundon thërret
funksionin exit të sistemit. 17

Referenca
• Libri:
Computer Organization and Design. The
Hardware/Software Interface, 4th Edition
Kapitulli 2 (faqe 139-147)
Shtojca B (faqe B3-B21)

18

You might also like