Re: jos pitanja u vezi pC-a
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
-----------------------------------------------------------------
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
-----------------------------------------------------------------
- References:
- Re: jos pitanja u vezi pC-a
- From: Ivan Milenkovic <ivanm445@yahoo.com>
- Re: jos pitanja u vezi pC-a
Previous by date: Re: jos pitanja u vezi pC-a
Next by date: Instrukcija IN
Previous by thread: Re: jos pitanja u vezi pC-a Next by thread: Instrukcija IN
Previous by thread: Re: jos pitanja u vezi pC-a Next by thread: Instrukcija IN