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;
|
||||
|
||||
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ó)
|
||||
|
Loading…
x
Reference in New Issue
Block a user