linker i punioci Flashcards

1
Q

Sta je povezivanje?

A

Kombinovanje vise objektih fajlova u jedan fajl koji moze da se ucita u memoriju i/ili izvrsi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Kada moze da se izvrsi povezivanje?

A

1) U vreme kompajliranja [prevoddimo iz izvornog u masinski kod]
2) U vreme ucitavanja [kada imamo biblioteke koje hocemo da delimo]
3) u vreme izvrsavanja

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Sta moze da dodje na ulaz linkera?

A

1) objektni fajlovi
2) deljene biblioteke
3) obicne biblioteke
4) parametri komande [razne opcije koje mu zadajemo upucuju sta da radi linker]
5)skript fajl

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Sta moze da dobijemo na izlazu iz linkera?

A

1) izvrsni fajl
2) deljenu biblioteku
3) mapu povezivanja [informacije o tome kako je povezao ulazne fajlove]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Koje su dve glavne funkcije linkera?

A

1)razresavanje simbola
2)realokacija

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Sta je razresavanje simbola?

A

Povezuje svaku referencu simbola sa tacno jednom definicijom

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Sta je realokacija?

A

Sve reference simbola pokazuje im na koju adresu treba da gadjaju da bi nasli ono sto im treba

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Koje greske mogu da se jave pri razresavanju simbola?

A

1) simbol je vec definisan
2) simbol nije uopste definisan

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Sta sve moze da se desi kod razresavanja simbola?

A

1)simbol ima tacno 1 def
2)simb nije def u tekucem modulu
3) simbol nije def
4)globalni simbol je vise puta definisan

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kojom komandom linker ispisuje gresku ako smo imali vise def za jedan simbol?

A

-fno-common

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Kakvi mogu biti globalni simboli?

A

Mogu biti jaki ili slabi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Koji simboli su jaki?

A

Globalne promenljive koje su inicijalizovane i funkcije

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Koji simboli su slabi?

A

Neinicijalizovane globalne promenljive

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Pravila za visestruku definiciju simbola po kojoj se odredjuje def simbola?

A

1) nema vise jakih def za jedan simbol
2) ako imamo jaki i vise slabih def, biramo jaki
3) ako imamo vise slabih def, biramo jednu od njih

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Sta je staticka biblioteka?

A

Svi objektini fajlovi mogu umesto da se linkuju da se spakuju u jednu datoteku i to se naziva staticka biblioteka

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Da li koristimo celu staticku biblioteku?

A

Ne linker koristi samo one delove koji se koriste iz te biblioteke

17
Q

U kom formatu su staticke biblioteke?

A

Format arhive, njegovi fajlovi imaju ekstenziju .a

18
Q

Kako pravimo arhivu?

A

gcc -c fajl1.c fajl2.c
ar rsc arhiva.a fajl1.o fajl2.o

19
Q

Kako linker koristi staticke biblioteke da razresi reference?

A

Sa komandne linije cita jedan po jedan fajl(f)/arhivu(a) i popunjava skupove:

-skup E: fajlovi koji ce biti spojeni u izvrsavanje
-skup U: nerazreseni simboli
-skup D: definisani simboli

-u pocetku su E,U,D prazni

1) ako imamo f onda azurira skupove E,U i D
2) ako imamo a, pokusava da razresi simbole iz U, ako uspe azurira E,U,D

20
Q

Da li je redosled fajlova na komandonoj liniji znacajan ?

A

Jeste, po pravilu biblioteke bi trebale da idu skroz na kraju, i ako imamo kruzni poziv u arhivama, onda cemo neke arhive da navedemo vise puta u komandnoj liniji kako bismo razresili sve simbole

21
Q

Koje korake ima faza realokacije?

A

1) realokacija sekcija i definicija simbola (dodeljivanje memorije i spajanje sekcija)
2) realokacija referenci simbola (racunanje ofseta skokova i njihovih stvarnih adresa)

22
Q

Realokacija sekcija?

A

Linker ovde prvo spoji sve sekcije, tako sto ih spaja po tipu; Zatim dodeli run-time memorijske lokacije svakoj sekciji i simbolu koji je definisan

23
Q

Izvrsni fajl ELF ima dodatne sekcije?

A

Ima .init gde se nalazi mala funkcija _init() koju poziva inicijalizovani kod programa

24
Q

Zaglavlje ELF fajla?

A

Tu imamo:
1) off - odakle pocinje kod od pocetka fajla
2) vaddr/paddr -adresa u memoriji od koje se pocinje
3) align - poravnanje za pocetnu adresu
4) filesz - velicina segmenta fajla
5) memsz -velicina segmenta memorije
6) flags - prava pristupa segmenta tokom izvrsavanja