From b7a888394f9923d5de39d3a477ee4e6e9d3cf8c3 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Mon, 2 Apr 1990 15:30:54 +0000 Subject: [PATCH] Add a test on endianness to expand-fields so that the same macros can be used for all RISC machines. --- v7/src/compiler/machines/spectrum/insmac.scm | 28 ++++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/v7/src/compiler/machines/spectrum/insmac.scm b/v7/src/compiler/machines/spectrum/insmac.scm index 82489e8a4..cb25a942f 100644 --- a/v7/src/compiler/machines/spectrum/insmac.scm +++ b/v7/src/compiler/machines/spectrum/insmac.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/insmac.scm,v 1.1 1990/01/25 16:35:37 jinx Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/insmac.scm,v 1.2 1990/04/02 15:30:54 jinx Rel $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -93,18 +93,30 @@ MIT in each case. |# `(LIST ,(optimize-group-syntax code early?))))) (define (expand-fields fields early? receiver) - (define (expand fields receiver) + (define (expand first-word word-size fields receiver) (if (null? fields) (receiver '() 0) (expand-field (car fields) early? (lambda (car-field car-size) - (expand - (cdr fields) - (lambda (tail tail-size) - (receiver (cons car-field tail) - (+ car-size tail-size)))))))) - (expand fields receiver)) + (if (and (eq? endianness 'LITTLE) + (= 32 (+ word-size car-size))) + (expand '() 0 (cdr fields) + (lambda (tail tail-size) + (receiver + (append (cons car-field first-word) tail) + (+ car-size tail-size)))) + (expand (cons car-field first-word) + (+ car-size word-size) + (cdr fields) + (lambda (tail tail-size) + (receiver + (if (or (zero? car-size) + (not (eq? endianness 'LITTLE))) + (cons car-field tail) + tail) + (+ car-size tail-size))))))))) + (expand '() 0 fields receiver)) (define (expand-field field early? receiver) early? ; ignored for now -- 2.25.1