X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;ds=sidebyside;f=compile.asm;h=e7f3090b819e18501875807d5f81d2133d9690b9;hb=e3bafa8476bd19b7dd05c6a31ad43a1aa45565b7;hp=ff5d853421005525e02035f3374abadc0a890390;hpb=0391d16ece3a9f4d7d023ae1f0be610b8a915fc3;p=rrq%2Frrqforth.git diff --git a/compile.asm b/compile.asm index ff5d853..e7f3090 100644 --- a/compile.asm +++ b/compile.asm @@ -57,15 +57,41 @@ p_quote_end: ;; Compile down " LIT value " dq p_literal, p_literal, p_comma,p_quote, p_comma, p_return - WORD p_comma,',' - ;; ( v -- ) - ;; Put cell value onto the heap and advance "HERE" - dq p_here, p_literal, 8, p_get_n_increment, p_put, p_return + WORD p_Ccomma,'C,',fasm + ;; ( c -- ) + ;; Put byte value onto the heap and advance "HERE" + mov rax,qword [p_here_DFA] + pop rbx + mov byte [rax],bl + inc qword [p_here_DFA] + next - WORD p_Ccomma,'C,' + WORD p_Wcomma,'W,',fasm ;; ( c -- ) ;; Put byte value onto the heap and advance "HERE" - dq p_here, p_Cput, p_literal, 1, p_here, p_put_plus, p_return + mov rax,qword [p_here_DFA] + pop rbx + mov word [rax],bx + add qword [p_here_DFA],2 + next + + WORD p_Dcomma,'D,',fasm + ;; ( d -- ) + ;; Put byte value onto the heap and advance "HERE" + mov rax,qword [p_here_DFA] + pop rbx + mov dword [rax],ebx + add qword [p_here_DFA],4 + next + + WORD p_comma,',',fasm + ;; ( v -- ) + ;; Put byte value onto the heap and advance "HERE" + mov rax,qword [p_here_DFA] + pop rbx + mov qword [rax],rbx + add qword [p_here_DFA],8 + next WORD p_does,"DOES>",fasm,IMMEDIATE ;; ( -- )