| Age | Commit message (Collapse) | Author |
|
(also see the one in input.e)
Force-Push: yes
Change-Id: I80910cfdb5e3de6f8b1db69a9c630a21b2f92f4a
|
|
Force-Push: yes
Change-Id: I11f3eb1079d27a7306d6ed1e8e4b9fd6fb7d3a4a
|
|
this makes it unambiguously a noun phrase
Force-Push: yes
Change-Id: Ibc24821d70aaf6bc88ae5bf5e864e5b4db94dae5
|
|
that was surprisingly involved, but it feels like the right thing to do
Change-Id: Ia2f38c7278f4237cebd0435d27131fe32dbc3718
Force-Push: yes
|
|
and a useful example one ;)
this also involved fixing the failure cases in input.e to handle EINTR correctly. it required a lot of tracing, but now the expected state of the stack is much better commented for next time.
many thanks to @cks@mastodon.social who found code in the Go compiler which had the details of what's required in regard to the restorer, which made the whole thing work, and to @snowfox@tech.lgbt who did some experimental testing around the exact requirements. both those contributions are reflected in the documentation added with this CL. additional thanks to everyone who chimed in on the fedi thread, your comments kept us going!
Force-Push: yes
Change-Id: I97fd89426bf807df5565e011d3665f7e904fa138
|
|
this turns out to be fairly involved. hex bootstrap can't come fast enough ;)
Force-Push: yes
Change-Id: Ide5d2207d745ad07c40d3c9f457cd6b491bfbcf0
|
|
with this fix, the first-generation and second-generation builds are precisely identical
it was an unused codeword in the bootstrapped docol, under the label transform, which inadvertently had a value from the host address space. the fix required some creativity.
Force-Push: yes
Change-Id: I05b373b4231fa093454fa31891784de16d81bb18
|
|
Force-Push: yes
Change-Id: I6cf15b4e37b66a04afd5af9dfd9cc3d5eb52b894
|
|
Force-Push: yes
Change-Id: I556334ea34157992d2b21306c941ad432cf41b4c
|
|
only some of that actually works, but hey, it's a start
Force-Push: yes
Change-Id: Ib82beb695be1a18de8aaaf3040b7c632851c6002
|
|
doesn't work quite yet. close :)
Force-Push: yes
Change-Id: I71b6e788790fe2ca8e07dae95e9ad6e39d0664c0
|
|
not fully tried though
Force-Push: yes
Change-Id: I19b39f2b982fde66863c710b6d458c3bd12bdf4a
|
|
the word "variable" also needed special treatment, in the same way that "keyword" did. it's not immediately clear why.
Force-Push: yes
Change-Id: I15fae39b1b9ec928281150c76260940717b8e27a
|
|
see dynamic.e, input.e, interpret.e, and flow-control.e
there were a couple things in the log-load transform that need to work in compile mode, too
Force-Push: yes
Change-Id: I7caac3b9205f36f7e082a3fd280561d67e27942c
|
|
it's in dynamic.e for now
Force-Push: yes
Change-Id: I4d0c5917eccd58cb881850faee0728d786010c27
|
|
that was a lot
Change-Id: I6ae9c371fe1fe6fd2757d20df73a748339fa89d1
Force-Push: yes
|
|
wow those were hard ones. it's very squirelly what happens when. hopefully these new and reorganized docs will make it easier to understand next time...
Force-Push: yes
Change-Id: I8f3b86900ca1794afc3e607c2180dd05ea168cc7
|
|
Force-Push: yes
Change-Id: I1fc56015d3f2510157982a4387874f99a77cdc5f
|
|
it's merged into core now. that just made the most sense... a couple of its combinators are too useful to not use once you know about them
Force-Push: yes
Change-Id: I3857f353a8603960bebbf34f24572e3d5815f0de
|
|
wow!!!!!! wow
making this work required implementing comma and keyword in the log-load transform
Force-Push: yes
Change-Id: If888d89c23389720840b49b72478e4826a15a269
|
|
also s" and ." work in the label transform, and are used to produce an important error message during the log-load routine, since we can't know whether log-loaded words exist until runtime
sweet, right?
Change-Id: I6a67139538c2cbcef40a1093202b2b4e0ad6febb
Force-Push: yes
|
|
yay
next up is to figure out why calling newly-defined docol-based words with it does not work
Force-Push: yes
Change-Id: I9c5f50d20f43ad8a15b6db58e046f1e0bb158266
|
|
having some trouble with colon
Force-Push: yes
Change-Id: I5fc0f4519bdd8de1033e24730f63296d8076782e
|
|
also said feature seems to work, which is flatly astonishing
just a little more now...
Force-Push: yes
Change-Id: I1bda7e99e524ac73a761859e86e01251e7d17525
|
|
it's more readable
Force-Push: yes
Change-Id: I4be37c18da174eb1e9016bb1199a2ff2cf93f334
|
|
yay :)
Force-Push: yes
Change-Id: Iae2e308ed8d786a9586bdc2583a6a9300282abae
|
|
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
|
|
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
|
|
it generates most of the calls to create and comma, now
Force-Push: yes
Change-Id: Ib7620dca7a5bc5dd787e940ad18cf48c2a1bd529
|
|
Force-Push: yes
Change-Id: I04dd65a9eec71f9b50c8875bdcbe5d4be59888d5
|
|
it doesn't actually output anything, but it all runs without crashing
Force-Push: yes
Change-Id: I48f2e647044df0ae3db961c747cee31a8826ecf3
|
|
Force-Push: yes
Change-Id: Ia1fe0e6aefaf6776bd69bca4a26ee0df0b555832
|
|
fixed now
also a bunch of small things towards adding a log-load transform
Force-Push: yes
Change-Id: I6eeb94d896a7e79092886d7b60e9404c31b2ba6f
|
|
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
|
|
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
|
|
Force-Push: yes
Change-Id: I45662e60c0035758a2cd57d971031eb0562eccb7
|
|
it was using the wrong value for the buffer start, messing up transform-offset
Force-Push: yes
Change-Id: I1d519b4de2df87930413ca440779337dbbe34d62
|
|
the code doesn't quite run yet, that'll be a future CL
Force-Push: yes
Change-Id: I71e6a45127c1fc37906d902e36142c17afef2a21
|
|
also some minor cleanup that ie. fixes alignment padding
Force-Push: yes
Change-Id: Ia8fcb9a44e05e37751cc1b8334aa72add7e62353
|
|
wow! yes. good. now it needs to actually generate label calls :)
Force-Push: yes
Change-Id: Ide4336e00aa6860fe55c956063303edc873c6d9b
|
|
then it crashes on warm-start because warm-start doesn't exist yet
Force-Push: yes
Change-Id: I9eba481b31d48f9d32c3790f296204c5c8d90938
|
|
Force-Push: yes
Change-Id: Ib8e8f342b7fa3773071eca36accf060f6c20f3be
|
|
this will help us process it repeatedly so that label resolution works
Force-Push: yes
Change-Id: Ibef3b473259feb2e8d89acd5d1a40a21d5ecafe9
|
|
Force-Push: yes
Change-Id: I887688e3e71143792fbdf336c9f5299c160a5ff7
|