|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 18432 (0x4800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package Machine_Code, seg_04b94f
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
package Machine_Code is
-- Description for the IBM RS/6000.
Version : constant := 57;
type Opcode is (A, A_R, A_O, A_O_R, Abs_Op, Abs_R, Abs_O, Abs_O_R, Ae, Ae_R,
Ae_O, Ae_O_R, Ai, Ai_R, Ame, Ame_R, Ame_O, Ame_O_R, And_Op,
And_R, Andc, Andc_R, Andil_R, Andiu_R, Aze, Aze_R, Aze_O,
Aze_O_R, B, Bl, Ba, Bla, Bbt, Bbtl, Bbta, Bbtla, Bbf, Bbfl,
Bbfa, Bbfla, Bbtc, Bbfc, Bbtcl, Bbfcl, Bbtr, Bbfr, Bbtrl,
Bbfrl, Bc, Bdnge, Bdnle, Bdnne, Bdnns, Bdzge, Bdzle, Bdzne,
Bdzns, Bge, Ble, Bne, Bns, Bdnlt, Bdngt, Bdneq, Bdnso,
Bdzlt, Bdzgt, Bdzeq, Bdzso, Blt, Bgt, Beq, Bso, Bdn, Bdz,
Bca, Bgea, Blea, Bnea, Bnsa, Blta, Bgta, Beqa, Bsoa, Bdna,
Bdza, Bcl, Bgel, Blel, Bnel, Bnsl, Bltl, Bgtl, Beql, Bsol,
Bdnl, Bdzl, Bcla, Bgela, Blela, Bnela, Bnsla, Bltla, Bgtla,
Beqla, Bsola, Bdnla, Bdzla, Bcc, Bgec, Blec, Bnec, Bnsc,
Bltc, Bgtc, Beqc, Bsoc, Bctr, Bccl, Bgecl, Blecl, Bnecl,
Bnscl, Bltcl, Bgtcl, Beqcl, Bsocl, Bctrl, Bcr, Bger, Bler,
Bner, Bnsr, Bltr, Bgtr, Beqr, Bsor, Bdnr, Bdzr, Br, Bcrl,
Bgerl, Blerl, Bnerl, Bnsrl, Bltrl, Bgtrl, Beqrl, Bsorl,
Bdnrl, Bdzrl, Brl, Cal, Cau, Cax, Cax_R, Cax_O, Cax_O_R,
Clcs, Clf, Cli, Cmp, Cmpi, Cmpl, Cmpli, Cntlz, Cntlz_R,
Crand, Crandc, Creqv, Crnand, Crnor, Cror, Crorc, Crxor,
Dclst, Dclz, Dcs, Div, Div_R, Div_O, Div_O_R, Divs, Divs_R,
Divs_O, Divs_O_R, Doz, Doz_R, Doz_O, Doz_O_R, Dozi, Eqv,
Eqv_R, Exts, Exts_R, Fa, Fa_R, Fabs, Fabs_R, Fcmpo, Fcmpu,
Fd, Fd_R, Fm, Fm_R, Fma, Fma_R, Fmr, Fmr_R, Fms, Fms_R,
Fnabs, Fnabs_R, Fneg, Fneg_R, Fnma, Fnma_R, Fnms, Fnms_R,
Frsp, Frsp_R, Fs, Fs_R, Ics, L, Lbrx, Lbz, Lbzu, Lbzux,
Lbzx, Lfd, Lfdu, Lfdux, Lfdx, Lfs, Lfsu, Lfsux, Lfsx, Lha,
Lhau, Lhaux, Lhax, Lhbrx, Lhz, Lhzu, Lhzux, Lhzx, Lil,
Liu, Lm, Lscbx, Lscbx_R, Lsi, Lsx, Lu, Lux, Lx, Maskg,
Maskg_R, Maskir, Maskir_R, Mcrf, Mcrfs, Mcrxr, Mfcr, Mffs,
Mffs_R, Mfmsr, Mfspr, Mfsr, Mfsri, Mr, Mr_R, Mtcr, Mtcrf,
Mtfs, Mtfs_R, Mtfsb0, Mtfsb0_R, Mtfsb1, Mtfsb1_R, Mtfsf,
Mtfsf_R, Mtfsfi, Mtfsfi_R, Mtmsr, Mtspr, Mtsr, Mtsri, Mul,
Mul_R, Mul_O, Mul_O_R, Muli, Muls, Muls_R, Muls_O, Muls_O_R,
Nabs, Nabs_R, Nabs_O, Nabs_O_R, Nand, Nand_R, Neg, Neg_R,
Neg_O, Neg_O_R, Nop, Nor, Nor_R, Or_Op, Or_R, Orc, Orc_R,
Oril, Oriu, Rac, Rac_R, Rfi, Rfsvc, Rlimi, Rlimi_R, Rlinm,
Rlinm_R, Rlmi, Rlmi_R, Rlnm, Rlnm_R, Rrib, Rrib_R, Sf,
Sf_R, Sf_O, Sf_O_R, Sfe, Sfe_R, Sfe_O, Sfe_O_R, Sfi, Sfme,
Sfme_R, Sfme_O, Sfme_O_R, Sfze, Sfze_R, Sfze_O, Sfze_O_R,
Si, Si_R, Sl, Sl_R, Sle, Sle_R, Sleq, Sleq_R, Sli, Sli_R,
Sliq, Sliq_R, Slliq, Slliq_R, Sllq, Sllq_R, Slq, Slq_R,
Sr, Sr_R, Sra, Sra_R, Srai, Srai_R, Sraiq, Sraiq_R, Sraq,
Sraq_R, Sre, Sre_R, Srea, Srea_R, Sreq, Sreq_R, Sri, Sri_R,
Sriq, Sriq_R, Srliq, Srliq_R, Srlq, Srlq_R, Srq, Srq_R,
St, Stb, Stbrx, Stbu, Stbux, Stbx, Stfd, Stfdu, Stfdux,
Stfdx, Stfs, Stfsu, Stfsux, Stfsx, Sth, Sthbrx, Sthu, Sthux,
Sthx, Stm, Stsi, Stsx, Stu, Stux, Stx, Svc, Svcl, Svca,
Svcla, Tlt, Tgt, Teq, Tllt, Tlgt, Tle, Tge, Tne, Tlle, Tlge,
Tlne, Tlti, Tgti, Teqi, Tllti, Tlgti, Tlei, Tgei, Tnei,
Tllei, Tlgei, Tlnei, Tlbi, Xor_Op, Xor_R, Xoril, Xoriu);
type Size is (Byte, Half, Word);
type Operand is private;
type Operand_Seq is array (Positive range <>) of Operand;
Z : Positive;
--
-- Instruction formats.
--
type Code_0 (Op : Opcode) is
record
null;
end record;
type Code_1 (Op : Opcode) is
record
Oprnd_1 : Operand;
end record;
type Code_2 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
end record;
type Code_3 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
Oprnd_3 : Operand;
end record;
type Code_4 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
Oprnd_3 : Operand;
Oprnd_4 : Operand;
end record;
type Code_5 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
Oprnd_3 : Operand;
Oprnd_4 : Operand;
Oprnd_5 : Operand;
end record;
--
-- Data formats.
--
type Data_1 (Sz : Size) is
record
Oprnd_1 : Operand;
end record;
type Data_N (Sz : Size) is
record
Oprnd_N : Operand_Seq (1 .. Z);
end record;
--
-- Call formats.
--
type Call_0 is
record
Subp : Operand;
end record;
type Call_1 is
record
Subp : Operand;
Oprnd_1 : Operand;
end record;
type Call_N is
record
Subp : Operand;
Oprnd_N : Operand_Seq (1 .. Z);
end record;
--
-- Registers.
--
-- General Purpose Registers.
R0 : constant Operand;
R1 : constant Operand;
R2 : constant Operand;
R3 : constant Operand;
R4 : constant Operand;
R5 : constant Operand;
R6 : constant Operand;
R7 : constant Operand;
R8 : constant Operand;
R9 : constant Operand;
R10 : constant Operand;
R11 : constant Operand;
R12 : constant Operand;
R13 : constant Operand;
R14 : constant Operand;
R15 : constant Operand;
R16 : constant Operand;
R17 : constant Operand;
R18 : constant Operand;
R19 : constant Operand;
R20 : constant Operand;
R21 : constant Operand;
R22 : constant Operand;
R23 : constant Operand;
R24 : constant Operand;
R25 : constant Operand;
R26 : constant Operand;
R27 : constant Operand;
R28 : constant Operand;
R29 : constant Operand;
R30 : constant Operand;
R31 : constant Operand;
Sp : constant Operand; -- r1
Fp : constant Operand; -- r31
-- Floating Point Registers.
Fr0 : constant Operand;
Fr1 : constant Operand;
Fr2 : constant Operand;
Fr3 : constant Operand;
Fr4 : constant Operand;
Fr5 : constant Operand;
Fr6 : constant Operand;
Fr7 : constant Operand;
Fr8 : constant Operand;
Fr9 : constant Operand;
Fr10 : constant Operand;
Fr11 : constant Operand;
Fr12 : constant Operand;
Fr13 : constant Operand;
Fr14 : constant Operand;
Fr15 : constant Operand;
Fr16 : constant Operand;
Fr17 : constant Operand;
Fr18 : constant Operand;
Fr19 : constant Operand;
Fr20 : constant Operand;
Fr21 : constant Operand;
Fr22 : constant Operand;
Fr23 : constant Operand;
Fr24 : constant Operand;
Fr25 : constant Operand;
Fr26 : constant Operand;
Fr27 : constant Operand;
Fr28 : constant Operand;
Fr29 : constant Operand;
Fr30 : constant Operand;
Fr31 : constant Operand;
-- Storage Control Registers.
Sr0 : constant Operand;
Sr1 : constant Operand;
Sr2 : constant Operand;
Sr3 : constant Operand;
Sr4 : constant Operand;
Sr5 : constant Operand;
Sr6 : constant Operand;
Sr7 : constant Operand;
Sr8 : constant Operand;
Sr9 : constant Operand;
Sr10 : constant Operand;
Sr11 : constant Operand;
Sr12 : constant Operand;
Sr13 : constant Operand;
Sr14 : constant Operand;
Sr15 : constant Operand;
-- Special Purpose Registers.
Mq : constant Operand;
Xer : constant Operand;
Rtcu : constant Operand;
Rtcl : constant Operand;
Dec : constant Operand;
Lr : constant Operand;
Ctr : constant Operand;
Tid : constant Operand;
Dsisr : constant Operand;
Dar : constant Operand;
Sdr0 : constant Operand;
Sdr1 : constant Operand;
Srr0 : constant Operand;
Srr1 : constant Operand;
-- Condition Register Fields.
Cr0 : constant Operand;
Cr1 : constant Operand;
Cr2 : constant Operand;
Cr3 : constant Operand;
Cr4 : constant Operand;
Cr5 : constant Operand;
Cr6 : constant Operand;
Cr7 : constant Operand;
-- Floating Point Condition Register Fields.
Fcr0 : constant Operand;
Fcr1 : constant Operand;
Fcr2 : constant Operand;
Fcr3 : constant Operand;
Fcr4 : constant Operand;
Fcr5 : constant Operand;
Fcr6 : constant Operand;
Fcr7 : constant Operand;
--
-- Addressing modes.
--
function Base (Expr : Operand) return Operand;
-- Description:
-- The expr denotes the effective address.
function "+" (Base : Operand; Disp : Operand) return Operand;
function "+" (Base : Operand; Disp : Integer) return Operand;
function "-" (Base : Operand; Disp : Integer) return Operand;
-- Description:
-- Displacement is added to the register to form the address.
-- The base operand must be a general register. The disp operand
-- can be a signed immediate constant, a label'ref, or external.
-- These functions are only allowed in the base function.
--
-- Forms:
-- reg + const
-- reg + label
-- reg + ext
-- reg + code
-- reg - const
function Immed (Val : Integer) return Operand;
function Immed (Val : Character) return Operand;
function "+" (Val : Integer) return Operand;
function "-" (Val : Integer) return Operand;
-- Description:
-- Immediate literal.
function Immed (Val : Float) return Operand;
function "+" (Val : Float) return Operand;
function "-" (Val : Float) return Operand;
-- Description:
-- Literal float operand denoting an address referencing the value
-- placed in a static segment.
function Uiu (Val : Integer) return Operand;
-- Description:
-- High-order 16 bits of 32 bit immediate.
function Uil (Val : Integer) return Operand;
-- Description:
-- Low-order 16 bits of 32 bit immediate.
function Siu (Val : Integer) return Operand;
-- Description:
-- High-order 16 bits, plus the msb bit of the low-order halfword of
-- the 32 bit immediate.
function Sil (Val : Integer) return Operand;
-- Description:
-- Low-order 15 bits of 32 bit immediate.
function Code (Subp : Operand) return Operand;
-- Description:
-- Given subp'ref, yields the external symbol referencing the
-- machine code of the subprogram.
function Ext (Name : Operand; Disp : Integer := 0) return Operand;
function Ext (Name : String; Disp : Integer := 0) return Operand;
-- Description:
-- The name denotes an external symbol. The displacement is added to
-- the value of name.
function "-" (Left, Right : Operand) return Operand;
-- Description:
-- Calculates the difference between two labels.
private
--
-- Implementation specific.
--
type Operand is new Integer;
-- General Purpose Registers.
R0 : constant Operand := 0;
R1 : constant Operand := 1;
R2 : constant Operand := 2;
R3 : constant Operand := 3;
R4 : constant Operand := 4;
R5 : constant Operand := 5;
R6 : constant Operand := 6;
R7 : constant Operand := 7;
R8 : constant Operand := 8;
R9 : constant Operand := 9;
R10 : constant Operand := 10;
R11 : constant Operand := 11;
R12 : constant Operand := 12;
R13 : constant Operand := 13;
R14 : constant Operand := 14;
R15 : constant Operand := 15;
R16 : constant Operand := 16;
R17 : constant Operand := 17;
R18 : constant Operand := 18;
R19 : constant Operand := 19;
R20 : constant Operand := 20;
R21 : constant Operand := 21;
R22 : constant Operand := 22;
R23 : constant Operand := 23;
R24 : constant Operand := 24;
R25 : constant Operand := 25;
R26 : constant Operand := 26;
R27 : constant Operand := 27;
R28 : constant Operand := 28;
R29 : constant Operand := 29;
R30 : constant Operand := 30;
R31 : constant Operand := 31;
Sp : constant Operand := R1;
Fp : constant Operand := R31;
-- Floating Point Registers.
Fr0 : constant Operand := 32;
Fr1 : constant Operand := 33;
Fr2 : constant Operand := 34;
Fr3 : constant Operand := 35;
Fr4 : constant Operand := 36;
Fr5 : constant Operand := 37;
Fr6 : constant Operand := 38;
Fr7 : constant Operand := 39;
Fr8 : constant Operand := 40;
Fr9 : constant Operand := 41;
Fr10 : constant Operand := 42;
Fr11 : constant Operand := 43;
Fr12 : constant Operand := 44;
Fr13 : constant Operand := 45;
Fr14 : constant Operand := 46;
Fr15 : constant Operand := 47;
Fr16 : constant Operand := 48;
Fr17 : constant Operand := 49;
Fr18 : constant Operand := 50;
Fr19 : constant Operand := 51;
Fr20 : constant Operand := 52;
Fr21 : constant Operand := 53;
Fr22 : constant Operand := 54;
Fr23 : constant Operand := 55;
Fr24 : constant Operand := 56;
Fr25 : constant Operand := 57;
Fr26 : constant Operand := 58;
Fr27 : constant Operand := 59;
Fr28 : constant Operand := 60;
Fr29 : constant Operand := 61;
Fr30 : constant Operand := 62;
Fr31 : constant Operand := 63;
-- Storage Control Registers.
Sr0 : constant Operand := 64;
Sr1 : constant Operand := 65;
Sr2 : constant Operand := 66;
Sr3 : constant Operand := 67;
Sr4 : constant Operand := 68;
Sr5 : constant Operand := 69;
Sr6 : constant Operand := 70;
Sr7 : constant Operand := 71;
Sr8 : constant Operand := 72;
Sr9 : constant Operand := 73;
Sr10 : constant Operand := 74;
Sr11 : constant Operand := 75;
Sr12 : constant Operand := 76;
Sr13 : constant Operand := 77;
Sr14 : constant Operand := 78;
Sr15 : constant Operand := 79;
-- Special Purpose Registers.
Mq : constant Operand := 80;
Xer : constant Operand := 81;
Rtcu : constant Operand := 82;
Rtcl : constant Operand := 83;
Dec : constant Operand := 84;
Lr : constant Operand := 85;
Ctr : constant Operand := 86;
Tid : constant Operand := 87;
Dsisr : constant Operand := 88;
Dar : constant Operand := 89;
Sdr0 : constant Operand := 90;
Sdr1 : constant Operand := 91;
Srr0 : constant Operand := 92;
Srr1 : constant Operand := 93;
-- Condition Register Fields.
Cr0 : constant Operand := 94;
Cr1 : constant Operand := 95;
Cr2 : constant Operand := 96;
Cr3 : constant Operand := 97;
Cr4 : constant Operand := 98;
Cr5 : constant Operand := 99;
Cr6 : constant Operand := 100;
Cr7 : constant Operand := 101;
-- Floating Point Condition Register Fields.
Fcr0 : constant Operand := 102;
Fcr1 : constant Operand := 103;
Fcr2 : constant Operand := 104;
Fcr3 : constant Operand := 105;
Fcr4 : constant Operand := 106;
Fcr5 : constant Operand := 107;
Fcr6 : constant Operand := 108;
Fcr7 : constant Operand := 109;
end Machine_Code;
pragma Built_In (Machine_Code);
nblk1=11
nid=0
hdr6=22
[0x00] rec0=13 rec1=00 rec2=01 rec3=01e
[0x01] rec0=0c rec1=00 rec2=02 rec3=09a
[0x02] rec0=0d rec1=00 rec2=03 rec3=076
[0x03] rec0=0d rec1=00 rec2=04 rec3=050
[0x04] rec0=2c rec1=00 rec2=05 rec3=032
[0x05] rec0=32 rec1=00 rec2=06 rec3=020
[0x06] rec0=23 rec1=00 rec2=07 rec3=040
[0x07] rec0=22 rec1=00 rec2=08 rec3=040
[0x08] rec0=23 rec1=00 rec2=09 rec3=02e
[0x09] rec0=25 rec1=00 rec2=0a rec3=00c
[0x0a] rec0=23 rec1=00 rec2=0b rec3=028
[0x0b] rec0=20 rec1=00 rec2=0c rec3=070
[0x0c] rec0=24 rec1=00 rec2=0d rec3=022
[0x0d] rec0=1e rec1=00 rec2=0e rec3=022
[0x0e] rec0=1d rec1=00 rec2=0f rec3=00c
[0x0f] rec0=1d rec1=00 rec2=10 rec3=042
[0x10] rec0=11 rec1=00 rec2=11 rec3=001
tail 0x21750b8ac8684354c4f41 0x42a00088462060003