<<>> <> <> <> <> DIRECTORY Rope; <> <<>> <> <> <<>> <> <<>> <> C2CTarget: CEDAR DEFINITIONS = BEGIN <> <> <> <<>> <> <> <<>> <> <> ROPE: TYPE = Rope.ROPE; bigEndian: BOOL = TRUE; runtimePrefix: READONLY ROPE; <> bitsPerWord: NAT = 32; <> word: READONLY ROPE; --= "word" <> <> wordCast: READONLY ROPE; --= "(word)" <> signedWord: READONLY ROPE; unsignedWord: READONLY ROPE; signedWordCast: READONLY ROPE; unsignedWordCast: READONLY ROPE; wordPtr: READONLY ROPE; <> wordPtrCast: READONLY ROPE; <> hasBytes: BOOL = TRUE; <> <> byte: READONLY ROPE; byteCast: READONLY ROPE; bytePtr: READONLY ROPE; <> bytePtrCast: READONLY ROPE; <> unsignedByteCast: READONLY ROPE; signedByte: READONLY ROPE; signedByteCast: READONLY ROPE; <<>> hasHalfWords: BOOL = TRUE; bitsPerHalfWord: NAT = 16; halfWord: READONLY ROPE; halfWordCast: READONLY ROPE; halfWordPtr: READONLY ROPE; <> halfWordPtrCast: READONLY ROPE; <> unsignedHalfCast: READONLY ROPE; signedHalf: READONLY ROPE; signedHalfCast: READONLY ROPE; bitsPerDoubleWord: NAT = 64; bitsPerAddressUnit: NAT = 8; addressUnitsPerWord: NAT = 4; charsPerWordInString: NAT = 4; --like bytesPerWord, but independent of having bytes bestAlignment: NAT = 32; <> maxBitsForReturns: READONLY INT; maxBitsForSimpleStructs: READONLY INT; maxBitsForValueParams: READONLY INT; maxWordsForInlineFillWords: READONLY INT; firstOfINT: READONLY CARD; maxBitsForFastLiterals: READONLY INT; <<--as RISC machines often do not have load-literal instructions with full word range >> maxBitsForFastAnd: READONLY INT; <<--literals of that many bits can be packed into an and instruction >> idMaxLength: READONLY NAT; <> BitsToWords: PROC [b: INT] RETURNS [w: INT]; <> RoundUpToWordBoundary: PROC [b: INT] RETURNS [bits: INT]; <> RoundUpToBestAlignment: PROC [b: INT] RETURNS [bits: INT]; <> RoundUpCharsToWords: PROC [cn: INT] RETURNS [chars: INT]; <> PointeeBits: PROC [usedBits: INT] RETURNS [INT]; <<--pointee: the guy sombody is pointing at>> <<--finds bits of unit a pointer is pointing at>> TemporaryBits: PROC [usedBits: INT] RETURNS [INT]; <<--finds bits to be used for a temporary>> <<--= MAX[bitsPerWord, PointeeBits[usedBits]]>> definitions: READONLY ROPE; <> rightShiftSignedIsOk: READONLY BOOL; <<--fills left with sign bits>> maskNShiftLikeSun: BOOL = TRUE; <> <> takingAddressIsExpensive: BOOL; <<--true in architectures which put local variables in register >> consecutiveStringsAllocedAdj: READONLY BOOL; --true for C compilers that allocate space for consecutive string literals consecutively. END.