|
|
|
|
|
|
37
|
(emit "movl $0, %eax") ; zero %eax to put the result of the comparison into
|
37
|
(emit "movl $0, %eax") ; zero %eax to put the result of the comparison into
|
|
38
|
(emit "sete %al") ; set low byte of %eax to 1 if cmp succeeded
|
38
|
(emit "sete %al") ; set low byte of %eax to 1 if cmp succeeded
|
|
39
|
(emit "sall $~a, %eax" boolean-shift) ; construct correctly tagged boolean value
|
39
|
(emit "sall $~a, %eax" boolean-shift) ; construct correctly tagged boolean value
|
|
40
|
(emit "xorl $31, %eax"))
|
|
|
|
|
|
40
|
(emit "xorl $~a, %eax" #b0011111))
|
|
41
|
|
41
|
|
|
42
|
(define (emit-expr x)
|
42
|
(define (emit-expr x)
|
|
43
|
(cond
|
43
|
(cond
|
|
|
|
|
|
|
66
|
((boolean?)
|
66
|
((boolean?)
|
|
67
|
(emit-expr (primcall-operand1 x))
|
67
|
(emit-expr (primcall-operand1 x))
|
|
68
|
(emit "andl $~a, %eax" #b0011111)
|
68
|
(emit "andl $~a, %eax" #b0011111)
|
|
69
|
(emit "cmpl $~a, %eax" #b0011111)
|
|
|
|
|
|
69
|
(emit "cmpl $~a, %eax" #b0011111)
|
|
70
|
(emit-compare))
|
70
|
(emit-compare))
|
|
71
|
))))
|
71
|
))))
|
|
72
|
|
72
|
|