more progress in land desc
This commit is contained in:
parent
f779f514b8
commit
577ac45bb6
27
BASED.md
27
BASED.md
@ -1577,8 +1577,8 @@ Emiatt ha a legfelső bit egyes volt a word-ben, akkor ott egy négybyte-os inde
|
|||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
int64_t var_count;
|
int64_t var_count;
|
||||||
char **var_names;
|
char **var_names; // tömb: session storage-ba
|
||||||
int32_t variables;
|
int32_t var1, var2, var3, var4; // cache
|
||||||
|
|
||||||
// Regular word definition code
|
// Regular word definition code
|
||||||
int64_t main_len;
|
int64_t main_len;
|
||||||
@ -1618,11 +1618,7 @@ Szerintem ezeket inline-olható, function pointerré kéne "elkódolnom", akár
|
|||||||
|
|
||||||
^^Ezzel a memória kialakítással a memory layout:
|
^^Ezzel a memória kialakítással a memory layout:
|
||||||
|
|
||||||
| engine kód | callstack | adatstack | szimbólumtábla -> ... <-complexwords|-> ... <- sessionstorage | src |
|
| engine kód | callstack | adatstack | szimbólumtábla -> ... <-complexwords|insert_stack-> ... <- sessionstorage | src |
|
||||||
|
|
||||||
Alternatíva:
|
|
||||||
|
|
||||||
| engine kód | callstack | szimbólumtábla -> ... <-complexwords|adatstack-> ... <- sessionstorage | src |
|
|
||||||
|
|
||||||
Igazából embedded környezetben, ilyen kismap-szerű (vagy még egyszerűbb) szimbólumtáblával tehát a legtöbb dolog
|
Igazából embedded környezetben, ilyen kismap-szerű (vagy még egyszerűbb) szimbólumtáblával tehát a legtöbb dolog
|
||||||
vagy konstans, vagy csak két ponton van balról-jobbra és jobbról-balra folyton akár végtelenig (memhatár) növő rész!
|
vagy konstans, vagy csak két ponton van balról-jobbra és jobbról-balra folyton akár végtelenig (memhatár) növő rész!
|
||||||
@ -1631,7 +1627,9 @@ A complexwords egy embedded megoldásban "mozoghat", tehát mivel csak indexál
|
|||||||
ott memcpy-vel mozgatható, ha kezd elfogyni vagy a szimbólumtábla, vagy a session storage.
|
ott memcpy-vel mozgatható, ha kezd elfogyni vagy a szimbólumtábla, vagy a session storage.
|
||||||
|
|
||||||
A jobbra-balra mozgó complexwords-ön túl még egy ilyen memóriát tudnánk csinálni, tehát egy cövek két oldalát is használva!
|
A jobbra-balra mozgó complexwords-ön túl még egy ilyen memóriát tudnánk csinálni, tehát egy cövek két oldalát is használva!
|
||||||
Odakerülhet tehát például még egy másik stack is ha szeretnénk (pl. memhatárig növelhető adat stack beállítás / paraméter?)
|
Így került oda a "insert-stack", ami interpretereknek nagyon hasznos és a callstack-beli ID-tól függően (mélység szám)
|
||||||
|
bizonyos szavak esetén az src-t kiegészíthetjük vele! Tehát "írhatunk az inputra" úgy, hogy épp egy feldolgozott szó mögé!
|
||||||
|
Ez az insert-álás!
|
||||||
|
|
||||||
Ennél bonyolultabb memory management nem szükséges - tehát nem kell "malloc-implementáció" hozzá embeddedben!
|
Ennél bonyolultabb memory management nem szükséges - tehát nem kell "malloc-implementáció" hozzá embeddedben!
|
||||||
|
|
||||||
@ -1641,3 +1639,16 @@ Megj.:
|
|||||||
inputról (src) valahogy a complex szó átírásnál, meg az outputra írásokhoz előkészítésnél valami ilyen tárhely, ami azért
|
inputról (src) valahogy a complex szó átírásnál, meg az outputra írásokhoz előkészítésnél valami ilyen tárhely, ami azért
|
||||||
perzisztensebb, mint a sima stack! Az src természetesen épp függ attól, amely fájlt olvasunk, szóval a session kezdetén az
|
perzisztensebb, mint a sima stack! Az src természetesen épp függ attól, amely fájlt olvasunk, szóval a session kezdetén az
|
||||||
egész session storage..src végig törlődhet majd. Egy embedded (vagy pl. retró számítógép) memóriáját ezzel kihasználjuk!
|
egész session storage..src végig törlődhet majd. Egy embedded (vagy pl. retró számítógép) memóriáját ezzel kihasználjuk!
|
||||||
|
|
||||||
|
Megj.:
|
||||||
|
|
||||||
|
Természetesen nem szükséges a sima Linuxos / normális bináris engine futtatókódja az engine-nek ezt így kezelnie!
|
||||||
|
A lényeg, hogy ha az API ilyen, akkor memory manager / OS nélkül mindenhol használható a dolog, egy nagy méretű
|
||||||
|
lineáris memória területet feltételezve az egész rendszer tehát (pl. shell-ként) működtethető! Viszont "normál" OS
|
||||||
|
mellett azonban persze érdemes ezeket simán "malloc-olgatással" megoldogatni hagyományosan!
|
||||||
|
|
||||||
|
## Egyéb implementációs szempontok
|
||||||
|
|
||||||
|
* Legyen "sima C" kompatibilitási okokból a fordító
|
||||||
|
* Legyen az "engine" a fentiek fényében független a környezetétől (függvény pointeres megoldás)
|
||||||
|
* Lehetőleg könnyen self-host-olható legyen az egész történet (minimális számú szóból a többi implementálható)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user