summary refs log tree commit diff
AgeCommit message (Collapse)Author
21 hourslog-load-variable and label-keyword-alternate work nowIrene Knapp
yay :) Force-Push: yes Change-Id: Iae2e308ed8d786a9586bdc2583a6a9300282abae
23 hoursyessssssssIrene Knapp
so okay, now all the machine code stuff is implemented and it builds without crashing the generated executable still crashes though, but this was enough work that it's getting a celebratory check-in Force-Push: yes Change-Id: I201e6912253647da58ef3537c735b478b0dca9fb
31 hoursokay there's a strat for making the here/latest variables nowIrene Knapp
it doesn't work yet, but it's gonna the reason it doesn't work is that the new helper log-load-variable relies on the assembly-definition words being statically available, and they aren't yet that's fine though, this is still a huge change, worth checking in. why? well, it represents like 16 hours of debugging which culminated in some very minor changes to the semantics of the label transform, in order to make missing words easier to notice and debug. see comments for details. woooooo :D Force-Push: yes Change-Id: Id8334819d165ba9e3156ef2bf32008af748eac29
2 daysmore progress on the log-load transformIrene Knapp
it generates most of the calls to create and comma, now Force-Push: yes Change-Id: Ib7620dca7a5bc5dd787e940ad18cf48c2a1bd529
2 daysimplement log-load-create; add all the pack/unpack stuff to core.eIrene Knapp
Force-Push: yes Change-Id: I04dd65a9eec71f9b50c8875bdcbe5d4be59888d5
3 daysthe skeleton of the log-load transform is in place nowIrene Knapp
it doesn't actually output anything, but it all runs without crashing Force-Push: yes Change-Id: I48f2e647044df0ae3db961c747cee31a8826ecf3
3 daysimplement more internal wordsIrene Knapp
Force-Push: yes Change-Id: I273879e9d05260db0603bc5a36970e240f3e366a
3 daysadd a stub for the log-load transform, and a ton of documentationIrene Knapp
Force-Push: yes Change-Id: Ia1fe0e6aefaf6776bd69bca4a26ee0df0b555832
3 daysah, oops, there was a bug in the label transform for compiled wordsIrene Knapp
fixed now also a bunch of small things towards adding a log-load transform Force-Push: yes Change-Id: I6eeb94d896a7e79092886d7b60e9404c31b2ba6f
4 daysword labels are now stored as offsetsIrene Knapp
also, the various address spaces in use are described better, and there's helper functions to convert between them. Force-Push: yes Change-Id: Idb56d2b6299d6e7071c9d42b2eb1138b17b85c69
4 daysit WORKS. WOW. nice.Irene Knapp
more specifically, a generated hello-world that uses cold- and warm-start, and both assembly and Forth words, correctly calls the kernel's exit() with a parameter provided by a literal. Force-Push: yes Change-Id: I9a08f9cdad6bd0037a41655eecff6debea5f9ac3
4 daysit's much closer, most of the labels work correctly nowIrene Knapp
Force-Push: yes Change-Id: I45662e60c0035758a2cd57d971031eb0562eccb7
4 daysthe next-entry pointers in the generated dictionary work nowIrene Knapp
it was using the wrong value for the buffer start, messing up transform-offset Force-Push: yes Change-Id: I1d519b4de2df87930413ca440779337dbbe34d62
4 daysmake the label transformation work all the way, no crashingIrene Knapp
the code doesn't quite run yet, that'll be a future CL Force-Push: yes Change-Id: I71e6a45127c1fc37906d902e36142c17afef2a21
4 daysdocument the assumptions between labels and transformsIrene Knapp
also some minor cleanup that ie. fixes alignment padding Force-Push: yes Change-Id: Ia8fcb9a44e05e37751cc1b8334aa72add7e62353
4 daystransform runs inside the label loop now, and is able to do compilationIrene Knapp
wow! yes. good. now it needs to actually generate label calls :) Force-Push: yes Change-Id: Ide4336e00aa6860fe55c956063303edc873c6d9b
5 daysfix things up so it gets through cold-startIrene Knapp
then it crashes on warm-start because warm-start doesn't exist yet Force-Push: yes Change-Id: I9eba481b31d48f9d32c3790f296204c5c8d90938
5 daysnow there's a concept of pushing and popping input sourcesIrene Knapp
Force-Push: yes Change-Id: Ib8e8f342b7fa3773071eca36accf060f6c20f3be
5 daysadd a next-source field, as-yet unused, to the input buffer metadataIrene Knapp
this will support transformations Force-Push: yes Change-Id: I741e8f18eef456c836d8eb1b01ec4463a6c8898c
7 dayscopy input to a memory bufferIrene Knapp
this will help us process it repeatedly so that label resolution works Force-Push: yes Change-Id: Ibef3b473259feb2e8d89acd5d1a40a21d5ecafe9
7 daysrough draft of some code that transforms other code for bootstrappingIrene Knapp
Force-Push: yes Change-Id: I887688e3e71143792fbdf336c9f5299c160a5ff7
8 daysoops, right, syntax highlighting for ;asmIrene Knapp
forgot to check this in Force-Push: yes Change-Id: Ief7c6da623cffb538f5802480d4c3432614d9846
8 daysbackport the evoked "create" to flatassemblerIrene Knapp
this lets us have immediate-mode string literals as parameters without having to worry about how fully bootstrapped we are Force-Push: yes Change-Id: I18510de6f916898e411b406959ba0eab7fccb319
8 daysimplement all the core Forth stuff in Evocation-assemblyIrene Knapp
also, add support for ;asm and stuff Force-Push: yes Change-Id: I904bc0c31e7e4c8b0abc7790f3af5d20c275f2a5
10 daysdefined interpreter-stateIrene Knapp
that was quite some debugging. the write-up is still in progress (see the TODO) Force-Push: yes Change-Id: Ia1494bcde2b66e82efe8598899e93bdff60841d4
10 daysimplement more stuff in interpret.eIrene Knapp
it depended on the execution-model stuff, for the "next" macro. in general, any word implemented in assembly will depend on that. so, the execution stuff is moved into its own file, leaving evoke.e with only the job of bringing everything together. that's a little disappointing because talking about the execution model seems like a good introduction to the whole topic, but perhaps the problem can be solved down the line with literate programming... Force-Push: yes Change-Id: Ic2fe22dcc39980ef75763ae293e41024abc8ba38
10 daysa minor documentation error in the word header formatIrene Knapp
oops - the last CL was supposed to fix this, but it was inadvertently left out Force-Push: yes Change-Id: I4edf5abed315bea51abcd98ad67cd28782a62efe
10 daysimplement "create" in interpret.eIrene Knapp
memmove never had a heap-based implementation, probably due to excessive hurrying when it was first written. it has now been added. it's identical to the original static implementation. a minor documentation error in evoke.e was discovered while coding this, and is now fixed. Force-Push: yes Change-Id: I55ff09712a992410167a53cd83e96a452ed49744
10 daysimplement more of the interpeter, and add some documentationIrene Knapp
Force-Push: yes Change-Id: I33ad8783283643ca4977ab19c378156436707687
12 daysadd a rough draft of a self-hosted "interpret"Irene Knapp
Force-Push: yes Change-Id: I063232ca7d840237f53dc805bc896c7b452cedc8
12 dayshandle more cases in the vim syntaxIrene Knapp
Force-Push: yes Change-Id: I82794426013d33715decd2c86e00fe2367aab7c8
12 daysadd a rough draft of a self-hosted evokeIrene Knapp
Force-Push: yes Change-Id: Icf69cdfe7cf31fda07031bbc848c3ce2acb8cca1
12 daysoops, also needed mov-reg64-disp32-reg64Irene Knapp
Force-Push: yes Change-Id: I352537e52cb12d1c96f84cdaa794bd854d8ab1aa
12 daysformatting changesIrene Knapp
Force-Push: yes Change-Id: Iba125ccfd005151822d31af050ea3b4e2907d853
12 daysoops. didn't have a fully bootstrapped lea-reg64-disp32-reg64.Irene Knapp
the cold-start routine needs it... Force-Push: yes Change-Id: I6c0d80fc2bbb634f4b25aa96bd4ed5351361b8c9
12 daysadd a vim syntaxIrene Knapp
it was time. it was really impressively broken without one. Force-Push: yes Change-Id: Id26c551dcf43b37577ac96796627b6658a040cf4
12 daysdocument labels.e; also clean up elf.eIrene Knapp
the documentation in labels.e is entirely new, synthesized from informal private discussions. this is also intended as a final pass to make sure all the comments and nuances in the ELF code from quine.asm are incorporated in elf.e. also this uses the new `L@'` and `L!'` facilities for terseness Force-Push: yes Change-Id: Ieabb2bb26f4b83260f0072dcdcd0950f9aa9fab2
12 daysadd new words L@' and L!'Irene Knapp
wow it feels strange having a clear meaning associated with line noise like that Force-Push: yes Change-Id: If3d101234a9b8798c88f6b90090479b2866f5406
12 daysrefactored the label code and ELF template into their own filesIrene Knapp
nice, right? :) modular programming! :D Force-Push: yes Change-Id: I56dd219fd2147850a0bb5b4a8cb3f9760e787215
12 dayscompute the fixed point of the label addressesIrene Knapp
yay this is everything important that flatassembler was doing for us, so now it's time to rewrite Evocation itself, wow! Force-Push: yes Change-Id: Ifc2a901801d3edcc6d81b063a0a7c3efacdd255e
13 daysmake-hello.e works nowIrene Knapp
wow did labels turn out to be handy Force-Push: yes Change-Id: Iba8d57aed2e5baab5df44b94cdc1d57891b846a9
13 daysa comprehensive label system is now implementedIrene Knapp
it doesn't actually resolve their real values yet though Change-Id: Ib8fa0f73dfa37ec9e593f5cf17adc825a42ba53b Force-Push: yes
13 days"word" no longer consumes the terminating whitespaceIrene Knapp
this fixes a "bug" where a "~" as the last thing on a line would comment the following line this is a user-visible API change, but the only thing that needed to be modified right now was s" Force-Push: yes Change-Id: Iad062581dfdd8603ab75d58b1ca304ea6eb55c37
13 daysrefactor key into the separate parts peek and consumeIrene Knapp
Change-Id: I203ec08f02bff6f3fc7c82e359941449ca02a04c Force-Push: yes
2026-05-04implement create-in which is used for independent dictionariesIrene Knapp
also some important TODOs have been discovered Force-Push: yes Change-Id: I8efe7d0074700d6f5c78d4a591e5b590f57f47a9
2026-05-04add an exploration towards moving code generation to its own fileIrene Knapp
this is re-tracing some steps from way back in the beginning, to see what they look like in a post-flatassembler context :) it doesn't, like, do anything yet, other than print out some introspection Force-Push: yes Change-Id: I8913edffc075de313870367ef56278b1c8f50a06
2026-05-04make it slightly more readable lolIrene Knapp
Force-Push: yes Change-Id: I19a63a15b0058393719c0903bcabbb9b1389e2a1
2026-05-04add a program in Evocation which outputs itself (yay :))Irene Knapp
Force-Push: yes Change-Id: Ifda674d7bdd6243bf879ad5964b56791c6f33b90
2026-05-04octal and binary literalsIrene Knapp
that was easy :) Force-Push: yes Change-Id: I43933b373566d83e1c8a7dd12f5e7d203952fcc2
2026-05-04hexadecimal literals are implemented!Irene Knapp
yay they use C-style syntax. also, the number lexing code is better organized now. Force-Push: yes Change-Id: Ibe28ba553e4970e76eb562dddd4e2387ba0090f4