File tree Expand file tree Collapse file tree 6 files changed +255
-188
lines changed
Expand file tree Collapse file tree 6 files changed +255
-188
lines changed Original file line number Diff line number Diff line change 5656
5757(define check:offset
5858 (λ (r i n)
59- (unless (register? r)
60- (error n "expects register as first argument; given ~v " r))
59+ (unless (or ( register? r) (label? r) )
60+ (error n "expects register or label as first argument; given ~v " r))
6161 (unless (exact-integer? i)
6262 (error n "expects exact integer as second argument; given ~v " i))
6363 (values r i)))
7272 (λ (dst x n)
7373 (unless (or (register? dst) (offset? dst))
7474 (error n "expects register or offset; given ~v " dst))
75- (unless (label? x)
76- (error n "expects label; given ~v " x))
75+ (unless (or ( label? x) (offset? x) )
76+ (error n "expects label or offset ; given ~v " x))
7777 (values dst x)))
7878
7979(define check:none
Original file line number Diff line number Diff line change 1616 [(? reg?) (reg->string a)]
1717 [(? integer?) (number->string a)]
1818 [(Offset (? reg? r) i)
19- (string-append "[ " (reg->string r) " + " (number->string i) "] " )]))
19+ (string-append "[ " (reg->string r) " + " (number->string i) "] " )]
20+ [(Offset (? label? l) i)
21+ (string-append "[ " (symbol->string l) " + " (number->string i) "] " )]))
2022
2123;; Any -> Boolean
2224(define (reg? x)
123125 [(Pop r)
124126 (string-append tab "pop "
125127 (reg->string r))]
128+ [(Lea d (? offset? x))
129+ (string-append tab "lea "
130+ (arg->string d) ", "
131+ (arg->string x))]
126132 [(Lea d x)
127133 (string-append tab "lea "
128134 (arg->string d) ", [rel "
Original file line number Diff line number Diff line change 150150;; Prog -> Prog
151151(define (desugar e+)
152152 (match e+
153+ [(Prog '() e) (Prog '() (desugar e))]
153154 [(Prog ds e) (let ((defs (map desugar ds)))
154155 (Prog '() (LetRec defs e)))]
155156 [(Defn f xs e) (list f (Lam f xs e))]
You can’t perform that action at this time.
0 commit comments