added bit shifts (<< >>), bitand (&), bitor (|), rot, over, swap ops

This commit is contained in:
2024-07-30 22:38:29 +03:00
parent 7562c4b30b
commit 7f6bb99e08
2 changed files with 63 additions and 5 deletions

View File

@@ -147,6 +147,58 @@
(:write ("pop ~a" (aref call-regs i)))
(finally (:write "syscall"))))
;;; (rbx rax -- rbx rax rbx)
(defop üst ()
"pop rax"
"pop rbx"
"push rbx"
"push rax"
"push rbx")
;;; (rcx rbx rax -- rbx rax rcx)
(defop rot ()
"pop rax"
"pop rbx"
"pop rcx"
"push rbx"
"push rax"
"push rcx")
;;; (rbx rax -- rax rbx)
(defop değiş ()
"pop rax"
"pop rbx"
"push rax"
"push rbx")
;;; (rbx rcx -- (:shl rbx cl))
(defop << ()
"pop rcx"
"pop rbx"
"shl rbx, cl"
"push rbx")
;;; (rbx rcx -- (:shr rbx cl))
(defop >> ()
"pop rcx"
"pop rbx"
"shr rbx, cl"
"push rbx")
;;; (rbx rcx -- (:or rbx cl))
(defop "|" ()
"pop rax"
"pop rbx"
"or rbx, rax"
"push rbx")
;;; (rbx rcx -- (:and rbx cl))
(defop & ()
"pop rax"
"pop rbx"
"and rbx, rax"
"push rbx")
(defun gen-header (op str)
(format str " ;; -- ~s --~%" op))