konstrukcija asemblera Flashcards

1
Q

Sta sadrze objektni fajlovi?

A

1) zaglavlje (u kojem se nalaze opste informacije)
2) masinski kod
3) relokacioni zapisi (kako bi linker mogao lepo da poveze ovaj fajl sa ostalima)
4) lista definisanih simbola
5) informacije za debager

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

Koje vrste obj fajl postoje?

A

1) izvrsni fajl
2) relokativni fajl
3) deljeni fajl

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

Sta je izvrsni fajl?

A

To je fajl koji ima binarni kod u sebi i potrebne podatke kako bismo ga ucitali u mem i pokrenuli

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

Sta je relokativni fajl?

A

Fajl koji ima binarni kod i relokativne zapise koji pomazu linkeru u povezivanju njega sa ostaim fajlovima

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

Sta je deljeni fajl?

A

Objektni fajl sa binarnim kodom koji moze da se ucita u mem i da se dinamicki poveze

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

Sta ima sve ELF format?

A

1) zaglavlje (opste informacije)
2) tabela zaglavlja programa (bitna samo kada pokrenemo program)
3) sekcije i njihov kod
4) tabele sekcija (lokacije i velicine sekcija)

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

Sekcije koje moze da ima jedan elf fajl?

A

1) .text
2) .data ->globalne promenljive
3) .rodata ->globalne prom koje se samo citaju
4) .bss ->neinicijalizovani globalni podaci [postoje tek kada se pokrene program]
5) .line
6) .debug
7) .symtab ->tabela simbola
8) .strtab ->tabela stringova
9) .rel.text
10) .rel.data

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

Kojeg tipa mogu biti podaci u tabeli simbola?

A

ABS = ne treba mu relokacija
UNDEF = nisu definisani
COMMEN = neinicijalizovani, nisu jos alocirani

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

Koje su glavne funckije asemblera?

A

1) prevodi sa asemblerskog koda na masinski binarni kod

2) obrada referenci:
-skokovi
-poziv i ovratak iz funkcije
-pristup glob prom preko simbolickog imena

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

Sta je referisanje unapred?

A

To je kada treba da generisemo kod i dodjemo do instr koja ima definisanu labelu tek posle, pa ta labela ne postoji jos uvek u tabeli simbola

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

Kako se resava referisanje unapred?

A

Tako sto cemo da napravimo dvoprolazni asmebler

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

Kostrukcija dvoprolaznog asemblera?

A

U 1 prolazu:
samo ide i definise simbole u tabelu simbola

U 2 prolazu:
pravi .bss,.data,.rodata,.text i relokacione zapise ako su potrebni

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

Prvi prolaz dvorpolaznog asemblera?

A

Znaci ide redom i upisuje sve simbole, sekcijama stavlja da je ofs 0, jer se location counter uvek resetuje na pocetku sekcija;

Ako imamo negde globalana simbol, u ovom prolazu ce pisati da je lokalan, to se menja tek u drugom prolazu

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

Drugi prolaz dvoulaznog asemblera?

A

Ako imamo na primer call f-ja,a pritom ta f-ja nije u ovom modulu, onda ubacujemo f-ju u tabelu simbola i pravimo relokacioni zapis koji je tipa R_x86_64_PC32 i ofset gde smo ga nasli

Ako imamo tipa podatak i ne znamo gde je njegova sekcija opet radimo isto samo sto je tip ovde R_x86_64_32

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

Koji tipovi relokacionih zapisa postoje?

A

1) R_X86_64_PC32 - koji nam govori da je ovde relativna vrednost

2)R_X86_64_32 - koji nam govori da je ovo apsolutna vrednost

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

Konstrukcija jednoprolaznog asemblera?

A

Onda moramo da odradimo modifikaciju tabele simbola kako bi ovo bilo moguce, imamo 2 nova polja:
defined - da li je definisan simbol ili ne
flink- koji pokazuje na ulaz u tabelu obracanja unapred (ulancana lista lokacija gde smo sve nasli ovaj simbol)

17
Q

Sta je tabela obracanja unapred?

A

To je tabela koja pamti svako koriscenje simbola koji jos uvek nije definisan

18
Q

Sta je backpatching koda?

A

1) saznali smo def simbola B,vidimo da imam listu obracanja i krenemo po listi da razresujemo

2)nismo naisli na B, pravimo relokacione zapise kako bi linker mogao ovo da razresi kasnije

3) saznali smo def simbola B i nadalje radimo kao da B postoji, kad zavrsimo odemo u tabelu obracanja unapred i ako je ostala lista obracanja za B, onda je razresimo