|
|
@ -167,6 +167,21 @@
|
|
167
|
167
|
(emit "movq %rsi, %rax") ; rax = rsi | 1 (cons cell/pair tag)
|
|
168
|
168
|
(emit "orq $~a, %rax" #b001)
|
|
169
|
169
|
(emit "addq $8, %rsi")) ; bump rsi
|
|
|
170
|
((car)
|
|
|
171
|
(emit-expr (primcall-operand1 x) si env)
|
|
|
172
|
(emit "movl -1(%rax), %eax"))
|
|
|
173
|
((cdr)
|
|
|
174
|
(emit-expr (primcall-operand1 x) si env)
|
|
|
175
|
(emit "movl 3(%rax), %eax"))
|
|
|
176
|
((cddr)
|
|
|
177
|
(emit-expr (primcall-operand1 x) si env)
|
|
|
178
|
(emit "movl 3(%rax), %eax")
|
|
|
179
|
(emit "movl 3(%rax), %eax"))
|
|
|
180
|
((cddar)
|
|
|
181
|
(emit-expr (primcall-operand1 x) si env)
|
|
|
182
|
(emit "movl 3(%rax), %eax")
|
|
|
183
|
(emit "movl 3(%rax), %eax")
|
|
|
184
|
(emit "movl -1(%rax), %eax"))
|
|
170
|
185
|
))
|
|
171
|
186
|
|
|
172
|
187
|
(define (compile-program x)
|