p_abs_end:
next
+ WORD p_max, 'MAX',fasm
+ ;; ( a b -- c )
+ ;; c is the least a and b
+ pop rax
+ cmp rax,qword [rsp]
+ jle p_max_end
+ mov qword [rsp],rax
+p_max_end:
+ next
+
+ WORD p_min, 'MIN',fasm
+ ;; ( a b -- c )
+ ;; c is the least a and b
+ pop rax
+ cmp rax,qword [rsp]
+ jge p_min_end
+ mov qword [rsp],rax
+p_min_end:
+ next
+
WORD p_negate, 'NEGATE',fasm
;; ( n1 -- n2 )
;; Negate n1, giving its arithmetic inverse n2.
WORD p_divmod,'/MOD',fasm
;; ( x y -- q r )
- ;; divide signed x/y giving quotient q and reminder r
+ ;; divide signed x/y giving quotient q and remainder r
pop rbx
pop rax
xor rdx,rdx
push rdx
next
+ WORD p_div,'/',fasm
+ ;; ( x y -- q )
+ ;; divide signed x/y giving quotient q and discard remainder
+ pop rbx
+ pop rax
+ xor rdx,rdx
+ idiv rbx
+ push rax
+ next
+