X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=machine.asm;h=f1fb51c9015e4dc7533df6596915982f36cbf87d;hb=2970d5d687c74fc8d2f036300220005c4ee0603a;hp=7f65bbeb130390cd6f96121a65be3046275e5f6f;hpb=e086c1738e84f6952008d1d2efa4e36b31b061b3;p=rrq%2Frrqforth.git diff --git a/machine.asm b/machine.asm index 7f65bbe..f1fb51c 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 } @@ -234,3 +238,15 @@ macro BRANCH zero,label { end if dq label - $ - 8 } + +;;; ======================================== +;;; The STREAM macro starts an in-core FORTH STREAM area. See WORD +;;; STREAM for details. + macro STREAM endlabel { + local datastart + dq $+32 + dq -1 + dq endlabel - datastart + dq 0 +datastart: + }