added a few operations and expanded standard library
This commit is contained in:
14
codegen.lisp
14
codegen.lisp
@@ -313,7 +313,8 @@
|
||||
|
||||
;; ( -- a)
|
||||
(defop (push-int a) (:lex nil :targets :nasm)
|
||||
("push ~d" a))
|
||||
("mov rax, ~a" a)
|
||||
("push rax"))
|
||||
|
||||
(defop (push-str len addr str) (:lex nil :targets :nasm)
|
||||
(progn (:write ("push ~d" len)
|
||||
@@ -359,6 +360,17 @@
|
||||
(:write ("pop ~a" (aref call-regs i)))
|
||||
(finally (:write "syscall"))))
|
||||
|
||||
(defop divmod (:targets :nasm)
|
||||
"mov rdx, 0"
|
||||
(rax rcx -- )
|
||||
"div rcx"
|
||||
(-- rax rdx))
|
||||
|
||||
(defop * (:targets :nasm)
|
||||
(rbx rax -- )
|
||||
"mul rbx"
|
||||
( -- rax))
|
||||
|
||||
(defun gen-dump (str)
|
||||
(format str "~{~a~%~}"
|
||||
'("dump:"
|
||||
|
||||
Reference in New Issue
Block a user