// TABLET.PRX.32, 29-May-81 15:59:14, Edit by EVANS // TABLET.PRX.27, 27-May-81 12:57:15, Edit by EVANS // TABLET.PRX.21, 26-May-81 16:09:42, Edit by EVANS // MODIFICATIONS: - version 7.2 // 16-Sep-1984 F. Holloway For 32 bit integer compares on PDP: // Added BHI, BCS, BLOS,BLO, BGE, BGT // BLT, BHIS, BLE opcodes // 06-Dec-1984 F. Holloway Added mul_sb, div_sb, mod_sb, div_ub // #177400 // MOVB, MOVZWL, DIVL2, MOVC5 for VAX // added C_flex ccode // 12-Dec-1984 T. De Groot Added #-2,#-3,#-4,#16 // Added "eq", "ne" // 15-Jan-1985 T. De Groot Added C_address ccode //------------------------------------------------------------------ module TABLET // TABLET -- Symbol table for the Table Loader for VAX and PDP-11. // This module defines the structure and relevant enumerations. // It initializes many enries, and leaves room for more while // the program runs. export Token_length, Token, null_token, reserve_symbol_type, Symbol_kind, STE, Symbol_max, Symbol, ST, last_symbol import opcodes from OPCODE % if VAX import bcc_op from OPCODE % orif PDP11 import bhis_op, blo_op from OPCODE // version 7.2 % endif import C_code_tag from CCODE import operand_type from CCOPTYPE import reg, address_mode from OPERND import action_type, Pattern_tag, Pattern, local_index, table_ccode_tag, sys_names from CGTDEFS // Symbol table declare // Declarations for TOKENs. A Token is an item read from CGTABLES.DAT. Token_length = 12 char_initially_space is char initially $ Token is packed array[1..Token_length] of char_initially_space null_token = " " // There are several kinds of table in CGTABLES, as follows: reserve_symbol_type is [ // reserved symbols operator_table, opcode_array, opcode_type_array, operator_type_array, operator_range, operator_class, begin_tables, end_tables ] // Kinds of symbols in the symbol table. Symbol_kind is [ reserved_symbol, // reserved word, naming major table pattern_symbol, // appears in tamplate patterns action_symbol, // specifies an action for match label_name, // Ln temporary_name, // Tn register_name, // Rn SP system_name, // assembler symbol (prx$xxx) type_name, // actually, a size (byte, word, etc.) ccode_ccode_table, // table from ccode to ccode type_ccode_table, // table from size to ccode operand_function, // address-mode function ccode_to_ccode_function, // function from ccode to ccode type_ccode_to_ccode_function, // function from type and ccode to // ccode ccode_number_to_ccode_function // function from ccode and number to // ccode ] // The structure of an entry in the symbol table. //// STE is packed structure // symbol table entry STE is structure // symbol table entry T: Token kind: Symbol_kind select kind from case reserved_symbol: symbol_type: reserve_symbol_type case pattern_symbol: pattern: Pattern case action_symbol: action: action_type select action from case simple_instruction_action: opcode: opcodes case type_instruction_action, operator_instruction_action: table_number: integer endselect case ccode_ccode_table, type_ccode_table: table_n: integer case label_name: label_number: local_index case temporary_name: temporary_number: local_index case register_name: reg: reg case system_name: sys_id: sys_names case type_name: type: operand_type case operand_function: mode: address_mode case ccode_to_ccode_function, type_ccode_to_ccode_function, ccode_number_to_ccode_function: funct: table_ccode_tag endselect endstructure // Following is the symbol table itself. // First, some abbreviations to make the table easier to type. P_S = pattern_symbol A_S = action_symbol LMN = element spec_lit = specific_literal SIA = simple_instruction_action % if source_11 Symbol_max = 450 % otherwise Symbol_max = 500 % endif Symbol is 0..Symbol_max last_symbol: static -1..Symbol_max // Note that the table is terminated by a blank token (T=null_token). /// TABLES scans for this as it starts and updates last_symbol. STT is array[Symbol] of STE // symbol table type ST: static STT initially table STT ( // RESERVED SYMBOLS -- major tables to be loaded. STE(T:"ccode_table", kind: reserved_symbol, symbol_type: operator_table), STE(T:"opcode_array", kind: reserved_symbol, symbol_type: opcode_array), STE(T:"opcode_type", kind: reserved_symbol, symbol_type: opcode_type_array), STE(T:"ccode_type", kind: reserved_symbol, symbol_type: operator_type_array), STE(T:"ccode_range", kind: reserved_symbol, symbol_type: operator_range), STE(T:"ccode_class", kind: reserved_symbol, symbol_type: operator_class), STE(T:"begin_tables", kind: reserved_symbol, symbol_type: begin_tables), STE(T:"end_tables", kind: reserved_symbol, symbol_type: end_tables), // ACTION SYMBOLS -- actions to be executed on pattern match. STE(T:"cgend", kind: A_S, action: end_action), STE(T:"stop", kind: A_S, action: stop_action), STE(T:"newtemp", kind: A_S, action: newtemp_action), STE(T:"newlabel", kind: A_S, action: newlabel_action), STE(T:"placelabel", kind: A_S, action: placelabel_action), STE(T:"push", kind: A_S, action: push_action), STE(T:"release", kind: A_S, action: release_action), STE(T:"assign", kind: A_S, action: assign_action), STE(T:"moff", kind: A_S, action: moff_action), STE(T:"do_access", kind: A_S, action: do_access_action), STE(T:"do_indirect", kind: A_S, action: do_indirect_action), STE(T:"do_machine", kind: A_S, action: do_machine_action), STE(T:"do_select", kind: A_S, action: do_select_action), STE(T:"do_semicolon", kind: A_S, action: do_semicolon_action), STE(T:"do_stack_adj", kind: A_S, action: do_stack_adjust_action), STE(T:"do_subscript", kind: A_S, action: do_subscript_action), STE(T:"do_entry", kind: A_S, action: do_entry_action), % if VAX STE(T:"do_cvt_v", kind: A_S, action: do_cvt_v_action), STE(T:"vlass", kind: A_S, action: vlass_action), STE(T:"vrass", kind: A_S, action: vrass_action), % endif % if PDP11 STE(T:"do_for_call", kind: A_S, action: do_fortran_call_action), STE(T:"do_for_entry", kind: A_S, action: do_fortran_entry_action), STE(T:"do_ref", kind: A_S, action: do_ref_action), STE(T:"do_push_m", kind: A_S, action: do_push_m_action), STE(T:"do_cvt_v", kind: A_S, action: do_cvt_v_action), STE(T:"vlass", kind: A_S, action: vlass_action), STE(T:"vrass", kind: A_S, action: vrass_action), % endif % if PDP10 STE(T:"do_adj_frame", kind: A_S, action: do_adjust_frame), STE(T:"do_ass_pack", kind: A_S, action: do_assign_pack), STE(T:"do_ass_v", kind: A_S, action: do_ass_v_action), STE(T:"do_cvt_v", kind: A_S, action: do_cvt_v_action), % endif % if VAX STE(T:"do_scpent", kind: A_S, action: do_scpent), STE(T:"do_scplve", kind: A_S, action: do_scplve), % endif STE(T:"not_implemen", kind: A_S, action: not_implemented_action), // OPERAND TYPES (i.e., operand sizes) % if VAX or PDP11 STE(T:"byte", kind: type_name, type: bytex), % endif STE(T:"word", kind: type_name, type: wordx), STE(T:"long", kind: type_name, type: long), STE(T:"float", kind: type_name, type: float), % if VAX STE(T:"quad", kind: type_name, type: quad), % endif // TEMPORARIES USED IN TEMPLATES. STE(T:"T1", kind: temporary_name, temporary_number: 1), STE(T:"T2", kind: temporary_name, temporary_number: 2), STE(T:"T3", kind: temporary_name, temporary_number: 3), STE(T:"T4", kind: temporary_name, temporary_number: 4), STE(T:"T5", kind: temporary_name, temporary_number: 5), // LABELS USED IN TEMPLATES. STE(T:"L1", kind: label_name, label_number: 1), STE(T:"L2", kind: label_name, label_number: 2), STE(T:"L3", kind: label_name, label_number: 3), // HARDWARE REGISTERS FOR THE OBJECT MACHINE. STE(T:"R0", kind: register_name, reg: R0), STE(T:"R1", kind: register_name, reg: R1), STE(T:"R2", kind: register_name, reg: R2), STE(T:"R3", kind: register_name, reg: R3), STE(T:"R4", kind: register_name, reg: R4), STE(T:"R5", kind: register_name, reg: R5), % if VAX STE(T:"AP", kind: register_name, reg: AP), STE(T:"FP", kind: register_name, reg: FP), % endif STE(T:"SP", kind: register_name, reg: SP), % if PDP11 STE(T:"PC", kind: register_name, reg: PC), STE(T:"AC0", kind: register_name, reg: AC0), % endif // INSTRUCTION OPERAND ADDRESSING MODES. % if PDP11 STE(T:"mode_reg_ind", kind: operand_function, mode: reg_indirect), STE(T:"mode_inc", kind: operand_function, mode: auto_inc), STE(T:"mode_inc_ind", kind: operand_function, mode: auto_inc_indirect), STE(T:"mode_dec", kind: operand_function, mode: auto_dec), % orif VAX STE(T:"mode_reg_ind", kind: operand_function, mode: reg_indirect_mode), STE(T:"mode_inc", kind: operand_function, mode: auto_inc_mode), STE(T:"mode_inc_ind", kind: operand_function, mode: auto_inc_indirect_mode), STE(T:"mode_dec", kind: operand_function, mode: auto_dec_mode), % orif PDP10 STE(T: "mode_lit", kind: operand_function, mode: literal_mode), STE(T: "mode_reg", kind: operand_function, mode: reg_mode), STE(T: "mode_reg_ind", kind: operand_function, mode: reg_indirect), STE(T: "mode_index", kind: operand_function, mode: index_mode), STE(T: "mode_dex_ind", kind: operand_function, mode: index_indirect), STE(T: "mode_abs", kind: operand_function, mode: absolute_mode), STE(T: "mode_abs_ind", kind: operand_function, mode: absolute_indirect), STE(T: "0", kind: operand_function, mode: null_operand_mode), % endif // FUNCTIONS FROM CCODE TO CCODE. STE(T:"lo", kind: ccode_to_ccode_function, funct: ccode_lo_ccode), STE(T:"hi", kind: ccode_to_ccode_function, funct: ccode_hi_ccode), STE(T:"label", kind: ccode_to_ccode_function, funct: ccode_label_ccode), STE(T:"kolon", kind: ccode_to_ccode_function, funct: ccode_colon_ccode), STE(T:"len", kind: ccode_to_ccode_function, funct: ccode_len_ccode), % if VAX or PDP11 STE(T:"blen", kind: ccode_to_ccode_function, funct: ccode_blen_ccode), % endif STE(T:"wlen", kind: ccode_to_ccode_function, funct: ccode_wlen_ccode), % if PDP11 or PDP10 STE(T:"a", kind: ccode_to_ccode_function, funct: ccode_a_ccode), % endif STE(T:"size", kind: ccode_to_ccode_function, funct: ccode_size_ccode), STE(T:"pos", kind: ccode_to_ccode_function, funct: ccode_pos_ccode), % if VAX STE(T:"args", kind: ccode_to_ccode_function, funct: ccode_args_ccode), % endif STE(T:"ref", kind: ccode_to_ccode_function, funct: ccode_ref_ccode), STE(T:"not#", kind: ccode_to_ccode_function, funct: ccode_not_ccode), STE(T:"neg#", kind: ccode_to_ccode_function, funct: ccode_neg_ccode), % if PDP10 STE(T:"log2", kind: ccode_to_ccode_function, funct: ccode_log2_ccode), STE(T:"addr_of_end", kind: ccode_to_ccode_function, funct: ccode_addr_of_end_ccode), % endif STE(T:"lt", kind: type_ccode_to_ccode_function, funct: ccode_lt_ccode), STE(T:"gt", kind: type_ccode_to_ccode_function, funct: ccode_gt_ccode), STE(T:"ge", kind: type_ccode_to_ccode_function, funct: ccode_ge_ccode), STE(T:"le", kind: type_ccode_to_ccode_function, funct: ccode_le_ccode), //--- version 7.2 ------------------------------------------------------------ // Added the following: STE(T:"eq", kind: type_ccode_to_ccode_function, funct: ccode_eq_ccode), STE(T:"ne", kind: type_ccode_to_ccode_function, funct: ccode_ne_ccode), //---------------------------------------------------------------------------- STE(T:"off", kind: ccode_number_to_ccode_function, funct: ccode_off_ccode), // PATTERN SYMBOLS -- SYMBOLS THAT APPEAR IN TEMPLATE PATTERNS // PATTERN SYMBOLS -- OPERANDS. STE(T:"X", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_operand)), STE(T:"T", kind: P_S, pattern: Pattern(Ptag: temporary)), STE(T:"NT", kind: P_S, pattern: Pattern(Ptag: temporary, invert: true)), STE(T:"R", kind: P_S, pattern: Pattern(Ptag: operand_mode, mode: reg_mode)), STE(T:"NR", kind: P_S, pattern: Pattern(Ptag: operand_mode, mode: reg_mode, invert: true)), STE(T:"&1", kind: P_S, pattern: Pattern(Ptag: stack, N: 0)), STE(T:"&2", kind: P_S, pattern: Pattern(Ptag: stack, N: 1)), STE(T:"&3", kind: P_S, pattern: Pattern(Ptag: stack, N: 2)), STE(T:"&4", kind: P_S, pattern: Pattern(Ptag: stack, N: 3)), STE(T:"&5", kind: P_S, pattern: Pattern(Ptag: stack, N: 4)), STE(T:"&6", kind: P_S, pattern: Pattern(Ptag: stack, N: 5)), STE(T:"&7", kind: P_S, pattern: Pattern(Ptag: stack, N: 6)), STE(T:"&8", kind: P_S, pattern: Pattern(Ptag: stack, N: 7)), STE(T:"&9", kind: P_S, pattern: Pattern(Ptag: stack, N: 8)), STE(T:"N&1", kind: P_S, pattern: Pattern(Ptag: stack, N: 1, invert: true)), % if VAX STE(T:"#", kind: P_S, pattern: Pattern(Ptag: operand_mode, mode: literal_mode)), STE(T:"N#", kind: P_S, pattern: Pattern(Ptag: operand_mode, mode: literal_mode, invert: true)), % orif PDP11 STE(T:"#", kind: P_S, pattern: Pattern(Ptag: any_literal)), STE(T:"N#", kind: P_S, pattern: Pattern(Ptag: any_literal, invert: true)), % endif STE(T:"#>=0", kind: P_S, pattern: Pattern(Ptag: nonnegative_literal)), % if PDP10 STE(T:"#", kind: P_S, pattern: Pattern(Ptag: operand_mode, mode: literal_mode)), STE(T:"N#", kind: P_S, pattern: Pattern(Ptag: operand_mode, mode: literal_mode, invert: true)), STE(T:"#I", kind: P_S, pattern: Pattern(Ptag: immediate_literal)), STE(T:"#**2", kind: P_S, pattern: Pattern(Ptag: power_of_2_literal)), % endif STE(T:"#<<>0",kind: P_S, pattern: Pattern(Ptag: negative_literal)), STE(T:"#0", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 0)), STE(T:"#1", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 1)), STE(T:"#2", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 2)), STE(T:"#3", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 3)), STE(T:"#4", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 4)), STE(T:"#8", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 8)), //-------------------version 7.2 ----------------------- STE(T:"#16", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 16)), //-------------------version 7.2 ----------------------- STE(T:"#177400", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: 8!177400)), //-------------------------------------------------------- STE(T:"#-1", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: -1)), //-------------------version 7.2 ----------------------- STE(T:"#-2", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: -2)), STE(T:"#-3", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: -3)), STE(T:"#-4", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: -4)), //-------------------------------------------------------- STE(T:"#-16", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: -16)), % if PDP10 STE(T:"#-35", kind: P_S, pattern: Pattern(Ptag: spec_lit, literal_value: -35)), % endif // PATTERN SYMBOLS -- CLASSES. % if VAX or PDP11 STE(T:"IUOP", kind: P_S, pattern: Pattern(Ptag: iuop)), % endif % if VAX STE(T:"IBOP2", kind: P_S, pattern: Pattern(Ptag: ibop2)), STE(T:"IBOP3", kind: P_S, pattern: Pattern(Ptag: ibop3)), % orif PDP11 STE(T:"IBOP", kind: P_S, pattern: Pattern(Ptag: ibop)), STE(T:"IBOPR", kind: P_S, pattern: Pattern(Ptag: ibopr)), STE(T:"IFROP", kind: P_S, pattern: Pattern(Ptag: ifrop)), % endif % if VAX or PDP11 STE(T:"IROP", kind: P_S, pattern: Pattern(Ptag: irop)), STE(T:"revop", kind: P_S, pattern: Pattern(Ptag: revop)), % orif PDP10 STE(T:"op_rev", kind: P_S, pattern: Pattern(Ptag: revop)), STE(T:"op_x", kind: P_S, pattern: Pattern(Ptag: op_x_op)), STE(T:"op_y", kind: P_S, pattern: Pattern(Ptag: op_y_op)), STE(T:"op_m", kind: P_S, pattern: Pattern(Ptag: op_m_op)), % endif // PATTERN SYMBOLS -- SIMPLE OPERATORS. STE(T:"fcall", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_function_call)), STE(T:"pcall", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_procedure_call)), % if VAX or PDP11 STE(T:"ass_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_b)), % endif STE(T:"ass_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_w)), STE(T:"ass_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_l)), STE(T:"ass_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_f)), % if VAX STE(T:"ass_q", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_q)), % endif STE(T:"ass_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_d)), STE(T:"ass_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_m)), STE(T:"ass_v", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_v)), % if VAX or PDP11 STE(T:"swap_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_b)), % endif STE(T:"swap_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_m)), STE(T:"swap_uv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_uv)), STE(T:"swap_sv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_sv)), % if VAX or PDP11 STE(T:"swap_sbv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_sbv)), STE(T:"swap_ubv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_ubv)), % endif STE(T:"swap_swv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_swv)), STE(T:"swap_uwv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_swap_uwv)), % if VAX or PDP11 STE(T:"argref_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_argref_b)), % endif % if PDP10 STE(T:"argref_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_argref_w)), % endif STE(T:"argref_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_argref_m)), % if VAX or PDP11 STE(T:"push_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_b)), % endif STE(T:"push_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_w)), STE(T:"push_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_l)), STE(T:"push_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_f)), STE(T:"push_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_d)), STE(T:"push_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_m)), % if VAX or PDP11 STE(T:"pop_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_b)), % endif STE(T:"pop_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_w)), STE(T:"pop_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_l)), % if VAX STE(T:"pop_q", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_q)), % endif STE(T:"pop_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_f)), STE(T:"pop_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_d)), STE(T:"pop_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_m)), % if VAX or PDP11 STE(T:"cvt_ulb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_ulb)), % endif % if VAX STE(T:"cvt_ulw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_ulw)), % endif STE(T:"cvt_swf", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_swf)), STE(T:"cvt_fsw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_fsw)), STE(T:"cvt_uv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_uv)), STE(T:"cvt_sv", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_sv)), %if PDP10 STE(T:"cvt_swd", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_swd)), STE(T:"cvt_fd", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_fd)), STE(T:"cvt_dsw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_dsw)), STE(T:"cvt_df", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_df)), STE(T:"cvt_sld", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_sld)), STE(T:"cvt_dsl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_dsl)), STE(T:"cvt_slf", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_slf)), STE(T:"cvt_fsl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_fsl)), % endif % if VAX or PDP11 STE(T:"neg_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_neg_b)), % orif PDP10 STE(T:"neg_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_neg_w)), % endif STE(T:"neg_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_neg_l)), STE(T:"neg_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_neg_d)), % if VAX or PDP11 STE(T:"abs_b", kind: P_S, pattern: Pattern(Ptag: element, Ctag: C_abs_b)), % orif PDP10 STE(T:"abs_w", kind: P_S, pattern: Pattern(Ptag: element, Ctag: C_abs_w)), % endif STE(T:"abs_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_abs_d)), STE(T:"round_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_round_f)), STE(T:"round_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_round_d)), STE(T:"floor_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_floor_f)), STE(T:"floor_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_floor_d)), STE(T:"ceil_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ceil_f)), STE(T:"ceil_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ceil_d)), % if PDP10 STE(T:"ior_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ior_w)), % endif STE(T:"ior_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ior_l)), % if VAX or PDP11 STE(T:"bic_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_bic_l)), % endif STE(T:"xor_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_xor_w)), STE(T:"xor_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_xor_l)), STE(T:"mul_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mul_uw)), STE(T:"mul_sw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mul_sw)), //-------------version 7.2 ------------------- STE(T:"mul_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mul_sb)), //-------------------------------------------- STE(T:"div_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_div_uw)), //---------------version 7.2 ----------------- STE(T:"div_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_div_ub)), //--------------------------------------------- STE(T:"div_sw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_div_sw)), //-------------version 7.2 --------------------- STE(T:"div_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_div_sb)), //---------------------------------------------------------------- STE(T:"div_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_div_ul)), STE(T:"div_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_div_sl)), % if VAX or PDP11 STE(T:"exp_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_exp_ub)), % endif % if PDP10 STE(T:"exp_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_exp_uw)), % endif STE(T:"exp_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_exp_d)), % if VAX or PDP11 STE(T:"cvt_uwb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_uwb)), STE(T:"cvt_swb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_swb)), % endif STE(T:"cvt_uwl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_uwl)), % if VAX or PDP11 STE(T:"cvt_ubw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_ubw)), STE(T:"cvt_ubl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_ubl)), STE(T:"cvt_sbw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_sbw)), STE(T:"cvt_sbl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_sbl)), % endif STE(T:"cvt_swl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_swl)), STE(T:"cvt_slw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_slw)), % if PDP10 STE(T:"cvt_ulw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_ulw)), % endif % if VAX or PDP11 STE(T:"add_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_ub)), STE(T:"add_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_sb)), % endif STE(T:"add_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_uw)), STE(T:"add_sw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_sw)), STE(T:"add_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_ul)), STE(T:"add_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_sl)), % if VAX STE(T:"add_sq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_add_sq)), % endif % if VAX or PDP11 STE(T:"sub_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_ub)), STE(T:"sub_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_sb)), % endif STE(T:"sub_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_uw)), STE(T:"sub_sw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_sw)), STE(T:"sub_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_ul)), STE(T:"sub_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_sl)), % if VAX STE(T:"sub_sq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_sub_sq)), % endif % if VAX or PDP11 STE(T:"mul_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mul_ub)), % endif STE(T:"mul_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mul_ul)), STE(T:"mul_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mul_sl)), % if VAX or PDP11 STE(T:"mod_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mod_ub)), % endif STE(T:"mod_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mod_uw)), STE(T:"mod_sw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mod_sw)), //------------------version 7.2 --------------- STE(T:"mod_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mod_sb)), //----------------------------------------------- STE(T:"mod_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mod_sl)), % if VAX STE(T:"mod_sq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_mod_sq)), % endif % if VAX or PDP11 STE(T:"min_ub", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_min_ub)), % orif PDP10 STE(T:"min_uw", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_min_uw)), STE(T:"min_sw", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_min_sw)), % endif STE(T:"min_d", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_min_d)), % if VAX or PDP11 STE(T:"max_ub", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_max_ub)), % orif PDP10 STE(T:"max_uw", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_max_uw)), STE(T:"max_sw", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_max_sw)), % endif STE(T:"max_d", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_max_d)), % if VAX or PDP11 STE(T:"not_b", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_not_b)), % orif PDP10 STE(T:"not_w", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_not_w)), % endif STE(T:"not_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_not_l)), STE(T:"not_m", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_not_m)), % if VAX or PDP11 STE(T:"xor_b", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_xor_b)), % endif STE(T:"xor_m", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_xor_m)), % if VAX or PDP11 STE(T:"and_b", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_and_b)), % endif STE(T:"and_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_and_w)), STE(T:"and_l", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_and_l)), STE(T:"and_m", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_and_m)), % if VAX or PDP11 STE(T:"eqv_b", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_eqv_b)), % endif STE(T:"eqv_m", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_eqv_m)), % if VAX or PDP11 STE(T:"lsh_b", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_lsh_b)), % endif STE(T:"lsh_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_lsh_w)), STE(T:"lsh_l", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_lsh_l)), % if VAX STE(T:"lsh_q", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_lsh_q)), % endif % if VAX or PDP11 STE(T:"rsh_b", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_rsh_b)), % endif STE(T:"rsh_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_rsh_w)), STE(T:"rsh_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_rsh_l)), % if VAX STE(T:"rsh_q", kind: P_S, pattern: Pattern(ptag: LMN, ctag: C_rsh_q)), % endif % if VAX or PDP11 % endif % if PDP10 % endif % if VAX % endif % if VAX or PDP11 STE(T:"eq_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_eq_b)), % orif PDP10 STE(T:"eq_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_eq_w)), % endif STE(T:"eq_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_eq_l)), % if VAX STE(T:"eq_q", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_eq_q)), % endif STE(T:"eq_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_eq_m)), STE(T:"eq_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_eq_d)), % if VAX or PDP11 STE(T:"ne_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ne_b)), % orif PDP10 STE(T:"ne_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ne_w)), % endif STE(T:"ne_l", kind: P_S, pattern: pattern(Ptag: LMN, Ctag: C_ne_l)), % if VAX STE(T:"ne_q", kind: P_S, pattern: pattern(Ptag: LMN, Ctag: C_ne_q)), % endif STE(T:"ne_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ne_m)), STE(T:"ne_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ne_d)), % if VAX or PDP11 STE(T:"le_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_le_ub)), % orif PDP10 STE(T:"le_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_le_uw)), % endif STE(T:"le_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_le_sl)), STE(T:"le_d", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_le_d)), % if VAX or PDP11 STE(T:"ge_ub", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_ge_ub)), % orif PDP10 STE(T:"ge_uw", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_ge_uw)), % endif STE(T:"ge_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ge_sl)), STE(T:"ge_d", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_ge_d)), % if VAX or PDP11 STE(T:"lt_ub", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_lt_ub)), % orif PDP10 STE(T:"lt_uw", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_lt_uw)), % endif STE(T:"lt_sl", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_lt_sl)), STE(T:"lt_d", kind: P_S, pattern: Pattern(Ptag: LMN, CTag: C_lt_d)), % if VAX or PDP11 STE(T:"gt_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_gt_ub)), % orif PDP10 STE(T:"gt_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_gt_uw)), % endif STE(T:"gt_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_gt_sl)), STE(T:"gt_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_gt_d)), % if VAX or PDP11 STE(T:"range_lo_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_ub)), % endif % if PDP10 STE(T:"range_lo_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_uw)), % endif STE(T:"range_lo_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_ul)), % if VAX STE(T:"range_lo_uq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_uq)), % endif % if VAX or PDP11 STE(T:"range_hi_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_ub)), % endif % if PDP10 STE(T:"range_hi_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_uw)), % endif STE(T:"range_hi_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_ul)), % if VAX STE(T:"range_hi_uq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_uq)), % endif % if VAX or PDP11 STE(T:"range_ub", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_ub)), % endif % if PDP10 STE(T:"range_uw", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_uw)), % endif STE(T:"range_ul", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_ul)), % if VAX STE(T:"range_uq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_uq)), % endif % if VAX or PDP11 STE(T:"range_lo_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_sb)), % endif STE(T:"range_lo_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_sl)), % if VAX STE(T:"range_lo_sq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_lo_sq)), % endif % if VAX or PDP11 STE(T:"range_hi_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_sb)), % endif STE(T:"range_hi_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_sl)), % if VAX STE(T:"range_hi_sq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_hi_sq)), % endif % if VAX or PDP11 STE(T:"range_sb", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_sb)), % endif STE(T:"range_sl", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_sl)), % if VAX STE(T:"range_sq", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_range_sq)), % endif STE(T:"ex_nil", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ex_nil)), STE(T:"ov_s", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ov_s)), STE(T:"ov_u", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ov_u)), % if VAX or PDP11 STE(T:"iftrue_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iftrue_b)), STE(T:"iftrue_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iftrue_l)), STE(T:"iffalse_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iffalse_b)), STE(T:"iffalse_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iffalse_l)), STE(T:"select_b", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_select_b)), % endif STE(T:"select_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_select_w)), % if VAX or PDP10 STE(T:"select_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_select_l)), % endif % if PDP10 STE(T:"iftrue_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iftrue_w)), STE(T:"iffalse_w", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iffalse_w)), % endif STE(T:"access", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_access)), STE(T:"refx", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ref)), STE(T:"indirect", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_indirect)), STE(T:"subscript", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_subscript)), //---------------version 7.2 ------------------------------------- STE(T:"address", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_address)), //----------------------------------------------------------------- STE(T:"allocate", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_allocate)), STE(T:"alloc_init", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_allocate_initialized)), STE(T:"alloc_flex", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_allocate_flex)), STE(T:"free", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_free)), //---------------version 7.2 ------------------------------------- STE(T:"flex", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_flex)), //----------------------------------------------------------------- STE(T:"module", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_module)), STE(T:"entry", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_entry)), STE(T:"int_entry", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_interrupt_entry)), STE(T:"for_entry", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_fortran_entry)), STE(T:"for_fcall", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_fortran_function_call)), STE(T:"for_pcall", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_fortran_procedure_call)), STE(T:"return", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_return)), STE(T:"raise", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_raise)), STE(T:"raise_range", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_raise_range)), STE(T:"raise_nil", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_raise_nil)), STE(T:"raise_oflow", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_raise_oflow)), STE(T:"pop_guard", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_pop_guard)), STE(T:"push_guard", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_push_guard)), STE(T:"colon", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_colon)), STE(T:"goto", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_goto)), STE(T:"iflock", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_iflock)), STE(T:"lock", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_lock)), STE(T:"unlock", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_unlock)), STE(T:"machine", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_machine)), STE(T:"semicolon", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_semicolon)), STE(T:"stack_adjust", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_stack_adjust)), STE(T:"assert", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_assert)), STE(T:"replicate",kind:P_S,pattern: Pattern(Ptag: LMN, Ctag: C_replicate)), % if VAX STE(T:"scpent",kind:P_S,pattern: Pattern(Ptag: LMN, Ctag: C_scpent)), STE(T:"scplve",kind:P_S,pattern: Pattern(Ptag: LMN, Ctag: C_scplve)), % endif STE(T:"end", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_end)), // Opcodes -- PDP11 % if PDP11 STE(T:"ADC", kind: A_S, action: SIA, opcode: adc_op), STE(T:"ADD", kind: A_S, action: SIA, opcode: add_op), STE(T:"ASL", kind: A_S, action: SIA, opcode: asl_op), STE(T:"ASLB", kind: A_S, action: SIA, opcode: aslb_op), STE(T:"ASR", kind: A_S, action: SIA, opcode: asr_op), STE(T:"ASRB", kind: A_S, action: SIA, opcode: asrb_op), STE(T:"BCC", kind: A_S, action: SIA, opcode: bcc_op), STE(T:"BVC", kind: A_S, action: SIA, opcode: bvc_op), STE(T:"BIC", kind: A_S, action: SIA, opcode: bic_op), STE(T:"BIS", kind: A_S, action: SIA, opcode: bis_op), STE(T:"BISB", kind: A_S, action: SIA, opcode: bisb_op), STE(T:"BMI", kind: A_S, action: SIA, opcode: bmi_op), STE(T:"BNE", kind: A_S, action: SIA, opcode: bne_op), STE(T:"BPL", kind: A_S, action: SIA, opcode: bpl_op), //------Added followingopcodes for 32 bit integer compares -- Version 7.2 FH -- STE(T:"BHI", kind: A_S, action: SIA, opcode: bhi_op), STE(T:"BLT", kind: A_S, action: SIA, opcode: blt_op), STE(T:"BLE", kind: A_S, action: SIA, opcode: ble_op), STE(T:"BHIS", kind: A_S, action: SIA, opcode: bhis_op), STE(T:"BCS", kind: A_S, action: SIA, opcode: bcs_op), STE(T:"BLO", kind: A_S, action: SIA, opcode: blo_op), STE(T:"BLOS", kind: A_S, action: SIA, opcode: blos_op), STE(T:"BGE", kind: A_S, action: SIA, opcode: bge_op), STE(T:"BGT", kind: A_S, action: SIA, opcode: bgt_op), //----------------------------------------------------- STE(T:"BR", kind: A_S, action: SIA, opcode: br_op), STE(T:"CFCC", kind: A_S, action: SIA, opcode: cfcc_op), STE(T:"CLR", kind: A_S, action: SIA, opcode: clr_op), STE(T:"CLRB", kind: A_S, action: SIA, opcode: clrb_op), STE(T:"CLRF", kind: A_S, action: SIA, opcode: clrf_op), STE(T:"CMP", kind: A_S, action: SIA, opcode: cmp_op), STE(T:"CMPF", kind: A_S, action: SIA, opcode: cmpf_op), STE(T:"COM", kind: A_S, action: SIA, opcode: com_op), STE(T:"DEC", kind: A_S, action: SIA, opcode: dec_op), STE(T:"DECB", kind: A_S, action: SIA, opcode: decb_op), STE(T:"DIV", kind: A_S, action: SIA, opcode: div_op), STE(T:"INC", kind: A_S, action: SIA, opcode: inc_op), STE(T:"INCB", kind: A_S, action: SIA, opcode: incb_op), STE(T:"JSR", kind: A_S, action: SIA, opcode: jsr_op), STE(T:"LDCIF", kind: A_S, action: SIA, opcode: ldcif_op), STE(T:"LDF", kind: A_S, action: SIA, opcode: ldf_op), STE(T:"MOV", kind: A_S, action: SIA, opcode: mov_op), STE(T:"MOVB", kind: A_S, action: SIA, opcode: movb_op), STE(T:"MUL", kind: A_S, action: SIA, opcode: mul_op), STE(T:"NEG", kind: A_S, action: SIA, opcode: neg_op), STE(T:"RTS", kind: A_S, action: SIA, opcode: rts_op), STE(T:"SBC", kind: A_S, action: SIA, opcode: sbc_op), STE(T:"SOB", kind: A_S, action: SIA, opcode: sob_op), STE(T:"STCFI", kind: A_S, action: SIA, opcode: stcfi_op), STE(T:"STF", kind: A_S, action: SIA, opcode: stf_op), STE(T:"SUB", kind: A_S, action: SIA, opcode: sub_op), STE(T:"SXT", kind: A_S, action: SIA, opcode: sxt_op), STE(T:"TST", kind: A_S, action: SIA, opcode: tst_op), STE(T:"TSTB", kind: A_S, action: SIA, opcode: tstb_op), STE(T:"TSTF", kind: A_S, action: SIA, opcode: tstf_op), STE(T:"XOR", kind: A_S, action: SIA, opcode: xor_op), STE(T:"BEQ", kind: A_S, action: SIA, opcode: beq_op), % endif // Opcodes -- VAX % if VAX STE(T:"CLRL", kind: A_S, action: SIA, opcode: clrl_op), STE(T:"TSTL", kind: A_S, action: SIA, opcode: tstl_op), STE(T:"MOVL", kind: A_S, action: SIA, opcode: movl_op), STE(T:"MOVQ", kind: A_S, action: SIA, opcode: movq_op), STE(T:"PUSHL", kind: A_S, action: SIA, opcode: pushl_op), STE(T:"PUSHAB", kind: A_S, action: SIA, opcode: pushab_op), STE(T:"INSV", kind: A_S, action: SIA, opcode: insv_op), STE(T:"EXTZV", kind: A_S, action: SIA, opcode: extzv_op), STE(T:"EXTV", kind: A_S, action: SIA, opcode: extv_op), STE(T:"BLSS", kind: A_S, action: SIA, opcode: blss_op), STE(T:"BGEQ", kind: A_S, action: SIA, opcode: bgeq_op), STE(T:"BEQL", kind: A_S, action: SIA, opcode: beql_op), STE(T:"BNEQ", kind: A_S, action: SIA, opcode: bneq_op), STE(T:"BRB", kind: A_S, action: SIA, opcode: brb_op), STE(T:"BCC", kind: A_S, action: SIA, opcode: bcc_op), STE(T:"BVC", kind: A_S, action: SIA, opcode: BVC_op), STE(T:"BVS", kind: A_S, action: SIA, opcode: BVS_op), STE(T:"BLBC", kind: A_S, action: SIA, opcode: blbc_op), STE(T:"BLBS", kind: A_S, action: SIA, opcode: blbs_op), STE(T:"SUBL2", kind: A_S, action: SIA, opcode: subl2_op), STE(T:"ADDL2", kind: A_S, action: SIA, opcode: addl2_op), STE(T:"MOVC3", kind: A_S, action: SIA, opcode: movc3_op), STE(T:"CMPC3", kind: A_S, action: SIA, opcode: cmpc3_op), STE(T:"CALLS", kind: A_S, action: SIA, opcode: calls_op), STE(T:"RET", kind: A_S, action: SIA, opcode: ret_op), STE(T:"JSB", kind: A_S, action: SIA, opcode: jsb_op), STE(T:"AOBLSS", kind: A_S, action: SIA, opcode: aoblss_op), STE(T:"AOBLEQ", kind: A_S, action: SIA, opcode: aobleq_op), STE(T:"SOBGTR", kind: A_S, action: SIA, opcode: sobgtr_op), STE(T:"SOBGEQ", kind: A_S, action: SIA, opcode: sobgeq_op), STE(T:"BBCCI", kind: A_S, action: SIA, opcode: bbcci_op), STE(T:"BBSSI", kind: A_S, action: SIA, opcode: bbssi_op), STE(T:"MOVZBL", kind: A_S, action: SIA, opcode: movzbl_op), STE(T:"ASHL", kind: A_S, action: SIA, opcode: ashl_op), STE(T:"ADWC", kind: A_S, action: SIA, opcode: adwc_op), STE(T:"SBWC", kind: A_S, action: SIA, opcode: sbwc_op), STE(T:"MOVAB", kind: A_S, action: SIA, opcode: movab_op), STE(T:"MOVW", kind: A_S, action: SIA, opcode: movw_op), //----------version 7.2----------------------------- STE(T:"MOVB", kind: A_S, action: SIA, opcode: movb_op), STE(T:"MOVZWL", kind: A_S, action: SIA, opcode: movzwl_op), STE(T:"DIVL2", kind: A_S, action: SIA, opcode: divl2_op), STE(T:"MOVC5", kind: A_S, action: SIA, opcode: movc5_op), //---------------------------------------------------- % endif // Opcodes -- PDP10 % if PDP10 STE(T: "ADD", kind: A_S, action: SIA, opcode: add_op), STE(T: "ADDM", kind: A_S, action: SIA, opcode: addm_op), STE(T: "AND", kind: A_S, action: SIA, opcode: and_op), STE(T: "ANDCA", kind: A_S, action: SIA, opcode: andca_op), STE(T: "ANDCAI", kind: A_S, action: SIA, opcode: andcai_op), STE(T: "ANDCAM", kind: A_S, action: SIA, opcode: andcam_op), STE(T: "ANDCB", kind: A_S, action: SIA, opcode: andcb_op), STE(T: "ANDCBM", kind: A_S, action: SIA, opcode: andcbm_op), STE(T: "ANDCM", kind: A_S, action: SIA, opcode: andcm_op), STE(T: "ANDCMM", kind: A_S, action: SIA, opcode: andcmm_op), STE(T: "AOBJN", kind: A_S, action: SIA, opcode: aobjn_op), STE(T: "AOJ", kind: A_S, action: SIA, opcode: aoj_op), STE(T: "AOS", kind: A_S, action: SIA, opcode: aos_op), STE(T: "AOSE", kind: A_S, action: SIA, opcode: aose_op), STE(T: "AOSG", kind: A_S, action: SIA, opcode: aosg_op), STE(T: "AOSGE", kind: A_S, action: SIA, opcode: aosge_op), STE(T: "AOSL", kind: A_S, action: SIA, opcode: aosl_op), STE(T: "AOSLE", kind: A_S, action: SIA, opcode: aosle_op), STE(T: "AOSN", kind: A_S, action: SIA, opcode: aosn_op), STE(T: "ASH", kind: A_S, action: SIA, opcode: ash_op), STE(T: "ASHC", kind: A_S, action: SIA, opcode: ashc_op), STE(T: "BLT", kind: A_S, action: SIA, opcode: blt_op), STE(T: "CAME", kind: A_S, action: SIA, opcode: came_op), STE(T: "CAMG", kind: A_S, action: SIA, opcode: camg_op), STE(T: "CAMGE", kind: A_S, action: SIA, opcode: camge_op), STE(T: "CAML", kind: A_S, action: SIA, opcode: caml_op), STE(T: "CAMLE", kind: A_S, action: SIA, opcode: camle_op), STE(T: "CAMN", kind: A_S, action: SIA, opcode: camn_op), STE(T: "DFAD", kind: A_S, action: SIA, opcode: dfad_op), STE(T: "DIV", kind: A_S, action: SIA, opcode: div_op), STE(T: "DMOVE", kind: A_S, action: SIA, opcode: dmove_op), STE(T: "DMOVNM", kind: A_S, action: SIA, opcode: dmovnm_op), STE(T: "EXCH", kind: A_S, action: SIA, opcode: exch_op), STE(T: "FADR", kind: A_S, action: SIA, opcode: fadr_op), STE(T: "FADRM", kind: A_S, action: SIA, opcode: fadrm_op), STE(T: "FDVR", kind: A_S, action: SIA, opcode: fdvr_op), STE(T: "FDVRM", kind: A_S, action: SIA, opcode: fdvrm_op), STE(T: "FIXR", kind: A_S, action: SIA, opcode: fixr_op), STE(T: "FLTR", kind: A_S, action: SIA, opcode: fltr_op), STE(T: "FMPR", kind: A_S, action: SIA, opcode: fmpr_op), STE(T: "FMPRM", kind: A_S, action: SIA, opcode: fmprm_op), STE(T: "FSBR", kind: A_S, action: SIA, opcode: fsbr_op), STE(T: "FSBRM", kind: A_S, action: SIA, opcode: fsbrm_op), STE(T: "HRL", kind: A_S, action: SIA, opcode: hrl_op), STE(T: "HRRI", kind: A_S, action: SIA, opcode: hrri_op), STE(T: "HRRZ", kind: A_S, action: SIA, opcode: hrrz_op), STE(T: "IDIV", kind: A_S, action: SIA, opcode: idiv_op), STE(T: "IDIVM", kind: A_S, action: SIA, opcode: idivm_op), STE(T: "IMUL", kind: A_S, action: SIA, opcode: imul_op), STE(T: "IMULM", kind: A_S, action: SIA, opcode: imulm_op), STE(T: "IOR", kind: A_S, action: SIA, opcode: ior_op), STE(T: "ORCA", kind: A_S, action: SIA, opcode: orca_op), STE(T: "ORCAI", kind: A_S, action: SIA, opcode: orcai_op), STE(T: "ORCAM", kind: A_S, action: SIA, opcode: orcam_op), STE(T: "ORCB", kind: A_S, action: SIA, opcode: orcb_op), STE(T: "ORCBM", kind: A_S, action: SIA, opcode: orcbm_op), STE(T: "ORCM", kind: A_S, action: SIA, opcode: orcm_op), STE(T: "ORCMM", kind: A_S, action: SIA, opcode: orcmm_op), STE(T: "IORM", kind: A_S, action: SIA, opcode: iorm_op), STE(T: "JRST", kind: A_S, action: SIA, opcode: jrst_op), STE(T: "JUMPE", kind: A_S, action: SIA, opcode: jumpe_op), STE(T: "JUMPG", kind: A_S, action: SIA, opcode: jumpg_op), STE(T: "JUMPGE", kind: A_S, action: SIA, opcode: jumpge_op), STE(T: "JUMPL", kind: A_S, action: SIA, opcode: jumpl_op), STE(T: "JUMPLE", kind: A_S, action: SIA, opcode: jumple_op), STE(T: "JUMPN", kind: A_S, action: SIA, opcode: jumpn_op), STE(T: "LSH", kind: A_S, action: SIA, opcode: lsh_op), STE(T: "LSHC", kind: A_S, action: SIA, opcode: lshc_op), STE(T: "MOVE", kind: A_S, action: SIA, opcode: move_op), STE(T: "MOVEI", kind: A_S, action: SIA, opcode: movei_op), STE(T: "MOVEM", kind: A_S, action: SIA, opcode: movem_op), STE(T: "MOVM", kind: A_S, action: SIA, opcode: movm_op), STE(T: "MOVMM", kind: A_S, action: SIA, opcode: movmm_op), STE(T: "MOVN", kind: A_S, action: SIA, opcode: movn_op), STE(T: "MOVNM", kind: A_S, action: SIA, opcode: movnm_op), STE(T: "MOVNS", kind: A_S, action: SIA, opcode: movns_op), STE(T: "MOVS", kind: A_S, action: SIA, opcode: movs_op), STE(T: "MOVSI", kind: A_S, action: SIA, opcode: movsi_op), STE(T: "POP", kind: A_S, action: SIA, opcode: pop_op), STE(T: "POPJ", kind: A_S, action: SIA, opcode: popj_op), STE(T: "PUSH", kind: A_S, action: SIA, opcode: push_op), STE(T: "PUSHJ", kind: A_S, action: SIA, opcode: pushj_op), STE(T: "SETCA", kind: A_S, action: SIA, opcode: setca_op), STE(T: "SETCAM", kind: A_S, action: SIA, opcode: setcam_op), STE(T: "SETCM", kind: A_S, action: SIA, opcode: setcm_op), STE(T: "SETCMM", kind: A_S, action: SIA, opcode: setcmm_op), STE(T: "SETO", kind: A_S, action: SIA, opcode: seto_op), STE(T: "SETOM", kind: A_S, action: SIA, opcode: setom_op), STE(T: "SETZ", kind: A_S, action: SIA, opcode: setz_op), STE(T: "SETZM", kind: A_S, action: SIA, opcode: setzm_op), STE(T: "SKIPA", kind: A_S, action: SIA, opcode: skipa_op), STE(T: "SKIPE", kind: A_S, action: SIA, opcode: skipe_op), STE(T: "SKIPGE", kind: A_S, action: SIA, opcode: skipge_op), STE(T: "SKIPL", kind: A_S, action: SIA, opcode: skipl_op), STE(T: "SKIPN", kind: A_S, action: SIA, opcode: skipn_op), STE(T: "SOJ", kind: A_S, action: SIA, opcode: soj_op), STE(T: "SOJG", kind: A_S, action: SIA, opcode: sojg_op), STE(T: "SOS", kind: A_S, action: SIA, opcode: sos_op), STE(T: "SOSE", kind: A_S, action: SIA, opcode: sose_op), STE(T: "SOSG", kind: A_S, action: SIA, opcode: sosg_op), STE(T: "SOSGE", kind: A_S, action: SIA, opcode: sosge_op), STE(T: "SOSL", kind: A_S, action: SIA, opcode: sosl_op), STE(T: "SOSLE", kind: A_S, action: SIA, opcode: sosle_op), STE(T: "SOSN", kind: A_S, action: SIA, opcode: sosn_op), STE(T: "SUB", kind: A_S, action: SIA, opcode: sub_op), STE(T: "SUBM", kind: A_S, action: SIA, opcode: subm_op), STE(T: "TDNE", kind: A_S, action: SIA, opcode: tdne_op), STE(T: "TDNN", kind: A_S, action: SIA, opcode: tdnn_op), STE(T: "XOR", kind: A_S, action: SIA, opcode: xor_op), STE(T: "XORM", kind: A_S, action: SIA, opcode: xorm_op), % endif // stuff % if VAX STE(T:"unibus_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_unibus_l)), STE(T:"unibus_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_unibus_f)), STE(T:"unibus_q", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_unibus_q)), STE(T:"unibus_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_unibus_d)), STE(T:"unibus_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_unibus_m)), STE(T:"ass_unibus_l", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_unibus_l)), STE(T:"ass_unibus_f", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_unibus_f)), STE(T:"ass_unibus_q", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_unibus_q)), STE(T:"ass_unibus_d", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_unibus_d)), STE(T:"ass_unibus_m", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_unibus_m)), STE(T:"ass_unibus_v", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_ass_unibus_v)), STE(T:"cvt_unibus_s", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_unibus_sv)), STE(T:"cvt_unibus_u", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_cvt_unibus_uv)), % endif STE(T:"nonlocal_ref", kind: P_S, pattern: Pattern(Ptag: LMN, Ctag: C_nonlocal_ref)), STE(T:"nlref", kind: ccode_to_ccode_function, funct: ccode_nlref_ccode), STE(T:null_token) // mark end of table ) enddeclare endmodule