Flush uses of INST.
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Sun, 5 Jul 1992 14:20:58 +0000 (14:20 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Sun, 5 Jul 1992 14:20:58 +0000 (14:20 +0000)
v7/src/compiler/machines/bobcat/lapgen.scm
v7/src/compiler/machines/bobcat/rules1.scm
v7/src/compiler/machines/bobcat/rules2.scm
v7/src/compiler/machines/bobcat/rules3.scm

index 9cbbdfed861df56c9069c11e5f98720a62b9977e..cdb1ae81fa35958138f9bd7e5b6ee1a516b56a7a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 4.43 1992/05/14 03:06:23 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 4.44 1992/07/05 14:20:16 jinx Exp $
 
 Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
@@ -45,16 +45,16 @@ MIT in each case. |#
          (and (effective-address/address-register? source)
               (= (+ 8 (lap:ea-operand-1 source)) target)))
       (LAP)
-      (LAP ,(memory->machine-register source target))))
+      (memory->machine-register source target)))
 
 (define (register->register-transfer source target)
-  (LAP ,(machine->machine-register source target)))
+  (machine->machine-register source target))
 
 (define (home->register-transfer source target)
-  (LAP ,(pseudo->machine-register source target)))
+  (pseudo->machine-register source target))
 
 (define (register->home-transfer source target)
-  (LAP ,(machine->pseudo-register source target)))
+  (machine->pseudo-register source target))
 
 (define (pseudo-register-home register)
   (offset-reference regnum:regs-pointer (pseudo-register-offset register)))
@@ -127,21 +127,21 @@ MIT in each case. |#
   (if (not (register-types-compatible? source target))
       (error "Moving between incompatible register types" source target))
   (if (float-register? source)
-      (INST (FMOVE ,(register-reference source)
-                  ,(register-reference target)))
-      (INST (MOV L
-                ,(register-reference source)
-                ,(register-reference target)))))
+      (LAP (FMOVE ,(register-reference source)
+                 ,(register-reference target)))
+      (LAP (MOV L
+               ,(register-reference source)
+               ,(register-reference target)))))
 
 (define (machine-register->memory source target)
   (if (float-register? source)
-      (INST (FMOVE D ,(register-reference source) ,target))
-      (INST (MOV L ,(register-reference source) ,target))))
+      (LAP (FMOVE D ,(register-reference source) ,target))
+      (LAP (MOV L ,(register-reference source) ,target))))
 
 (define (memory->machine-register source target)
   (if (float-register? target)
-      (INST (FMOVE D ,source ,(register-reference target)))
-      (INST (MOV L ,source ,(register-reference target)))))
+      (LAP (FMOVE D ,source ,(register-reference target)))
+      (LAP (MOV L ,source ,(register-reference target)))))
 
 (define (offset-reference register offset)
   (byte-offset-reference register (* 4 offset)))
@@ -157,24 +157,19 @@ MIT in each case. |#
 \f
 (define (load-dnl n d)
   (cond ((zero? n)
-        (INST (CLR L (D ,d))))
+        (LAP (CLR L (D ,d))))
        ((<= -128 n 127)
-        (INST (MOVEQ (& ,n) (D ,d))))
+        (LAP (MOVEQ (& ,n) (D ,d))))
        (else
-        (INST (MOV L (& ,n) (D ,d))))))
+        (LAP (MOV L (& ,n) (D ,d))))))
 
 (define (load-dnw n d)
   (cond ((zero? n)
-        (INST (CLR W (D ,d))))
+        (LAP (CLR W (D ,d))))
        ((<= -128 n 127)
-        (INST (MOVEQ (& ,n) (D ,d))))
+        (LAP (MOVEQ (& ,n) (D ,d))))
        (else
-        (INST (MOV W (& ,n) (D ,d))))))
-
-(define (test-dnw n d)
-  (if (zero? n)
-      (INST (TST W (D ,d)))
-      (INST (CMPI W (& ,n) (D ,d)))))
+        (LAP (MOV W (& ,n) (D ,d))))))
 
 (define (ea+=constant ea c)
   (cond ((zero? c)
@@ -242,15 +237,15 @@ MIT in each case. |#
 
 (define (memory-set-type type target)
   (if (= 8 scheme-type-width)
-      (INST (MOV B (& ,type) ,target))
-      (INST (OR B (& ,(* type-scale-factor type)) ,target))))
+      (LAP (MOV B (& ,type) ,target))
+      (LAP (OR B (& ,(* type-scale-factor type)) ,target))))
 \f
 (define (test-byte n effective-address)
   ;; This is used to test actual bytes.
   ;; Type codes are "preprocessed" by the pertinent rule.
   (if (and (zero? n) (effective-address/data&alterable? effective-address))
-      (INST (TST B ,effective-address))
-      (INST (CMPI B (& ,n) ,effective-address))))
+      (LAP (TST B ,effective-address))
+      (LAP (CMPI B (& ,n) ,effective-address))))
 
 (define (test-non-pointer-constant constant target)
   (test-non-pointer (object-type constant)
@@ -261,10 +256,10 @@ MIT in each case. |#
   (if (and (zero? type)
           (zero? datum)
           (effective-address/data&alterable? effective-address))
-      (INST (TST L ,effective-address))
-      (INST (CMPI UL
-                 (& ,(make-non-pointer-literal type datum))
-                 ,effective-address))))
+      (LAP (TST L ,effective-address))
+      (LAP (CMPI UL
+                (& ,(make-non-pointer-literal type datum))
+                ,effective-address))))
 
 (define (set-standard-branches! cc)
   (set-current-branches!
@@ -385,14 +380,14 @@ MIT in each case. |#
       (let ((loop (generate-label 'LOOP)))
        (with-counter
         (lambda (counter)
-          (LAP ,(load-dnw (-1+ n) counter)
+          (LAP ,@(load-dnw (-1+ n) counter)
                (LABEL ,loop)
-               ,(instruction-gen)
+               ,@(instruction-gen)
                (DB F (D ,counter) (@PCR ,loop))))))
       (let loop ((n n))
        (if (zero? n)
            (LAP)
-           (LAP ,(instruction-gen)
+           (LAP ,@(instruction-gen)
                 ,@(loop (-1+ n)))))))
 
 (define (standard-target-expression? target)
@@ -426,11 +421,11 @@ MIT in each case. |#
        (register-reference (move-to-alias-register! source type target))))
     (lambda (target)
       (LAP
-       ,(if (eq? type 'FLOAT)
-           (load-float-register
-            (standard-register-reference source type false)
-            target)
-           (INST (MOV L
+       ,@(if (eq? type 'FLOAT)
+            (load-float-register
+             (standard-register-reference source type false)
+             target)
+            (LAP (MOV L
                       ,(standard-register-reference source type true)
                       ,target)))
        ,@(operate-on-target target)))))
@@ -443,9 +438,9 @@ MIT in each case. |#
         (lambda (target)
           (let ((temp (reference-temporary-register! type)))
             (LAP ,@(operate-on-machine-target temp)
-                 ,(if (eq? type 'FLOAT)
-                      (load-float-register temp target)
-                      (INST (MOV L ,temp ,target))))))))
+                 ,@(if (eq? type 'FLOAT)
+                       (load-float-register temp target)
+                       (LAP (MOV L ,temp ,target))))))))
     (case (rtl:expression-type target)
       ((REGISTER)
        (let ((register (rtl:register-number target)))
@@ -462,8 +457,8 @@ MIT in each case. |#
 
 (define (load-float-register source target)
   (if (effective-address/float-register? source)
-      (INST (FMOVE ,source ,target))
-      (INST (FMOVE D ,source ,target))))
+      (LAP (FMOVE ,source ,target))
+      (LAP (FMOVE D ,source ,target))))
 
 (define (reuse-and-operate-on-machine-target! type target operate-on-target)
   (reuse-machine-target! type target
@@ -482,9 +477,9 @@ MIT in each case. |#
         target source1 source2)
   (let ((worst-case
         (lambda (target source1 source2)
-          (LAP ,(if (eq? target-type 'FLOAT)
-                    (load-float-register source1 target)
-                    (INST (MOV L ,source1 ,target)))
+          (LAP ,@(if (eq? target-type 'FLOAT)
+                     (load-float-register source1 target)
+                     (LAP (MOV L ,source1 ,target)))
                ,@(operate target source2)))))
     (reuse-machine-target! target-type target
       (lambda (target)
@@ -563,8 +558,8 @@ MIT in each case. |#
 
 (define (test-fixnum effective-address)
   (if (effective-address/data&alterable? effective-address)
-      (INST (TST L ,effective-address))
-      (INST (CMPI L (& 0) ,effective-address))))
+      (LAP (TST L ,effective-address))
+      (LAP (CMPI L (& 0) ,effective-address))))
 
 (define (fixnum-predicate->cc predicate)
   (case predicate
@@ -773,14 +768,14 @@ MIT in each case. |#
                 (LAP (LS R L (& ,m) ,target)
                      ,@(word->fixnum target))
                 (let ((temp (reference-temporary-register! 'DATA)))
-                  (LAP ,(load-dnl m temp)
+                  (LAP ,@(load-dnl m temp)
                        (LS R L ,temp ,target)
                        ,@(word->fixnum target))))))             
          (else
           (if (< n 9)
               (LAP (LS L L (& ,n) ,target))
               (let ((temp (reference-temporary-register! 'DATA)))
-                (LAP ,(load-dnl n temp)
+                (LAP ,@(load-dnl n temp)
                      (LS L L ,temp ,target))))))))
 \f
 ;;; Quotient is weird because it must shift left the quotient,
@@ -1027,32 +1022,6 @@ MIT in each case. |#
 (define (char->signed-8-bit-immediate character)
   (let ((ascii (char->ascii character)))
     (if (< ascii 128) ascii (- ascii 256))))
-
-#|
-
-;; *** This is believed to be a fossil. ***
-;; Left here until the first compilation to make sure that it really is.
-;; Can be removed the next time it is seen.
-
-(define (byte-offset->register source source-reg target)
-  ;; This code uses a temporary register because right now the register
-  ;; allocator thinks that it could use the same register for the target
-  ;; and source, while what we want to happen is to first clear the target
-  ;; and then move from source to target.
-  ;; Optimal Code: (CLR L ,target-ref)
-  ;;               (MOV B ,source ,target)
-  ;; source-register is passed in to check for this. Yuck.
-  (delete-dead-registers!)
-  (let* ((temp-ref (register-reference (allocate-temporary-register! 'DATA)))
-        (target (allocate-alias-register! target 'DATA)))
-    (if (= target source-reg)
-       (LAP (CLR L ,temp-ref)
-            (MOV B ,source ,temp-ref)
-            (MOV L ,temp-ref ,(register-reference target)))
-       (LAP (CLR L ,(register-reference target))
-            (MOV B ,source ,(register-reference target))))))
-
-|#
 \f
 ;;;; Registers/Entries
 
@@ -1172,7 +1141,7 @@ MIT in each case. |#
     ))
 
 (define-integrable (invoke-interface code)
-  (LAP ,(load-dnw code 0)
+  (LAP ,@(load-dnw code 0)
        (JMP ,entry:compiler-scheme-to-interface)))
 
 #|
@@ -1181,12 +1150,12 @@ MIT in each case. |#
 ;; The others can be handled similarly.
 
 (define-integrable (invoke-interface-jsr code)
-  (LAP ,(load-dnw code 0)
+  (LAP ,@(load-dnw code 0)
        (LEA (@PCO 12) (A 0))
        (MOV L (A 0) (D 1))
        (JMP ,entry:compiler-scheme-to-interface)))
 |#
 
 (define-integrable (invoke-interface-jsr code)
-  (LAP ,(load-dnw code 0)
+  (LAP ,@(load-dnw code 0)
        (JSR ,entry:compiler-scheme-to-interface-jsr)))
\ No newline at end of file
index b4b11e2da0bff64fbdd893dfda2868c46ebfcc9b..50d53de0f2a5a0bfd8cc55dcc5fd1af25c1d764a 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules1.scm,v 4.36 1991/10/25 06:49:58 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules1.scm,v 4.37 1992/07/05 14:20:36 jinx Exp $
 
-Copyright (c) 1988-91 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -385,7 +385,7 @@ MIT in each case. |#
          (CONS-POINTER (MACHINE-CONSTANT (? type)) (REGISTER (? datum))))
   (let ((target (indirect-reference! address offset)))
     (LAP (MOV L ,(standard-register-reference datum 'DATA true) ,target)
-        ,(memory-set-type type target))))
+        ,@(memory-set-type type target))))
 
 (define-rule statement
   (ASSIGN (OFFSET (REGISTER (? address)) (? offset))
@@ -395,7 +395,7 @@ MIT in each case. |#
        (target (indirect-reference! address offset)))
     (LAP (LEA ,(indirect-reference! source n) ,temp)
         (MOV L ,temp ,target)
-        ,(memory-set-type type target))))
+        ,@(memory-set-type type target))))
 
 (define-rule statement
   (ASSIGN (OFFSET (REGISTER (? address)) (? offset))
@@ -405,7 +405,7 @@ MIT in each case. |#
        (target (indirect-reference! address offset)))
     (LAP (LEA ,(indirect-byte-reference! source n) ,temp)
         (MOV L ,temp ,target)
-        ,(memory-set-type type target))))
+        ,@(memory-set-type type target))))
 \f
 ;; Common case that can be done cheaply:
 
@@ -436,7 +436,7 @@ MIT in each case. |#
     (LAP (LEA (@PCR ,(rtl-procedure/external-label (label->object label)))
              ,temp)
         (MOV L ,temp ,target)
-        ,(memory-set-type type target))))
+        ,@(memory-set-type type target))))
 
 (define-rule statement
   (ASSIGN (OFFSET (REGISTER (? a0)) (? n0))
@@ -502,7 +502,7 @@ MIT in each case. |#
   (ASSIGN (PRE-INCREMENT (REGISTER 15) -1)
          (CONS-POINTER (MACHINE-CONSTANT (? type)) (REGISTER (? datum))))
   (LAP (MOV L ,(standard-register-reference datum 'DATA true) (@-A 7))
-       ,(memory-set-type type (INST-EA (@A 7)))))
+       ,@(memory-set-type type (INST-EA (@A 7)))))
 
 (define-rule statement
   (ASSIGN (PRE-INCREMENT (REGISTER 15) -1)
@@ -515,28 +515,28 @@ MIT in each case. |#
          (CONS-POINTER (MACHINE-CONSTANT (? type))
                        (ENTRY:PROCEDURE (? label))))
   (LAP (PEA (@PCR ,(rtl-procedure/external-label (label->object label))))
-       ,(memory-set-type type (INST-EA (@A 7)))))
+       ,@(memory-set-type type (INST-EA (@A 7)))))
 
 (define-rule statement
   (ASSIGN (PRE-INCREMENT (REGISTER 15) -1)
          (CONS-POINTER (MACHINE-CONSTANT (? type))
                        (ENTRY:CONTINUATION (? label))))
   (LAP (PEA (@PCR ,label))
-       ,(memory-set-type type (INST-EA (@A 7)))))
+       ,@(memory-set-type type (INST-EA (@A 7)))))
 
 (define-rule statement
   (ASSIGN (PRE-INCREMENT (REGISTER 15) -1)
          (CONS-POINTER (MACHINE-CONSTANT (? type))
                        (OFFSET-ADDRESS (REGISTER (? r)) (? n))))
   (LAP (PEA ,(indirect-reference! r n))
-       ,(memory-set-type type (INST-EA (@A 7)))))
+       ,@(memory-set-type type (INST-EA (@A 7)))))
 
 (define-rule statement
   (ASSIGN (PRE-INCREMENT (REGISTER 15) -1)
          (CONS-POINTER (MACHINE-CONSTANT (? type))
                        (BYTE-OFFSET-ADDRESS (REGISTER (? r)) (? n))))
   (LAP (PEA ,(indirect-byte-reference! r n))
-       ,(memory-set-type type (INST-EA (@A 7)))))
+       ,@(memory-set-type type (INST-EA (@A 7)))))
 
 (define-rule statement
   (ASSIGN (PRE-INCREMENT (REGISTER 15) -1) (OFFSET (REGISTER (? r)) (? n)))
index f8e8487f17266a66e6440339e9764f92c8f82846..1a88e9578b9512d9728f9ce4fe77bdd2286f1488 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules2.scm,v 4.12 1990/01/18 22:44:04 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules2.scm,v 4.13 1992/07/05 14:20:58 jinx Exp $
 
-Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -33,6 +33,7 @@ promotional, or sales literature without prior written consent from
 MIT in each case. |#
 
 ;;;; LAP Generation Rules: Predicates
+;;; package: (compiler lap-syntaxer)
 
 (declare (usual-integrations))
 \f
@@ -98,7 +99,7 @@ MIT in each case. |#
 (define-rule predicate
   (TYPE-TEST (REGISTER (? register)) (? type))
   (set-standard-branches! 'EQ)
-  (LAP ,(test-byte type (reference-alias-register! register 'DATA))))
+  (test-byte type (reference-alias-register! register 'DATA)))
 
 (define-rule predicate
   (TYPE-TEST (OBJECT->TYPE (REGISTER (? register))) (? type))
@@ -129,7 +130,7 @@ MIT in each case. |#
   (set-standard-branches! 'EQ)
   (let ((source (indirect-reference! address offset)))
     (cond ((= scheme-type-width 8)
-          (LAP ,(test-byte type source)))
+          (test-byte type source))
          ((and (zero? type) use-68020-instructions?)
           (LAP (BFTST ,source (& 0) (& ,scheme-type-width))))
          (else
@@ -141,7 +142,7 @@ MIT in each case. |#
   (LAP ,@(object->type source target)
        ,@(if (zero? type)
             (LAP)
-            (LAP ,(test-byte type target)))))
+            (test-byte type target))))
 \f
 (define-rule predicate
   (EQ-TEST (REGISTER (? register-1)) (REGISTER (? register-2)))
@@ -181,9 +182,9 @@ MIT in each case. |#
   (if (non-pointer-object? constant)
       (begin
        (set-standard-branches! 'EQ)
-       (LAP ,(test-non-pointer-constant
-              constant
-              (standard-register-reference register 'DATA true))))
+       (test-non-pointer-constant
+        constant
+        (standard-register-reference register 'DATA true)))
       (compare/register*memory register
                               (INST-EA (@PCR ,(constant->label constant)))
                               'EQ)))
@@ -203,7 +204,7 @@ MIT in each case. |#
     (if (non-pointer-object? constant)
        (begin
          (set-standard-branches! 'EQ)
-         (LAP ,(test-non-pointer-constant constant memory)))
+         (test-non-pointer-constant constant memory))
        (compare/memory*memory memory
                               (INST-EA (@PCR ,(constant->label constant)))
                               'EQ))))
@@ -222,9 +223,9 @@ MIT in each case. |#
 
 (define (eq-test/synthesized-constant*register type datum register)
   (set-standard-branches! 'EQ)
-  (LAP ,(test-non-pointer type
-                         datum
-                         (standard-register-reference register 'DATA true))))
+  (test-non-pointer type
+                   datum
+                   (standard-register-reference register 'DATA true)))
 
 (define-rule predicate
   (EQ-TEST (CONS-POINTER (MACHINE-CONSTANT (? type))
@@ -242,9 +243,9 @@ MIT in each case. |#
 
 (define (eq-test/synthesized-constant*memory type datum memory)
   (set-standard-branches! 'EQ)
-  (LAP ,(test-non-pointer type
-                         datum
-                         (predicate/memory-operand-reference memory))))
+  (test-non-pointer type
+                   datum
+                   (predicate/memory-operand-reference memory)))
 \f
 ;;;; Fixnum/Flonum Predicates
 
@@ -256,7 +257,7 @@ MIT in each case. |#
 (define-rule predicate
   (FIXNUM-PRED-1-ARG (? predicate) (REGISTER (? register)))
   (set-standard-branches! (fixnum-predicate->cc predicate))
-  (LAP ,(test-fixnum (standard-register-reference register 'DATA true))))
+  (test-fixnum (standard-register-reference register 'DATA true)))
 
 (define-rule predicate
   (FIXNUM-PRED-1-ARG (? predicate) (OBJECT->FIXNUM (REGISTER (? register))))
@@ -267,7 +268,7 @@ MIT in each case. |#
   (FIXNUM-PRED-1-ARG (? predicate) (? memory))
   (QUALIFIER (predicate/memory-operand? memory))
   (set-standard-branches! (fixnum-predicate->cc predicate))
-  (LAP ,(test-fixnum (predicate/memory-operand-reference memory))))
+  (test-fixnum (predicate/memory-operand-reference memory)))
 
 (define-rule predicate
   (FIXNUM-PRED-2-ARGS (? predicate)
index 5727db5d827878ecc58d09d5ad4fc9e26df80a84..43b83f48aed9a0a1f9cb728424b21ba7d556455c 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules3.scm,v 4.31 1991/05/28 19:14:55 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules3.scm,v 4.32 1992/07/05 14:20:51 jinx Exp $
 
-Copyright (c) 1988-1991 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -41,13 +41,13 @@ MIT in each case. |#
 
 (define-integrable (clear-continuation-type-code)
   (if (= scheme-type-width 8)
-      (INST (CLR B (@A 7)))
-      (INST (AND L ,mask-reference (@A 7)))))
+      (LAP (CLR B (@A 7)))
+      (LAP (AND L ,mask-reference (@A 7)))))
 
 (define-rule statement
   (POP-RETURN)
   (LAP ,@(clear-map!)
-       ,(clear-continuation-type-code)
+       ,@(clear-continuation-type-code)
        (RTS)))
 
 (define-rule statement
@@ -64,7 +64,7 @@ MIT in each case. |#
           ((7) (LAP (JMP ,entry:compiler-shortcircuit-apply-size-7)))
           ((8) (LAP (JMP ,entry:compiler-shortcircuit-apply-size-8)))
           (else
-           (LAP ,(load-dnl frame-size 2)
+           (LAP ,@(load-dnl frame-size 2)
                 (JMP ,entry:compiler-shortcircuit-apply))))))
 
 (define-rule statement
@@ -78,14 +78,14 @@ MIT in each case. |#
   frame-size continuation
   ;; It expects the procedure at the top of the stack
   (LAP ,@(clear-map!)
-       ,(clear-continuation-type-code)
+       ,@(clear-continuation-type-code)
        (RTS)))
 
 (define-rule statement
   (INVOCATION:LEXPR (? number-pushed) (? continuation) (? label))
   continuation
   (LAP ,@(clear-map!)
-       ,(load-dnl number-pushed 2)
+       ,@(load-dnl number-pushed 2)
        (LEA (@PCR ,label) (A 0))
        (MOV L (A 0) (D 1))
        ,@(invoke-interface code:compiler-lexpr-apply)))
@@ -95,8 +95,8 @@ MIT in each case. |#
   continuation
   ;; It expects the procedure at the top of the stack
   (LAP ,@(clear-map!)
-       ,(load-dnl number-pushed 2)
-       ,(clear-continuation-type-code)
+       ,@(load-dnl number-pushed 2)
+       ,@(clear-continuation-type-code)
        (MOV L (@A+ 7) (D 1))
        ,@(invoke-interface code:compiler-lexpr-apply)))
 
@@ -131,7 +131,7 @@ MIT in each case. |#
     (delete-dead-registers!)
     (LAP ,@set-extension
         ,@(clear-map!)
-        ,(load-dnl frame-size 3)
+        ,@(load-dnl frame-size 3)
         (LEA (@PCR ,*block-label*) (A 1))
         (MOV L (A 1) (D 2))
         ,@(invoke-interface code:compiler-cache-reference-apply))))
@@ -146,7 +146,7 @@ MIT in each case. |#
     (LAP ,@set-environment
         ,@(clear-map!)
         ,@(load-constant name (INST-EA (D 2)))
-        ,(load-dnl frame-size 3)
+        ,@(load-dnl frame-size 3)
         ,@(invoke-interface code:compiler-lookup-apply))))
 
 (define-rule statement
@@ -154,7 +154,7 @@ MIT in each case. |#
   continuation
   (LAP ,@(clear-map!)
        ,@(if (eq? primitive compiled-error-procedure)
-            (LAP ,(load-dnl frame-size 1)
+            (LAP ,@(load-dnl frame-size 1)
                  (JMP ,entry:compiler-error))
             (let ((arity (primitive-procedure-arity primitive)))
               (cond ((not (negative? arity))
@@ -167,7 +167,7 @@ MIT in each case. |#
                           (JMP ,entry:compiler-primitive-lexpr-apply)))
                     (else
                      ;; Unknown primitive arity.  Go through apply.
-                     (LAP ,(load-dnl frame-size 2)
+                     (LAP ,@(load-dnl frame-size 2)
                           (MOV L (@PCR ,(constant->label primitive)) (D 1))
                           ,@(invoke-interface code:compiler-apply))))))))
 \f
@@ -245,10 +245,10 @@ MIT in each case. |#
               (LAP (MOV L (@AO 7 4) (@AO 7 8))
                    (MOV L (@A+ 7) (@A 7)))
               (let ((i (lambda ()
-                         (INST (MOV L (@A+ 7)
-                                    ,(offset-reference a7 (-1+ how-far)))))))
-                (LAP ,(i)
-                     ,(i)
+                         (LAP (MOV L (@A+ 7)
+                                   ,(offset-reference a7 (-1+ how-far)))))))
+                (LAP ,@(i)
+                     ,@(i)
                      ,@(increment-machine-register 15 (* 4 (- how-far 2)))))))
          (else
           (generate/move-frame-up frame-size (offset-reference a7 offset))))))
@@ -318,9 +318,9 @@ MIT in each case. |#
         ,@(generate-n-times
            frame-size 5
            (lambda ()
-             (INST (MOV L
-                        (@-A ,(- temp 8))
-                        (@-A ,(- destination 8)))))
+             (LAP (MOV L
+                       (@-A ,(- temp 8))
+                       (@-A ,(- destination 8)))))
            (lambda (generator)
              (generator (allocate-temporary-register! 'DATA))))
         (MOV L ,(register-reference destination) (A 7)))))
@@ -647,7 +647,7 @@ long-word aligned and there is no need for shuffling.
 ;; and returns its value in a0.
 
 (define (MC68040/allocate-closure size)
-  (LAP ,(load-dnl size 0)
+  (LAP ,@(load-dnl size 0)
        (JSR ,entry:compiler-allocate-closure)))
 
 ;; If this issues too much code, the optional code can be eliminated at
@@ -754,7 +754,7 @@ long-word aligned and there is no need for shuffling.
        (MOV L (A 0) (D 2))
        (LEA (@PCR ,free-ref-label) (A 0))
        (MOV L (A 0) (D 3))
-       ,(load-dnl n-sections 4)
+       ,@(load-dnl n-sections 4)
        (JSR ,entry:compiler-link)
        ,@(make-external-label (continuation-code-word false)
                              (generate-label))))
@@ -766,19 +766,19 @@ long-word aligned and there is no need for shuffling.
   (let ((load-offset
         (lambda (offset)
           (if (<= -32768 offset 32767)
-              (INST (LEA (@AO 0 ,offset) (A 1)))
-              (INST (LEA (@AOF 0 E (,offset L) #F
-                               ((D 0) L 1) Z
-                               (0 N))
-                         (A 1)))))))
+              (LAP (LEA (@AO 0 ,offset) (A 1)))
+              (LAP (LEA (@AOF 0 E (,offset L) #F
+                              ((D 0) L 1) Z
+                              (0 N))
+                        (A 1)))))))
     (LAP (MOV L (@PCR ,code-block-label) (D 2))
         (AND L ,mask-reference (D 2))
         (MOV L (D 2) (A 0))
-        ,(load-offset environment-offset)
+        ,@(load-offset environment-offset)
         (MOV L ,reg:environment (@A 1))
-        ,(load-offset free-ref-offset)
+        ,@(load-offset free-ref-offset)
         (MOV L (A 1) (D 3))
-        ,(load-dnl n-sections 4)
+        ,@(load-dnl n-sections 4)
         (JSR ,entry:compiler-link)
         ,@(make-external-label (continuation-code-word false)
                                (generate-label)))))