X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=temp.asm;h=8e0be257f11e4f7bbf022d82dba366f94528141c;hb=e5fe03259bcad1abf45257971eb92de95f269b1d;hp=46a1358e85632fd4c6c41a4de1f5f8a9f443b9c2;hpb=661f002edaa942af5603d469ea28d9240c9542e2;p=rrq%2Frrqforth.git diff --git a/temp.asm b/temp.asm index 46a1358..8e0be25 100644 --- 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