2020-04-15 00:04:09 +10:00
|
|
|
Compilation vs meta-compilation
|
|
|
|
|
|
|
|
Compilation vs meta-compilation. When you compile a word with
|
2020-06-10 12:55:42 +10:00
|
|
|
"[COMPILE] foo", it's straightforward: It writes the address
|
|
|
|
of word foo to HERE.
|
2020-04-15 00:04:09 +10:00
|
|
|
|
|
|
|
When you *meta* compile, it's a bit more mind blowing. It
|
|
|
|
fetches the address of the word specified by the caller, then
|
|
|
|
writes that number as a literal, followed by a reference to
|
|
|
|
",".
|
|
|
|
|
|
|
|
Example: ": foo [COMPILE] bar;" is the equivalent of ": foo bar
|
|
|
|
;" if bar is not an immediate. However, ": foo COMPILE bar ;"
|
|
|
|
is the equivalent of ": foo ['] bar , ;". Got it?
|
2020-06-12 08:12:01 +10:00
|
|
|
|
|
|
|
|