«« ( Date ) »» // «« ( Thread ) »» // ir3sp - 2009

Asembleri zadatak

by Miljan Uscumlic
nedelja, 26. jul 2009 - 20:55.


Dva pitanja u vezi s zadatkom s vežbi. Dokument je
RI4SP_V4_Asembleri.doc - poslednji zadatak.

1. Odnosi se na na liniju koda "8. LDR d" i relokaciju.

Komentar za ovu liniju: "Red u asemblerskom programu: 8.
Relativni pristup simbolu koji je definisan u istom fajlu.
Upisana razlika vrijednosti simbola i adrese sledeće
instrukcije.
Nije dodata relokacija jer su i simbol i mjesto
korišćenja u istom segmentu."

Mislim da je nedovoljan komentar "Nije dodata relokacija jer
su i simbol i mjesto korišćenja u istom segmentu."

Jer sledeća relokacija "0B 1 1 A1" (iz relocations
sekcije) se odnosi na liniju koda "10. d DC d" tj. za isti
simbol d za koji važi da su simbol i mesto
korišćenja u istom segmentu.

Za liniju 8. u kodu je potrebno upisati vrednost izraza d-PC
(relativno adresiranju u odnosu na PC)

Ako želimo da izračuno indeks klasifikacije ovog
izraza: d je relokativno, a PC je apsolutno pa ce biti
IK=1-0=1. Što bi bilo relokativno, pa je potrebna i ta
relokacija.

Kada bismo posmatrali LC+1 umesto PC onda bi izraz d-LC-1
bio apsolutan IK=1-1-0=0 i ne bi trebala relokacija (LC
je u ovom slučaju relokativan, jer nema ORG direktive).

Da li grešim?

2. Pitanje u vezi sa popunjavanjem tabele relokacija.

Kada prolazimo kroz asemblerski kod u prvom prolazu i
naidjemo na liniju "4. LDR a" pravimo prvi ulaz u tabeli
relokacija sa vrednostima byte=1 seg=1 type=R1, ali u
tom trenutku ne znamo u kom se segmentu nalazi simbol 'a',
pa ne možemo da popunimo i polje ref.

Tek kada dođemo do mesta definicije simbola, možemo
to polje na popunimo na osnovu sadržaja tabele simbola.

Da li polje ref u ovom ulazu i sva druga ref polja,
slična njemu po ovom osnovu, popunjavamo nakon prvog
prolaza prolazeći kroz tabelu relokacija i
konsultujući tabelu simbola koja će na kraju prvog
prolaza imati ove podatke? I na taj način dobijemo
potpunu tabelu relokacija, pa je u drugom prolazu možemo
prepisati u predmetni fajl.

Ili se popunjavanje ovih ref polja radi u drugom prolazu,
naravno pre prepisivanja tabele u predmetni fajl?

Glavno pitanje je da li je tačno da polje ref u ovakvim
slučajevima u prvom prolazu ostaje prazno.

Hvala na odgovorima

Miljan