diff options
| author | Irene Knapp <ireneista@irenes.space> | 2026-05-07 19:08:51 -0700 |
|---|---|---|
| committer | Irene Knapp <ireneista@irenes.space> | 2026-05-07 19:08:51 -0700 |
| commit | f206829ac1a58a27657e1c264aabdd2cc760ff28 (patch) | |
| tree | c5591469171a6d1e689a3947eadf1d9d8daf65d3 | |
| parent | 0c7e96417a3691f59807243a9841c6f5e631edfa (diff) | |
add new words L@' and L!'
wow it feels strange having a clear meaning associated with line noise like that Force-Push: yes Change-Id: If3d101234a9b8798c88f6b90090479b2866f5406
| -rw-r--r-- | labels.e | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/labels.e b/labels.e index 9c91fb6..6ece87e 100644 --- a/labels.e +++ b/labels.e @@ -53,16 +53,6 @@ init-labels dup { swap drop } { drop dup new-label labels swap find-in } if-else ; -: L' - word value@ - interpreter-flags @ 0x01 & - { ' litstring entry-to-execution-token , - here @ swap packstring 0 pack8 8 packalign here ! - ' intern-label entry-to-execution-token , - dropstring } - { intern-label dropstring-with-result } if-else - ; make-immediate - ~ (label entry pointer -- label value) : use-label ~ If it hasn't been defined yet, mark it used-before-set. @@ -98,6 +88,31 @@ init-labels ~ -- output memory start, current output point, offset) : current-offset 2dup swap - ; +: L' + word value@ + interpreter-flags @ 0x01 & + { ' litstring entry-to-execution-token , + here @ swap packstring 8 packalign here ! + ' intern-label entry-to-execution-token , + dropstring } + { intern-label dropstring-with-result } if-else + ; make-immediate + +: L@' + ' L' entry-to-execution-token execute + interpreter-flags @ 1 & + { ' use-label entry-to-execution-token , } + { use-label } if-else + ; make-immediate + +: L!' + ' L' entry-to-execution-token execute + interpreter-flags @ 1 & + { ' set-label entry-to-execution-token , } + { set-label } if-else + ; make-immediate + + ~ For a label to have "converged", at least one of the following must be true: ~ ~ 1. The label must never have been used (bit zero clear); |