From: Guillermo J. Rozas Date: Mon, 17 Feb 1992 22:36:58 +0000 (+0000) Subject: - Add another rule that exapands into PUSH.W &?? X-Git-Tag: 20090517-FFI~9713 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=f4e38cb7ded1c08e8dfa43d20078350e36c19d46;p=mit-scheme.git - Add another rule that exapands into PUSH.W &?? - Fix cons-pointer rule. --- diff --git a/v7/src/compiler/machines/i386/rules1.scm b/v7/src/compiler/machines/i386/rules1.scm index e9e26b51a..b248572e1 100644 --- a/v7/src/compiler/machines/i386/rules1.scm +++ b/v7/src/compiler/machines/i386/rules1.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/rules1.scm,v 1.12 1992/02/15 16:21:03 jinx Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/rules1.scm,v 1.13 1992/02/17 22:36:58 jinx Exp $ $MC68020-Header: /scheme/src/compiler/machines/bobcat/RCS/rules1.scm,v 4.36 1991/10/25 06:49:58 cph Exp $ Copyright (c) 1992 Massachusetts Institute of Technology @@ -101,10 +101,12 @@ MIT in each case. |# => (lambda (alias) (if (pseudo-register? target) - (reuse-pseudo-register-alias! datum 'GENERAL - two-arg - (lambda () - (three-arg alias))) + (reuse-pseudo-register-alias! + datum 'GENERAL + (lambda (alias) + (two-arg (register-reference alias))) + (lambda () + (three-arg alias))) (three-arg alias)))) (else (two-arg (standard-move-to-target! datum target))))))) @@ -206,6 +208,13 @@ MIT in each case. |# (LAP (MOV W ,(target-indirect-reference! a n) (&U ,(non-pointer->literal value))))) +(define-rule statement + (ASSIGN (OFFSET (REGISTER (? a)) (? n)) + (CONS-POINTER (MACHINE-CONSTANT (? type)) + (MACHINE-CONSTANT (? datum)))) + (LAP (MOV W ,(target-indirect-reference! a n) + (&U ,(make-non-pointer-literal type datum))))) + (define-rule statement (ASSIGN (OFFSET (REGISTER (? address)) (? offset)) (BYTE-OFFSET-ADDRESS (OFFSET (REGISTER (? address)) (? offset)) @@ -229,11 +238,16 @@ MIT in each case. |# (QUALIFIER (register-value-class=word? r)) (LAP (PUSH ,(source-register-reference r)))) +(define-rule statement + (ASSIGN (PRE-INCREMENT (REGISTER 4) -1) (CONSTANT (? value))) + (QUALIFIER (non-pointer-object? value)) + (LAP (PUSH W (&U ,(non-pointer->literal value))))) + (define-rule statement (ASSIGN (PRE-INCREMENT (REGISTER 4) -1) (CONS-POINTER (MACHINE-CONSTANT (? type)) (MACHINE-CONSTANT (? datum)))) - (LAP (PUSH W (& ,(make-non-pointer-literal type datum))))) + (LAP (PUSH W (&U ,(make-non-pointer-literal type datum))))) ;;;; CHAR->ASCII/BYTE-OFFSET