Starting to implement lisp interpreter in assembly
This commit is contained in:
parent
e781174511
commit
b05bd83de4
|
@ -0,0 +1,33 @@
|
|||
;; A simple lisp with a precise garbage collector for cells
|
||||
|
||||
;; Start function
|
||||
:start
|
||||
LOADUI R15 $stack ; Put stack at end of program
|
||||
;; We will be using R14 for our condition codes
|
||||
;; We will be using R13 for which IO we will be using
|
||||
|
||||
;; Initialize
|
||||
CALLI R15 @garbage_init
|
||||
CALLI R15 @init_sl3
|
||||
|
||||
;; Prep TAPE_01
|
||||
LOADUI R0 0x1100
|
||||
FOPEN_READ
|
||||
|
||||
;; We first read Tape_01 until completion
|
||||
LOADUI R13 0x1100
|
||||
|
||||
;; Main loop
|
||||
:main
|
||||
CALLI R15 @garbage_collect ; Clean up unused cells
|
||||
CALLI R15 @Readline ; Read another S-expression
|
||||
CALLI R15 @parse ; Convert into tokens
|
||||
CALLI R15 @eval ; Evaluate tokens
|
||||
CALLI R15 @writeobj ; Print result
|
||||
JUMP @main ; Loop forever
|
||||
HALT ; If broken get the fuck out now
|
||||
|
||||
|
||||
|
||||
;; Stack starts at the end of the program
|
||||
:stack
|
Loading…
Reference in New Issue