Added appropriate rules for dynamic links
authorBrian A. LaMacchia <edu/mit/csail/zurich/bal>
Tue, 23 Feb 1988 19:45:15 +0000 (19:45 +0000)
committerBrian A. LaMacchia <edu/mit/csail/zurich/bal>
Tue, 23 Feb 1988 19:45:15 +0000 (19:45 +0000)
v7/src/compiler/machines/vax/rules1.scm

index ef0cbd1033a89ca2db258250801036855e20bf8a..2501967cd1cefb27d015b1bda4f5ccbd32dbdf66 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/rules1.scm,v 4.2 1988/02/11 19:25:31 bal Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/rules1.scm,v 4.3 1988/02/23 19:45:15 bal Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -39,6 +39,31 @@ MIT in each case. |#
 \f
 ;;;; Transfers to Registers
 
+(define-rule statement
+  (ASSIGN (REGISTER 14) (OFFSET-ADDRESS (REGISTER (? source)) (? offset)))
+  (QUALIFIER (pseudo-register? source))
+  (LAP (MOVA L ,(indirect-reference! source offset) (R 14))))
+
+(define-rule statement
+  (ASSIGN (REGISTER 10) (REGISTER 14))
+  (LAP (MOV L (R 14) (R 10))))
+
+(define-rule statement
+  (ASSIGN (REGISTER 10) (OFFSET-ADDRESS (REGISTER 14) (? offset)))
+  (let ((offset1 (* 4 offset)))
+    (LAP (MOVA L (@RO ,(offset-type offset1) 14 ,offset1) (R 10)))))
+
+(define-rule statement
+  (ASSIGN (REGISTER 10) (OBJECT->ADDRESS (REGISTER (? source))))
+  (QUALIFIER (pseudo-register? source))
+  (if (and (dead-register? source)
+          (register-has-alias? source 'GENERAL))
+      (let ((source (register-reference (register-alias source 'GENERAL))))
+       (LAP (BIC L ,mask-reference ,source (R 10))))
+      (let ((temp (reference-temporary-register! 'GENERAL)))
+       (LAP (MOV L ,(coerce->any source) ,temp)
+            (BIC L ,mask-reference ,temp (R 10))))))
+
 ;;; All assignments to pseudo registers are required to delete the
 ;;; dead registers BEFORE performing the assignment.  This is because
 ;;; the register being assigned may be PSEUDO-REGISTER=? to one of the