push rax
next
+ WORD p_cfa2tfa,'CFA>TFA',fasm
+ ;; ( cfa -- tfa )
+ pop rax
+ cfa2tfa rax
+ push rax
+ next
+
WORD p_cfa2flags_get,'CFA>FLAGS@',fasm
;; ( cfa -- flags )
pop rax
;; ( 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
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.
;; Add n to the value at addr.
pop rbx
pop rax
- add [rax],rbx
+ add qword [rax],rbx
next
WORD p_shift_left, '<<',fasm