File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44
55(define rax 'rax ) ; return
66(define rdi 'rdi ) ; arg
7- (define r8 'r8 ) ; scratch in +, -
87(define r9 'r9 ) ; scratch in assert-type
98
109;; Op0 -> Asm
5655 (Call 'write_byte )
5756 (Mov rax val-void))]))
5857
59- ;; Op2 -> Asm
60- (define (compile-op2 p)
61- (match p
62- ['+
63- (seq (Pop r8)
64- (assert-integer r8)
65- (assert-integer rax)
66- (Add rax r8))]
67- ['-
68- (seq (Pop r8)
69- (assert-integer r8)
70- (assert-integer rax)
71- (Sub r8 rax)
72- (Mov rax r8))]))
7358
7459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7560
Original file line number Diff line number Diff line change 4747 (seq (compile-e e)
4848 (compile-op1 p)))
4949
50- ;; Op2 Expr Expr -> Asm
51- (define (compile-prim2 p e1 e2)
52- (seq (compile-e e1)
53- (Push rax)
54- (compile-e e2)
55- (compile-op2 p)))
56-
5750;; Expr Expr Expr -> Asm
5851(define (compile-if e1 e2 e3)
5952 (let ((l1 (gensym 'if ))
You can’t perform that action at this time.
0 commit comments