Re: Domaci pitanja
Nije potrebno da eksplicitno definises velicinu stek segmenta. Cela
memorija procesora 8086 je podeljena u segmente velicine 64K (zbog 16b
adresiranja), pa je dovoljno da izaberes jedan i definises ga kao
stek.
Ovaj posao treba da uradi loader, tako sto ce izabrati neki segment i
postaviti SS registar na adresu tog segmenta, a SP na poslednju adresu
u segmentu (kod 8086 stek raste ka nizim adresama). Ako ne trazis
eksplicitno da loader izabere poseban segment za stek, stek se moze
smestiti npr. na kraj data segmenta.
Sve u svemu, treba samo da navedes u obj fajlu da je potreban poseban
segment za stek tako sto ces ga navesti u listi segmenata, sa
neodredjenom duzinom (tj. 0). Mislim da stek segment ne bi smeo
inicijalno da sadrzi podatke, pa bi se u ulaznom fajlu pojavila samo
direktiva za pocetak segmenta, posle cega bi isla direktiva za pocetak
sledeceg ili END.
Ovo je moje resenje stek segmenta, ako neko ima bolju ideju neka predlozi. :)
Inace, kada u sistemu postoji OS on vodi racuna o segmentima i
dinamicki alocira dodatnu memoriju po potrebi, a u startu alocira neku
podrazumevanu velicinu. Inicijalna velicina moze i ne mora da bude
definisana u izvrsnom fajlu, zavisi od njegovog formata.
Sto se tice BEG, mislim da je nepotrebna.
Pozdrav,
Milos
Током 21. мај 2008. 01.15, Dragic Igor <cipi79@gmail.com> је написао/ла:
> Pa kako onda da alociram prostor za stek? Jel treba u asembleru u nekoj
> petlji pomocu DW? I sta uopste treba da stoji u stack segmentu u ulaznom
> fajlu?
>
> ----- Original Message -----
> From: Miloš Rašić
> To: ir3sp@rti.etf.bg.ac.yu
> Sent: Wednesday, May 21, 2008 12:03 AM
> Subject: Re: [ir3sp] Domaci pitanja
>
>> Da li stek moramo praviti sa DS direktivom posto sa DW nismo u mogucnosti
>> da zauzmemo vise od jedne memorijske lokacije u jednom koraku(zbog defincije
>> direktive DW u tekstu domaceg jer nemamo mogucnost koriscenja DUP naredbe).
>
> U domaćem piše da postoje samo direktive BEG, END, PUBLIC, EXTERN i SEGMENT.
> Trebalo bi da ostale ne treba da implementiramo.
>
> ________________________________
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
> -----------------------------------------------------------------
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
> -----------------------------------------------------------------
>
>
memorija procesora 8086 je podeljena u segmente velicine 64K (zbog 16b
adresiranja), pa je dovoljno da izaberes jedan i definises ga kao
stek.
Ovaj posao treba da uradi loader, tako sto ce izabrati neki segment i
postaviti SS registar na adresu tog segmenta, a SP na poslednju adresu
u segmentu (kod 8086 stek raste ka nizim adresama). Ako ne trazis
eksplicitno da loader izabere poseban segment za stek, stek se moze
smestiti npr. na kraj data segmenta.
Sve u svemu, treba samo da navedes u obj fajlu da je potreban poseban
segment za stek tako sto ces ga navesti u listi segmenata, sa
neodredjenom duzinom (tj. 0). Mislim da stek segment ne bi smeo
inicijalno da sadrzi podatke, pa bi se u ulaznom fajlu pojavila samo
direktiva za pocetak segmenta, posle cega bi isla direktiva za pocetak
sledeceg ili END.
Ovo je moje resenje stek segmenta, ako neko ima bolju ideju neka predlozi. :)
Inace, kada u sistemu postoji OS on vodi racuna o segmentima i
dinamicki alocira dodatnu memoriju po potrebi, a u startu alocira neku
podrazumevanu velicinu. Inicijalna velicina moze i ne mora da bude
definisana u izvrsnom fajlu, zavisi od njegovog formata.
Sto se tice BEG, mislim da je nepotrebna.
Pozdrav,
Milos
Током 21. мај 2008. 01.15, Dragic Igor <cipi79@gmail.com> је написао/ла:
> Pa kako onda da alociram prostor za stek? Jel treba u asembleru u nekoj
> petlji pomocu DW? I sta uopste treba da stoji u stack segmentu u ulaznom
> fajlu?
>
> ----- Original Message -----
> From: Miloš Rašić
> To: ir3sp@rti.etf.bg.ac.yu
> Sent: Wednesday, May 21, 2008 12:03 AM
> Subject: Re: [ir3sp] Domaci pitanja
>
>> Da li stek moramo praviti sa DS direktivom posto sa DW nismo u mogucnosti
>> da zauzmemo vise od jedne memorijske lokacije u jednom koraku(zbog defincije
>> direktive DW u tekstu domaceg jer nemamo mogucnost koriscenja DUP naredbe).
>
> U domaćem piše da postoje samo direktive BEG, END, PUBLIC, EXTERN i SEGMENT.
> Trebalo bi da ostale ne treba da implementiramo.
>
> ________________________________
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
> -----------------------------------------------------------------
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
> -----------------------------------------------------------------
>
>
- Follow-Ups:
- Re: Domaci pitanja
- From: "Miloš Rašić" <milos.rasic@gmail.com>
- Re: Domaci pitanja
- References:
- Domaci pitanja
- From: "Ivan Mitic" <mitkebgd@gmail.com>
- Re: Domaci pitanja
- From: "Miloš Rašić" <milos.rasic@gmail.com>
- Re: Domaci pitanja
- From: "Dragic Igor" <cipi79@gmail.com>
- Re: Domaci pitanja
- From: "Miloš Rašić" <milos.rasic@gmail.com>
- Re: Domaci pitanja
- From: "Dragic Igor" <cipi79@gmail.com>
- Domaci pitanja
Previous by date: Re: Domaci pitanja
Next by date: Re: Dokumentacija - nejasno sta se trazi tacno
Previous by thread: Re: Domaci pitanja Next by thread: Re: Domaci pitanja
Previous by thread: Re: Domaci pitanja Next by thread: Re: Domaci pitanja