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

Re: jos pitanja u vezi pC-a

by Sasa Stojanovic
utorak, 13. januar 2009 - 12:04.

1. Pise se na prvi nacin, a asembler izgenerise instrukciju kojom konstantu sim ucita u rezervisanu lokaciju, pa potom indirektni pristup pomocu rezervisane lokacije, bas kako ste i mislili.

2. Ili uvedite ogranicenje da moze da se pojavi samo jedan simbol, ili rezervisite vise lokacija za ovakav pristup.

3. Takav pristup nije dozvoljen.

4. Jeste malo slozenije, ali nije nemoguce.

Pozdrav,
Sasa

--- On Tue, 1/13/09, Ivan Milenkovic <ivanm445@yahoo.com> wrote:
From: Ivan Milenkovic <ivanm445@yahoo.com>
Subject: Re: [ir3sp] jos pitanja u vezi pC-a
To: "sistemsko_programiranje ETF" <ir3sp@rti.etf.bg.ac.yu>
Date: Tuesday, January 13, 2009, 2:08 AM

Unapred se izvinjavam zbog opsirnosti :)

1) pristup podacima u dinamickoj zoni memorije:

...
SIM1:    DC    0    ; pretpostavimo da ovaj podatak ide u dinamicku zonu
...

da li programer treba da pise

            ADD    SIM1, 5, 5

ili
            ADD    (SIM1), 5, 5
?

Iz vaseg odgovora sledi da programer treba da pise na drugi nacin, ali ovo nije u saglasnosti sa sintaksom pC-a, gde se navodi da je
(SIM) = val(val(sim)), dok je cilj pristupiti direktno memorijskoj lokaciji u dinamickoj zoni

da li mozemo da usvojimo da programer pise na prvi nacin, pri cemu bi asembler to
implicitno zbog ogranicenja pC-a prevodio u indirektno adresiranje sa dodatnom instrukcijom ucitavanja adrese (nesto poput MOV 7, #SIM)?

2) visestruki pristupi dinamickoj zoni memorije

ako imamo vise simbola (recimo SIM1, SIM2, SIM3) koji su po pretpostavci svi smesteni u dinamicku zonu memorije,
iz opisa pCa (na strani 1.42) sledi da je moguce napisati instrukciju npr.
           
            ADD SIM1, SIM2, SIM3

da bi ovo bilo moguce prevesti moramo da odvojimo 3 memorijske lokacije u koje cemo smestiti adrese ovih simbola. Iz ovoga sledi da za fiksnu zonu u memoriji imamo samo 5 lokacija na raspolaganju ???

3) indirektno pristupanje dinamickoj memoriji

Da li treba zabraniti programeru da indirektno referencira simbole koje je rezervisao u dinamickoj zoni memorije? ovakav nacin pristupa bi napravio mnogo problema, jer
bi se za svako koriscenje simbola na ovaj nacin morale umetati po 2 instrukcije. U opstem slucaju, kada bi iskoristili 3 ovakva adresiranja, slicno prethodnom primeru (recimo   ADD, (SIM1), (SIM2), (SIM3)    ), morali bismo da odvojimo 6 memorijskih lokacija u fiksnoj zoni, sto je cini neupotrebljivom za ostale potrebe.

4) Forward reference i backpatching

Najveci problem na koji sam do sada naisao vezan je za obracanje unapred. Ako upotrebimo simbol pre nego sto je definisan, potrebno je da napravimo odgovarajuci zapis u tabeli obracanja unapred, kao sto je opisano na predavanjima. Medjutim, u tom trenutku ne mozemo znati da li se taj podatak nalazi u fiksnoj ili dinamickoj zoni memorije, pa samim tim ni da li je potrebno odvojiti 4bita u postojecoj reci instrukcije ili 32 bita za umetnutu MOV instrukciju. Kako od ovoga zavise i relokacije koje se mogu pojaviti pre same definicije simbola, backpatching postaje previse
slozen.
 
Da li postoji neko drugo resenje kako bi se izbegao ovaj problem?

Pozdav,
Ivan

From: Sasa Stojanovic <stojsasa@yahoo.com>
To: sistemsko_programiranje ETF <ir3sp@rti.etf.bg.ac.yu>
Sent: Sunday, January 4, 2009 10:10:07 PM
Subject: Re: [ir3sp] Pitanja u vezi projekta - Asemblerske direktive

Uvesti dva tipa DAT segmenta:
DAT - lokacije koje se mogu adresirati i direktno i indirektno (prvih 8)
DATI - lokacije kojima se moze pristupati samo indirektno

Obezbijediti da se izgenerise potrebni kod za indirektni pristup (moguce je pretpostaviti da je lokacija sa adresom 7 rezervisana za tu namjenu, tako da za segment prvog tipa ostaje prvih 7 lokacija).

Pozdrav,
Sasa









-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
-----------------------------------------------------------------