Lucas Stadler лет назад: 8
Родитель
Сommit
a0f886344a
2 измененных файлов с 4 добавлено и 5 удалено
  1. 1 2
      scm/inc/compiler.scm
  2. 3 3
      scm/inc/tests.scm

+ 1 - 2
scm/inc/compiler.scm

1
;; assembly resources:
1
;; assembly resources:
2
;;  - https://en.wikipedia.org/wiki/X86_instruction_listings
2
;;  - https://en.wikipedia.org/wiki/X86_instruction_listings
3
4
(define (emit instr . args)
3
(define (emit instr . args)
5
  (display "\t")
4
  (display "\t")
6
  (display (apply format instr args))
5
  (display (apply format instr args))
69
        (emit-compare))
68
        (emit-compare))
70
       ((char?)
69
       ((char?)
71
        (emit-expr (primcall-operand1 x))
70
        (emit-expr (primcall-operand1 x))
72
        (emit "andl $~a, %eax" #b00001111)
71
        (emit "andl $~a, %eax" #b11111111)
73
        (emit "cmpl $~a, %eax" #b00001111)
72
        (emit "cmpl $~a, %eax" #b00001111)
74
        (emit-compare))
73
        (emit-compare))
75
       ((boolean?)
74
       ((boolean?)

+ 3 - 3
scm/inc/tests.scm

96
    ["(char? 1412)" "#f\n"]
96
    ["(char? 1412)" "#f\n"]
97
    ["(char? 10)" "#f\n"]
97
    ["(char? 10)" "#f\n"]
98
    ["(char? -1421)" "#f\n"]
98
    ["(char? -1421)" "#f\n"]
99
    ;["(char? #t)" "#f\n"]
100
    ;["(char? #f)" "#f\n"]
101
    ;["(char? ())" "#f\n"]
99
    ["(char? #t)" "#f\n"]
100
    ["(char? #f)" "#f\n"]
101
    ["(char? ())" "#f\n"]
102
    ])
102
    ])