#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/insmac.scm,v 1.8 1992/02/13 19:03:31 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/insmac.scm,v 1.9 1992/02/13 19:55:02 jinx Exp $
$Vax-Header: insmac.scm,v 1.12 89/05/17 20:29:15 GMT jinx Exp $
Copyright (c) 1992 Massachusetts Institute of Technology
(r/m (caddr field)))
(receiver
`(CONS-SYNTAX
- ,(integer-syntaxer `(EA/MODE ,r/m) 'UNSIGNED 2)
+ (EA/REGISTER ,r/m)
(CONS-SYNTAX
,(integer-syntaxer digit-or-reg 'UNSIGNED 3)
(CONS-SYNTAX
- ,(integer-syntaxer `(EA/REGISTER ,r/m) 'UNSIGNED 3)
- (APPEND-SYNTAX
- (EA/EXTRA ,r/m)
- ,tail))))
+ (EA/MODE ,r/m)
+ (APPEND-SYNTAX! (EA/EXTRA ,r/m)
+ ,tail))))
(+ 8 tail-size))))))
;; For immediate operands whose size depends on the operand
;; size for the instruction (halfword vs. longword)
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/rules1.scm,v 1.9 1992/02/13 19:04:16 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/rules1.scm,v 1.10 1992/02/13 19:54:50 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
;;;; Utilities specific to rules1
(define (load-displaced-register target source n)
- (if (zero? n)
- (assign-register->register target source)
- (let* ((source (source-indirect-reference! source n))
- (target (target-register-reference target)))
- (LAP (LEA ,target ,source)))))
+ (cond ((zero? n)
+ (assign-register->register target source))
+ ((and (= target source)
+ (= target esp))
+ (LAP (ADD W (R ,esp) (& ,n))))
+ (else
+ (let* ((source (indirect-byte-reference! source n))
+ (target (target-register-reference target)))
+ (LAP (LEA ,target ,source))))))
(define (load-displaced-register/typed target source type n)
(load-displaced-register target