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; 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ó)