X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=machine.asm;h=90310145359539274faf91e6aece21e0fffb4e00;hb=43ce8fb4d65924e1bcf21cac510f8e48fc1d451d;hp=8da016a7854214740c82e0957facbba3b3636520;hpb=86231a519d2f4966c99091d4aa532b2c4e05b1fa;p=rrq%2Frrqforth.git diff --git a/machine.asm b/machine.asm index 8da016a..9031014 100644 --- a/machine.asm +++ b/machine.asm @@ -153,7 +153,7 @@ label: dq doforth else if doer in - dq label#_DFA + dq dofasm ; label#_DFA else dq doer end if @@ -165,10 +165,17 @@ label#_DFA: macro tfa2cfa reg { mov reg,qword [reg+8] } +macro tfa2does reg { + tfa2cfa reg + sub reg,8 +} macro tfa2dfa reg { tfa2cfa reg add reg,8 } +macro tfa2flags reg { + add reg,16 +} macro tfa2pfa reg { add reg,24 } @@ -218,3 +225,13 @@ common dataend: } +;;; ======================================== +;;; The BRANCH macro lays out FORTH words BRANCH and 0BRANCH with offset +macro BRANCH zero,label { + if zero in <0> + dq p_zero_branch + else + dq p_zero_branch + end if + dq label - $ - 8 +}