X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=machine.asm;h=082934cfa75897dab0cb1a82994d391fde60862b;hb=c6fd5bdf3bae68aac49a239548c82a8d08384da8;hp=6a133a170503eef5ea54178e484d115d39904ae2;hpb=edbf715e7c803582905f6014272c6f9f3e162edc;p=rrq%2Frrqforth.git diff --git a/machine.asm b/machine.asm index 6a133a1..082934c 100644 --- a/machine.asm +++ b/machine.asm @@ -73,6 +73,7 @@ macro popr x { ;;; referring to the doer field of the called word. macro next { + call p_calltrace_DFA lodsq ; mov rax, [rsi] + add rsi,8 jmp qword [rax] ; goto code of that FORTH word (64 bit jump) } @@ -97,9 +98,12 @@ macro ENDFORTH { ;;; ======================================== ;;; The DOFORTH lays out a single FORTH call -macro DOFORTH label { +macro DOFORTH [label] { +common FORTH +forward dq label +common ENDFORTH } @@ -221,6 +225,7 @@ datastart: forward db data common + db 0 dataend: } @@ -229,6 +234,8 @@ dataend: macro BRANCH zero,label { if zero in <0> dq p_zero_branch + else if zero in <1> + dq p_true_branch else dq p_branch end if