! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! All the different classes of instructions (used to decode). Each different ! class has a different printing format. ! DECLARE LONG CONSTANT EVX$K_imemory = 1 DECLARE LONG CONSTANT EVX$K_fmemory = 2 DECLARE LONG CONSTANT EVX$K_ibranch = 3 DECLARE LONG CONSTANT EVX$K_fbranch = 4 DECLARE LONG CONSTANT EVX$K_operate = 5 DECLARE LONG CONSTANT EVX$K_float2 = 6 DECLARE LONG CONSTANT EVX$K_float3 = 7 DECLARE LONG CONSTANT EVX$K_jsr = 8 DECLARE LONG CONSTANT EVX$K_rcc = 9 DECLARE LONG CONSTANT EVX$K_pal = 10 DECLARE LONG CONSTANT EVX$K_sync0 = 11 DECLARE LONG CONSTANT EVX$K_sync1 = 12 DECLARE LONG CONSTANT EVX$K_floatoper = 13 DECLARE LONG CONSTANT EVX$K_operfloat = 14 DECLARE LONG CONSTANT EVX$K_unknown = 15 ! ! Codes to refer to the register operand numbers ! DECLARE LONG CONSTANT EVX$K_R0 = 0 DECLARE LONG CONSTANT EVX$K_R1 = 1 DECLARE LONG CONSTANT EVX$K_R2 = 2 DECLARE LONG CONSTANT EVX$K_R3 = 3 DECLARE LONG CONSTANT EVX$K_R4 = 4 DECLARE LONG CONSTANT EVX$K_R5 = 5 DECLARE LONG CONSTANT EVX$K_R6 = 6 DECLARE LONG CONSTANT EVX$K_R7 = 7 DECLARE LONG CONSTANT EVX$K_R8 = 8 DECLARE LONG CONSTANT EVX$K_R9 = 9 DECLARE LONG CONSTANT EVX$K_R10 = 10 DECLARE LONG CONSTANT EVX$K_R11 = 11 DECLARE LONG CONSTANT EVX$K_R12 = 12 DECLARE LONG CONSTANT EVX$K_R13 = 13 DECLARE LONG CONSTANT EVX$K_R14 = 14 DECLARE LONG CONSTANT EVX$K_R15 = 15 DECLARE LONG CONSTANT EVX$K_R16 = 16 DECLARE LONG CONSTANT EVX$K_R17 = 17 DECLARE LONG CONSTANT EVX$K_R18 = 18 DECLARE LONG CONSTANT EVX$K_R19 = 19 DECLARE LONG CONSTANT EVX$K_R20 = 20 DECLARE LONG CONSTANT EVX$K_R21 = 21 DECLARE LONG CONSTANT EVX$K_R22 = 22 DECLARE LONG CONSTANT EVX$K_R23 = 23 DECLARE LONG CONSTANT EVX$K_R24 = 24 DECLARE LONG CONSTANT EVX$K_R25 = 25 DECLARE LONG CONSTANT EVX$K_R26 = 26 DECLARE LONG CONSTANT EVX$K_R27 = 27 DECLARE LONG CONSTANT EVX$K_R28 = 28 DECLARE LONG CONSTANT EVX$K_R29 = 29 DECLARE LONG CONSTANT EVX$K_R30 = 30 DECLARE LONG CONSTANT EVX$K_R31 = 31 DECLARE LONG CONSTANT EVX$K_F0 = 0 DECLARE LONG CONSTANT EVX$K_F1 = 1 DECLARE LONG CONSTANT EVX$K_F2 = 2 DECLARE LONG CONSTANT EVX$K_F3 = 3 DECLARE LONG CONSTANT EVX$K_F4 = 4 DECLARE LONG CONSTANT EVX$K_F5 = 5 DECLARE LONG CONSTANT EVX$K_F6 = 6 DECLARE LONG CONSTANT EVX$K_F7 = 7 DECLARE LONG CONSTANT EVX$K_F8 = 8 DECLARE LONG CONSTANT EVX$K_F9 = 9 DECLARE LONG CONSTANT EVX$K_F10 = 10 DECLARE LONG CONSTANT EVX$K_F11 = 11 DECLARE LONG CONSTANT EVX$K_F12 = 12 DECLARE LONG CONSTANT EVX$K_F13 = 13 DECLARE LONG CONSTANT EVX$K_F14 = 14 DECLARE LONG CONSTANT EVX$K_F15 = 15 DECLARE LONG CONSTANT EVX$K_F16 = 16 DECLARE LONG CONSTANT EVX$K_F17 = 17 DECLARE LONG CONSTANT EVX$K_F18 = 18 DECLARE LONG CONSTANT EVX$K_F19 = 19 DECLARE LONG CONSTANT EVX$K_F20 = 20 DECLARE LONG CONSTANT EVX$K_F21 = 21 DECLARE LONG CONSTANT EVX$K_F22 = 22 DECLARE LONG CONSTANT EVX$K_F23 = 23 DECLARE LONG CONSTANT EVX$K_F24 = 24 DECLARE LONG CONSTANT EVX$K_F25 = 25 DECLARE LONG CONSTANT EVX$K_F26 = 26 DECLARE LONG CONSTANT EVX$K_F27 = 27 DECLARE LONG CONSTANT EVX$K_F28 = 28 DECLARE LONG CONSTANT EVX$K_F29 = 29 DECLARE LONG CONSTANT EVX$K_F30 = 30 DECLARE LONG CONSTANT EVX$K_F31 = 31 DECLARE LONG CONSTANT EIF$Zero_register = 32 ! ! The following fields define all the possible instruction formats ! DECLARE LONG CONSTANT EIF$S_INSTRDEF = 4 record INSTRDEF group EIF$R_FLAGS_OVERLAY variant case LONG EIF$L_Instr ! Entire instruction case group EIF$R_MEMORY_FIELDS ! Memory displacement ! Second register operand ! First register operand LONG Mem_imm_bits ! COMMENT ADDED BY SDL - Mem_imm_bits contains bits Mem_imm through FILL_128_ end group EIF$R_MEMORY_FIELDS case group EIF$R_BRANCH_FIELDS ! Branch displacement LONG Brnch_imm_bits ! COMMENT ADDED BY SDL - Brnch_imm_bits contains bits Brnch_imm through FILL_129_ end group EIF$R_BRANCH_FIELDS case group EIF$R_OPERATE_FIELDS ! Third register operand ! Operate sub-opcode ! Set if literal mode ! Literal value LONG Rc_bits ! COMMENT ADDED BY SDL - Rc_bits contains bits Rc through FILL_130_ end group EIF$R_OPERATE_FIELDS case group EIF$R_FLOAT_FIELDS ! Third floating register operand ! Floating sub-opcode ! Second floating register operand ! First floating register operand LONG Fc_bits ! COMMENT ADDED BY SDL - Fc_bits contains bits Fc through FILL_131_ end group EIF$R_FLOAT_FIELDS case group EIF$R_PAL_FIELDS ! PAL sub-opcode LONG Pal_func_bits ! COMMENT ADDED BY SDL - Pal_func_bits contains bits Pal_func through FILL_132_ end group EIF$R_PAL_FIELDS case group EIF$R_SYNC_FIELDS ! Sync function code WORD Sync_func_bits ! COMMENT ADDED BY SDL - Sync_func_bits contains bits Sync_func through Sync_func end group EIF$R_SYNC_FIELDS case group EIF$R_OPCODE_FIELDS ! Instruction opcode LONG Fill_bits ! COMMENT ADDED BY SDL - Fill_bits contains bits Fill through Opcode end group EIF$R_OPCODE_FIELDS end variant end group EIF$R_FLAGS_OVERLAY end record INSTRDEF ! ! bounds for the above fields ! DECLARE LONG CONSTANT EIF$Opc_lower_bound = 0 DECLARE LONG CONSTANT EIF$Opc_upper_bound = 64 DECLARE LONG CONSTANT EIF$Opr_lower_bound = 0 DECLARE LONG CONSTANT EIF$Opr_upper_bound = 128 DECLARE LONG CONSTANT EIF$Flt_lower_bound = 0 DECLARE LONG CONSTANT EIF$Flt_upper_bound = 2048 ! ! decode field printing widths ! DECLARE LONG CONSTANT EIF$Mem_imm_width = 4 DECLARE LONG CONSTANT EIF$Brnch_imm_width = 6 DECLARE LONG CONSTANT EIF$Opr_imm_width = 2