diff --git a/BASED.md b/BASED.md index 2356f8d..7bc4c5e 100644 --- a/BASED.md +++ b/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; 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ó)