Problem sa nizovima
Imam problem kod dohvatanja vrednosti niza. Problem je vezan za postavljanje
parametara instrukcije aload i baload na stek. Parametri treba da budu
ovakvi: adr,index.
Sledece smene su povezane sa ovim problemom:
1. designator ::= designator_field;
2. designator ::= designator TACKA designator_field;
3. designator_field ::= IDENT '[' expression ']';
4. factor ::= designator:d {: Code.load(d); :};
5. stmt ::= designator JEDNAKO expression;
E sad, u smeni 4. se vrsi ucitavanje "item-a" (vrednosti koju on
predstavlja) na stek, a to je adresa niza.
Ovo je kasno sto se tice smene 3. jer se u njoj ucita expression na stek
koji predstavlja index u nizu, a jos uvek nije ucitana adresa.
Adresa ne moze da se ucita u smeni 3. u akciji koja bi bila iza IDENT, jer
se tada jos uvek ne zna da li je promenljiva koju item predstavlja biti sa
leve ili sa desne strane operatora dodele. Ako je sa leve ne treba ucitavati
vrednost na stek, vec je treba sa steka smestiti u data memoriju.
Da li je neko imao ovakvih problema i kako ovo moze da se resi.
Ja imam samo neke ideje koje predstavljaju "budzenje": tipa koriscenje neke
programu nevidljive mem. lokacije koju bih koristio da obrnem redosled adr i
index-a, sto bi zahtevalo izmenu metode load u klasi Code.
Druga ideja je da stavim jednu boolean preomenljivu koja se zove npr.
desno_od_dodele i koju bih postavljao na false u smeni 5 ispred designator,
ali to ne pali jer mi cup javlja konflikt tada.
Hvala svima na pomoci.
Pozdrav, Rade
parametara instrukcije aload i baload na stek. Parametri treba da budu
ovakvi: adr,index.
Sledece smene su povezane sa ovim problemom:
1. designator ::= designator_field;
2. designator ::= designator TACKA designator_field;
3. designator_field ::= IDENT '[' expression ']';
4. factor ::= designator:d {: Code.load(d); :};
5. stmt ::= designator JEDNAKO expression;
E sad, u smeni 4. se vrsi ucitavanje "item-a" (vrednosti koju on
predstavlja) na stek, a to je adresa niza.
Ovo je kasno sto se tice smene 3. jer se u njoj ucita expression na stek
koji predstavlja index u nizu, a jos uvek nije ucitana adresa.
Adresa ne moze da se ucita u smeni 3. u akciji koja bi bila iza IDENT, jer
se tada jos uvek ne zna da li je promenljiva koju item predstavlja biti sa
leve ili sa desne strane operatora dodele. Ako je sa leve ne treba ucitavati
vrednost na stek, vec je treba sa steka smestiti u data memoriju.
Da li je neko imao ovakvih problema i kako ovo moze da se resi.
Ja imam samo neke ideje koje predstavljaju "budzenje": tipa koriscenje neke
programu nevidljive mem. lokacije koju bih koristio da obrnem redosled adr i
index-a, sto bi zahtevalo izmenu metode load u klasi Code.
Druga ideja je da stavim jednu boolean preomenljivu koja se zove npr.
desno_od_dodele i koju bih postavljao na false u smeni 5 ispred designator,
ali to ne pali jer mi cup javlja konflikt tada.
Hvala svima na pomoci.
Pozdrav, Rade
- Follow-Ups:
- Re: Problem sa nizovima
- From: "Jovan Popovic" <jovan@etf.bg.ac.yu>
- Re: Problem sa nizovima
Previous by date: Re: Alokacija String objekata
Next by date: Re: Alokacija String objekata
Previous by thread: Re: Alokacija String objekata Next by thread: Re: Problem sa nizovima
Previous by thread: Re: Alokacija String objekata Next by thread: Re: Problem sa nizovima