Saving and Restoring Registers |
![]() ![]() ![]() |
(define (preserving regs seq1 seq2) (if (null? regs) (append-instruction-sequences seq1 seq2) (let ((first-reg (car regs))) (preserving (cdr regs) (make-instruction-sequence (append `((save ,first-reg)) (statements seq1) `((restore ,first-reg)))) seq2)))) (define (end-with-linkage linkage instruction-sequence) (preserving '(continue) instruction-sequence (compile-linkage linkage)))
Jim Miller | ![]() |