+ WORD p_dofasm,'doFASM',dovariable
+ ;; Execution semantics for assembly words.
+dofasm:
+ add rax,8
+ jmp rax
+
+ WORD p_doforth,'doFORTH',dovariable ;
+ ;; Execution semantics for FORTH defition word.
+doforth:
+ pushr rsi
+ lea rsi, [rax+8] ; rsi = the DFA of the rax word
+ next
+
+ WORD p_dodoes,'doDOES',dovariable
+ ;; Execution semantics for DOES>
+ ;; [cfa-8] holds the adjustment offset ("does offset")
+dodoes:
+ pushr rsi
+ lea rsi, [rax+8] ; rsi = the DFA of the rax word
+ add rsi,qword [rax-8] ; adjust rsi by the "does offset'
+ next
+
+ WORD p_dovariable,'doVARIABLE',dovariable
+ ;; Execution semantics for a variable ( -- addr )
+ ;; rax points to CFA field
+dovariable:
+ lea rax, [rax+8] ; rsi = the DFA of the rax word
+ push rax
+ next
+
+ WORD p_dovalue,'doVALUE',dovariable
+ ;; Execution semantics for a value constant ( -- v )
+ ;; rax points to CFA field
+dovalue:
+ lea rax, [rax+8] ; rsi = the DFA of the rax word
+ push qword [rax]
+ next
+
+ WORD p_dostring,'doSTRING',dovariable
+ ;; Execution semantics for a string constant ( -- addr n )
+ ;; rax points to CFA field
+dostring:
+ lea rax, [rax+8] ; rsi = the DFA of the rax word
+ pushpname rax
+ next
+
+ WORD p_dowordlist,'doWORDLIST',dovariable
+ ;; Execution semantics for DOES>
+ ;; [cfa-8] holds the adjustment offset ("does offset")
+dowordlist:
+ pushr rsi
+ lea rsi, [rax+8] ; rsi = the DFA of the rax word
+ add rsi,qword [rax-8] ; adjust rsi by the "does offset'
+ next