changed STR>TEMP to assembler
authorRalph Ronnquist <ralph.ronnquist@gmail.com>
Fri, 11 Jun 2021 09:49:02 +0000 (19:49 +1000)
committerRalph Ronnquist <ralph.ronnquist@gmail.com>
Fri, 11 Jun 2021 09:49:02 +0000 (19:49 +1000)
temp.asm

index 46a1358e85632fd4c6c41a4de1f5f8a9f443b9c2..8e0be257f11e4f7bbf022d82dba366f94528141c 100644 (file)
--- a/temp.asm
+++ b/temp.asm
@@ -29,6 +29,7 @@ p_objecthole_initialized:
        mov qword [p_objectspace_DFA+16],0
        mov rax,qword [rsp]
 p_objecthole_from_tail:
+       ;; rax = new usage count
        mov rbx,qword [p_objectspace_DFA+16]
        mov qword [p_objectspace_DFA+16],rax
        add rbx,qword [p_objectspace_DFA+8]
@@ -36,16 +37,25 @@ p_objecthole_from_tail:
        popr rsi
        next
 
-       WORD p_str2temp,'STR>TEMP'
+       WORD p_str2temp,'STR>TEMP',fasm
        ;; ( char* n -- char* n )
        ;; Capture a given [n:char*] string as a new temp object with
        ;; leading size cell.
-       dq p_dup, p_gtR                 ; ( -- char* n ) [ n ]
-       dq p_dup, p_literal, 8, p_plus  ; ( -- char* n n+8 )
-       dq p_temp                       ; ( -- char* n  addr )
-       dq p_2dup, p_put
-       dq p_literal, 8, p_plus         ; ( -- char* n  addr+8 ) [ n ]
-       dq p_dup, p_gtR                 ; ( -- char* n  addr+8 ) [ n addr+8 ]
-       dq p_swap, p_strncpy            ; ( -- ) [ n addr+8 ]
-       dq p_Rgt, p_Rgt                 ; ( -- addr+8 n ) [ ]
-       dq p_return
+       pushr rsi
+       mov rax,qword [rsp]
+       add rax,8
+       push rax
+       DOFORTH p_temp          ; ( -- char* n  addr )
+       pop rax
+       pop rbx
+       mov qword[rax],rbx
+       add rax,8
+       pop rcx
+       push rax
+       push rbx
+       push rcx
+       push rax
+       push rbx                ; ( -- addr n char* addr n )
+       DOFORTH p_strncpy
+       popr rsi
+       next