Skip to content

Commit 0266aad

Browse files
committed
A little clean-up.
1 parent f0bf582 commit 0266aad

3 files changed

Lines changed: 14 additions & 11 deletions

File tree

langs/dupe/compile.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
(let ((l1 (gensym 'if))
3434
(l2 (gensym 'if)))
3535
(seq (compile-e e1)
36-
(Cmp rax val-false)
36+
(Cmp rax (value->bits #f))
3737
(Je l1)
3838
(compile-e e2)
3939
(Jmp l2)

langs/dupe/interp-bits.rkt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#lang racket
22
(provide interp interp-bits)
3-
(require "ast.rkt" "types.rkt")
3+
(require "ast.rkt" "types.rkt" "interp-prim-bits.rkt")
44

55
;; Expr -> Value
66
(define (interp e)
@@ -11,16 +11,9 @@
1111
(match e
1212
[(Int i) (value->bits i)]
1313
[(Bool b) (value->bits b)]
14-
[(Prim1 'add1 e0)
15-
(+ (interp-bits e0) (value->bits 1))]
16-
[(Prim1 'sub1 e0)
17-
(- (interp-bits e0) (value->bits 1))]
18-
[(Prim1 'zero? e)
19-
(if (zero? (interp-bits e))
20-
val-true
21-
val-false)]
14+
[(Prim1 p e)
15+
(interp-prim1-bits p (interp-bits e))]
2216
[(If e1 e2 e3)
2317
(if (= (interp-bits e1) val-false)
2418
(interp-bits e3)
2519
(interp-bits e2))]))
26-

langs/dupe/interp-prim-bits.rkt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#lang racket
2+
(require "types.rkt")
3+
(provide interp-prim1-bits)
4+
5+
;; Op Bits -> Bits
6+
(define (interp-prim1-bits op b)
7+
(match op
8+
['add1 (+ b (value->bits 1))]
9+
['sub1 (- b (value->bits 1))]
10+
['zero? (= b (value->bits 0))]))

0 commit comments

Comments
 (0)