«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Re: Pitanje u vezi koda sa sajta

by Jovan Popovic
ponedeljak, 05. jun 2006 - 08:24.

Kada dodajete nove staticke promenljive alocirajte im jednu rec u
statickoj memoriji bez obzira da li je referenca ili obican tip. Ne morate
cak ni da koristite ovu metodu (allocateStaticMemory) samo stavite da je
adresa=Code.dataSize++;
type.getSize() se ne koristi za dodeljivanje staticke memorije (poziv
allocateStaticMemory(type.getSize())).
Ako koristite ovu metodu pozovite je sa
allocateStaticMemory(var.getSize()) i na ovaj nacin uvek dodeljujete 1 rec
u statickoj memoriji.
var.getSize() vraca vrednost 1 bez obzira da li je u pitanju obicna
promenljiva ili referenca.

type.getSize() sa koristi samo prilikom pozivanja konstruktora gde se mj
instrukciji new prosledjuje velicina klase tj. polje nVar.

Metoda allocateStaticMemory se koristi na nivou D kada treba dodeliti
prostor v-tabeli klase u tom slucaju pozivate metodu sa
allocateStaticMemory(cls.getVTSize()) - pretpostavka da metoda getVTSize
vraca velicinu V-Tabele klase.

Pozdrav,
Jovan

> Slazem se sa svim sto si rekao, ali nisi odgovorio na moje pitanje.
> Ako je velicina staticke promenljive koja je referenca na objekat neke
> klase 4 bajta tj. jedna rec, zasto bi se u metodi MJCodeGenerator ::
> allocateStaticMemory(int ) :
> public int allocateStaticMemory(int size)
> {
> Code.dataSize += size;
> return Code.dataSize;
> }
> za nju izdvajalo type.getSize() lokacija, kada je dovoljna samo jedna
> lokacija. Tj. zasto se Code.dataSize povecava za type.getSize() sto je u
> slucaju klasa jednako nVar.
>
> Pozdrav, Petar
>
> ----- Original Message -----
> From: Milan Aleksic
> To: ri4pp@rti.etf.bg.ac.yu
> Sent: Sunday, June 04, 2006 9:08 PM
> Subject: Re: [ri4pp] Pitanje u vezi koda sa sajta
>
>
> fazon ti je slican kao i u bilo kom OOP jeziku, referenca ti je samo
> adresa nekog objekta na heap-u, dok je njegova velicina proizvoljna.
> Tu nema greske, kada budes pozivao new prosledices upravo taj nVar jer
> ce on reci vm-u koliko memorije da zauzme na heap-u i da zatim vrati
> adresu (ekvivalentno pokazivacu u C++-u npr.) koju ces ti posle da
> koristis kada budes hteo da preuzmes vrednost nekog polja iz alociranog
> objekta. capisci?
>
> pozdrav, Milan
>
>
> On 6/4/06, Bojic Petar <rapecafa@verat.net> wrote:
> Na sajtu za prevodioce u odeljku "primeri koda" - Primer
> Implementacije - Eclipse projekat -Primeri implementacije generatora
> koda i tabele simbola - Compiler.zip. U ovoj arhivi se nalazi folder
> CompilerFramework\symbolTablePackage\pl a u njemu ObjFactory.java.
> Zanima me metoda iz ovog fajla:
>
> public Variable CreateGlobalVariable(String name, Struct type)
> {
> Variable var = CreateVariable(name,type, STATIC);
> var.adr = mem.allocateStaticMemory(type.getSize());
> return var;
> }
>
> Ako je tip "type" klasni tj. promenljiva u statickoj memoriji je
> referenca na instancu objekta
> na heap-u, velicina promenljive u statickoj memoriji je samo jedna
> rec, dok ce type.getSize(), koji se koristi u
> mem.allocateStaticMemory, u slucaju klasnog tipa vratiti nVar polje
> u Struct klasi sto moze biti vece od 1.
> Da li je ovo greska ili kod treba tumaciti na drugi nacin?
>
> Pozdrav
> Petar
>
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
> -----------------------------------------------------------------
>
>
>
>
>
>
> --
> Milan Aleksić
> WebGrafit: http://galeb.etf.bg.ac.yu/~aleksicm/webgrafit.php
> email+jabber: milanaleksic@gmail.com
> web: http://drop.to/goblin
> ICQ: 53177884
>
>
> ------------------------------------------------------------------------------
>
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
> -----------------------------------------------------------------
>