RS6000BreakWorldUtilitiesImpl.mesa
Copyright Ó 1991 by Xerox Corporation. All rights reserved.
Peter B. Kessler, April 18, 1990 9:06:00 pm PDT
Udagawa, June 28, 1991 7:44 pm PDT
DIRECTORY
BreakWorldArchitecture,
RS6000Architecture,
TargetArchitecture,
RS6000BreakWorldUtilities;
RS6000BreakWorldUtilitiesImpl: CEDAR PROGRAM
IMPORTS BreakWorldArchitecture, RS6000Architecture, TargetArchitecture
EXPORTS RS6000BreakWorldUtilities
~ {
RS6000InstructionFromBreakWorldAddress: PUBLIC PROCEDURE [
address: BreakWorldArchitecture.Address,
displacement: TargetArchitecture.Displacement ← TargetArchitecture.nullDisplacement]
RETURNS [RS6000Architecture.RS6000Instruction] ~ {
IF address.IsNullAddress[] THEN {
ERROR BreakWorldArchitecture.Cant[
code: $NullAddress, message: "RS6000InstructionFromBreakWorldAddress[nullAddress]"];
};
{
instruction: RS6000Architecture.RS6000Instruction ~
RS6000Architecture.RS6000InstructionFromTargetInstruction[
instruction: BreakWorldArchitecture.PeekInstruction[
pc: address, displacement: displacement]];
RETURN [instruction];
};
};
RS6000AddressFromBreakWorldAddress: PUBLIC PROCEDURE [
address: BreakWorldArchitecture.Address,
displacement: TargetArchitecture.Displacement ← TargetArchitecture.nullDisplacement]
RETURNS [RS6000Architecture.RS6000Address] ~ {
IF address.IsNullAddress[] THEN {
ERROR BreakWorldArchitecture.Cant[
code: $NullAddress, message: "RS6000InstructionFromBreakWorldAddress[nullAddress]"];
};
{
targetAddress: TargetArchitecture.Address ~ TargetArchitecture.AddressFromDisplacement[
address: BreakWorldArchitecture.TargetAddressFromBreakWorldAddress[address: address],
displacement: displacement];
rs6000Address: RS6000Architecture.RS6000Address ~
RS6000Architecture.RS6000AddressFromTargetAddress[
address: targetAddress];
RETURN [rs6000Address];
};
};
}.