Közérthetően elmagyaráznád mire is való? ![ds_icon_redface :oops:](/Smileys/phpbb/ds_icon_redface.gif)
Alter:
megkérdezi a szimbolum tábla méretét, ez alapesetben 1667h byte
a szimbólum táblában vannak eltárolva a deklarált változóink, függvényeink és eljárásaink neve, típusa, stb.
az értékét átírva (hexa-ban), módosíthatjuk ennek a táblázatnak a méretét.
a táblázat kezdőcíme fix, ez az 1.1-es verzióban a 4CD1H címen kezdődik, a szimbólum tábla kezdőcímének értéke a a 4A41H címen van eltárolva.
ehhez hozzáadva a szimbólumtábla méretét (alapesetben a 1667H-et), megkapjuk a forráskódunk kezdőcímét: 6338H (aminek értéke egyébként a korábbi hozzászólásban már említett 48A3 címen van eltárolva)
a compiler és a translate stack a fordításkor (memóriába, ill. lemezre) beállított verem értékét mutatja
ez a cím ugye a verem tetejét mutatja, tehát az első elem a 0fffh címen lesz (3-as lap teteje).
a változóknak is ide foglal memóriát a pascal
legegyszerűbben egy példát mutatnék:
var
i : integer;
ch : char;
mivel az integer 2 byte-ot foglal, az I változónk a 0FFFEH és 0FFFFH címen lesz eltárolva (erről meggyőzödhetünk az ADDR(I) paranccsal is).
a char egy byte-ot foglal, ezért a CH változónk a 0FFFDH címen lesz tárolva
ez alatt kezdődik a verem (vagyis a 0FFFCH címtől lefelé)
ha a compiler, vagy a translate stack-et átírjuk, akkor ott lesz a verem (és a változóknak foglalt hely) teteje
tehát, ha C000-ra írjuk, akkor pl. az elsőként deklarált 1 byte-os változónk a 0BFFF címen lesz, vagyis a 3-as lapunkat nem használja a Pascal, ezért szabadon lapozható.
remélem, érthető volt