X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=memory.asm;h=a20c438971de084a45e52219c153a79e9a556753;hb=6bc4412f0b30989d7e4a4621a0124ada694d448c;hp=4fe4772f76c38b3652e4308b1941ca1871541b27;hpb=dde72a74dda4836bbce74d39bf869ac3b0c0cef1;p=rrq%2Frrqforth.git diff --git a/memory.asm b/memory.asm index 4fe4772..a20c438 100644 --- a/memory.asm +++ b/memory.asm @@ -70,9 +70,9 @@ ;; ( addr -- v ) ;; Load the (unsigned) byte v from address addr. pop rax - mov bl,[rax] - push 0 - mov [rsp],bl + xor rbx,rbx + mov bl,byte [rax] + push rbx next WORD p_Cput, 'C!',fasm @@ -83,6 +83,40 @@ mov byte [rax], bl next + WORD p_Wget, 'W@',fasm + ;; ( addr -- v ) + ;; Load the (unsigned) double-byte v from address addr. + pop rax + xor rbx,rbx + mov bx,word [rax] + push rbx + next + + WORD p_Wput, 'W!',fasm + ;; ( v addr -- ) + ;; Store byte value v at address addr. + pop rax + pop rbx + mov word [rax], bx + next + + WORD p_Dget, 'D@',fasm + ;; ( addr -- v ) + ;; Load the (unsigned) double-byte v from address addr. + pop rax + xor rbx,rbx + mov ebx,dword [rax] + push rbx + next + + WORD p_Dput, 'D!',fasm + ;; ( v addr -- ) + ;; Store byte value v at address addr. + pop rax + pop rbx + mov dword [rax], ebx + next + WORD p_2get, '2@',fasm ;; ( addr -- v2 v1 ) ;; Load the cell pair {v1,v2} from address addr. @@ -127,7 +161,7 @@ p_erase_last: ;; Add n to the value at addr. pop rbx pop rax - add [rax],rbx + add qword [rax],rbx next WORD p_shift_left, '<<',fasm