diff options
| author | Irene Knapp <ireneista@irenes.space> | 2026-05-19 03:01:28 -0700 |
|---|---|---|
| committer | Irene Knapp <ireneista@irenes.space> | 2026-05-19 03:01:28 -0700 |
| commit | 03a53307353dafb19fd9c31e4573a91e4ab4d71f (patch) | |
| tree | 572ec4494f0605374ae0d131615aae4728a58954 | |
| parent | ebd8be68201201fd86fc4a4e4e0a535738af86bd (diff) | |
log-load-variable and label-keyword-alternate work now
yay :) Force-Push: yes Change-Id: Iae2e308ed8d786a9586bdc2583a6a9300282abae
| -rw-r--r-- | core.e | 17 | ||||
| -rw-r--r-- | log-load.e | 6 | ||||
| -rw-r--r-- | transform.e | 4 |
3 files changed, 21 insertions, 6 deletions
diff --git a/core.e b/core.e index 0390812..8c14948 100644 --- a/core.e +++ b/core.e @@ -1180,3 +1180,20 @@ here ! ~ (input point, alignment byte count -- input point) : unpackalign align-size ; + +~ Development utilities +~ ~~~~~~~~~~~~~~~~~~~~~ + +~ This peforms the "hlt" instruction (Intel's mnemomic, short for "halt"), +~ which will cause the program to exit with a segmentation fault. If you're +~ running under a debugger, this is a convenient way to get execution to stop +~ at a certain point. +~ +~ It's called "crash" rather than "hlt" to distinguish it from the word +~ which outputs the instruction as machine code. + +: crash + [ here @ + hlt + here ! ] ;asm + diff --git a/log-load.e b/log-load.e index 100211c..2c82d9f 100644 --- a/log-load.e +++ b/log-load.e @@ -263,16 +263,14 @@ 3roll swap log-load-create ~ (address for new variable word, log address) - log-load-here 3unroll + log-load-here swap 3unroll ~ (log address, address for new variable word, here) dup @ ~ (log address, address for new variable word, here, output point) dup 8 + pack64 - 3roll - :rax - mov-reg64-imm64 + 3roll :rax mov-reg64-imm64 ~ (log address, here, output point) :rax push-reg64 diff --git a/transform.e b/transform.e index 0c39489..7952152 100644 --- a/transform.e +++ b/transform.e @@ -418,8 +418,8 @@ allocate-transform-state s" transform-state" variable here @ dup ~ (self execution token, output point) - dup 8 + pack64 - swap :rax mov-reg64-imm64 + dup 8 + host-address-space-to-target pack64 + swap host-address-space-to-target :rax mov-reg64-imm64 ~ (output point) :rax push-reg64 pack-next |