appropriate instances of CONS-POINTER to use the new type.
* Replace RTL expression type @ADDRESS->FLOAT with new type
OBJECT->FLOAT.
* Introduce new internal switch USE-PRE/POST-INCREMENT?. Change code
generation of in-line consing to pay attention to this switch.
* Merge common parts of "machine/make" into new file "base/make".
On MIPS:
* Change code sequence that assigns type codes to assume that the type
field has a known value. This eliminates one instruction in every
type-code assignment. It assumes that the data segment bits have a
certain value, but the microcode already does this.
* Cache immediate constants in registers, and remember which registers
contain which constants. (This should be improved by noticing when
arithmetic operations are done on known constants and cacheing the
results.)
* Set USE-PRE/POST-INCREMENT? to false, saving one instruction in
every CONS, and multiple instructions in each call to VECTOR.
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/machin.scm,v 4.23 1991/07/25 09:04:33 cph Exp $
-$MC68020-Header: machin.scm,v 4.22 90/05/03 15:17:20 GMT jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/machin.scm,v 4.24 1991/10/25 12:29:51 cph Exp $
Copyright (c) 1988-91 Massachusetts Institute of Technology
\f
;;;; Architecture Parameters
+(define use-pre/post-increment? true)
(define-integrable endianness 'BIG)
(define-integrable addressing-granularity 8)
(define-integrable scheme-object-width 32)
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/make.scm,v 4.87 1991/07/25 02:38:17 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/make.scm,v 4.88 1991/10/25 12:29:52 cph Exp $
Copyright (c) 1988-91 Massachusetts Institute of Technology
(declare (usual-integrations))
-(package/system-loader "comp" '() 'QUERY)
-(for-each (lambda (name)
- ((package/reference (find-package name) 'INITIALIZE-PACKAGE!)))
- '((COMPILER MACROS)
- (COMPILER DECLARATIONS)))
-(add-system! (make-system "Liar (HP PA)" 4 87 '()))
\ No newline at end of file
+((load "base/make") "HP PA")
\ No newline at end of file
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/rulflo.scm,v 4.32 1990/01/25 16:45:49 jinx Rel $
-$MC68020-Header: rules1.scm,v 4.32 90/01/18 22:43:54 GMT cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/rulflo.scm,v 4.33 1991/10/25 12:29:54 cph Exp $
-Copyright (c) 1989, 1990 Massachusetts Institute of Technology
+Copyright (c) 1989-91 Massachusetts Institute of Technology
This material was developed by the Scheme project at the Massachusetts
Institute of Technology, Department of Electrical Engineering and
(FSTDS (MA) ,source (OFFSET 8 0 21))))))
(define-rule statement
- ;; convert a flonum object address to a floating-point number
- (ASSIGN (REGISTER (? target)) (@ADDRESS->FLOAT (REGISTER (? source))))
- (let ((source (standard-source! source)))
- (LAP (FLDDS () (OFFSET 4 0 ,source) ,(flonum-target! target)))))
+ ;; convert a flonum object to a floating-point number
+ (ASSIGN (REGISTER (? target)) (OBJECT->FLOAT (REGISTER (? source))))
+ (let ((source (standard-move-to-temporary! source)))
+ (LAP ,@(object->address source)
+ (FLDDS () (OFFSET 4 0 ,source) ,(flonum-target! target)))))
\f
;;;; Flonum Arithmetic
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/rulrew.scm,v 1.3 1990/07/22 18:56:39 jinx Rel $
-$MC68020-rulrew.scm,v 1.3 90/05/03 15:17:42 GMT jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/rulrew.scm,v 1.4 1991/10/25 12:29:56 cph Exp $
-Copyright (c) 1990 Massachusetts Institute of Technology
+Copyright (c) 1990-91 Massachusetts Institute of Technology
This material was developed by the Scheme project at the Massachusetts
Institute of Technology, Department of Electrical Engineering and
\f
;;;; Synthesized Data
+(define-rule rewriting
+ (CONS-NON-POINTER (? type) (? datum))
+ ;; Since we use DEP instructions to insert type codes, there's no
+ ;; difference between the way that pointers and non-pointers are
+ ;; constructed.
+ (rtl:make-cons-pointer type datum))
+
(define-rule rewriting
(CONS-POINTER (REGISTER (? type register-known-value))
(REGISTER (? datum register-known-value)))