more progress in land desc

This commit is contained in:
Richard Thier 2024-08-17 20:45:33 +02:00
parent f779f514b8
commit 577ac45bb6

View File

@ -1577,8 +1577,8 @@ Emiatt ha a legfelső bit egyes volt a word-ben, akkor ott egy négybyte-os inde
char *name;
int64_t var_count;
char **var_names;
int32_t variables;
char **var_names; // tömb: session storage-ba
int32_t var1, var2, var3, var4; // cache
// Regular word definition code
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:
| engine kód | callstack | adatstack | szimbólumtábla -> ... <-complexwords|-> ... <- sessionstorage | src |
Alternatíva:
| engine kód | callstack | szimbólumtábla -> ... <-complexwords|adatstack-> ... <- sessionstorage | src |
| engine kód | callstack | adatstack | szimbólumtábla -> ... <-complexwords|insert_stack-> ... <- 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
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.
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!
@ -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
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!
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ó)