IntCodeTarget.mesa
Copyright Ó 1986, 1987, 1991 by Xerox Corporation. All rights reserved.
Russ Atkinson (RRA) September 18, 1987 5:59:39 pm PDT
JKF July 27, 1988 8:12:07 am PDT
Willie-s, September 23, 1991 5:57 pm PDT
DIRECTORY
Basics32 USING [BITLSHIFT, BITRSHIFT],
Rope USING [ROPE];
Bit order
bitOrder: READONLY BitOrder;
BitOrder: TYPE = {msBit, lsBit};
Arguments & returns
maxBitsArgumentRecord:
READONLY
NAT;
gives the # of bits for the largest "fast" argument record
minBitsPerArgument:
READONLY
NAT;
logMinBitsPerArgument: READONLY NAT;
Gives the minimum # of bits for an argument
(to get the bits for an argument, round up & shift by logMinBitsPerArgument)
maxBitsReturnRecord:
READONLY
NAT;
gives the # of bits for the largest "fast" return record
minBitsPerReturn:
READONLY
NAT;
logMinBitsPerReturn: READONLY NAT;
Gives the minimum # of bits for an return value
Global frame
bitsPerGlobal:
READONLY
NAT;
logBitsPerGlobal: READONLY NAT;
Gives the minimum # of bits for an global variable
firstGlobalOffset:
READONLY
NAT;
First offset usable for global variables (in bits)
directGlobals:
READONLY
BOOL;
TRUE => target supports direct use of global variables
FALSE => target requires global frame pointer
Local frame & stack
lastRegister:
READONLY
NAT;
Gives # of registers to be used for local variables
lastStack:
READONLY
NAT;
Gives last stack location to be used for passing arguments
bitsPerLocal:
READONLY
NAT;
logBitsPerLocal: READONLY NAT;
Gives the minimum # of bits for an local variable
bitsPerLink:
READONLY
NAT;
logBitsPerLink: READONLY NAT;
Gives the minimum # of bits for a link
(uniform for static link, global link, & frame extension if any).