/* * (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ #define RCSID3 "$Header$" /* * VAX-11 keywords */ 0, REG, 0, "r0", 0, REG, 1, "r1", 0, REG, 2, "r2", 0, REG, 3, "r3", 0, REG, 4, "r4", 0, REG, 5, "r5", 0, REG, 6, "r6", 0, REG, 7, "r7", 0, REG, 8, "r8", 0, REG, 9, "r9", 0, REG, 10, "r10", 0, REG, 11, "r11", 0, REG, 12, "r12", 0, REG, 12, "ap", 0, REG, 13, "r13", 0, REG, 13, "fp", 0, REG, 14, "r14", 0, REG, 14, "sp", 0, REG, 15, "r15", 0, REG, 15, "pc", /* For immediate mode, we need the size as specified by the instruction. Ordinary operands are therefore encoded as _w, _b, and _l to indicate size. For now, immediate floating point and immediate values of size > 4 are not implemented. _u is used for this. The valu_t field is used for the opcode. Most opcodes take one byte. The ones that don't take two bytes. */ /* integer arithmetic and logical instructions */ 0, OP2_w_w, 0x58, "adawi", 0, OP2_b_b, 0x80, "addb2", 0, OP3_b_b_b, 0x81, "addb3", 0, OP2_w_w, 0xa0, "addw2", 0, OP3_w_w_w, 0xa1, "addw3", 0, OP2_l_l, 0xc0, "addl2", 0, OP3_l_l_l, 0xc1, "addl3", 0, OP2_l_l, 0xd8, "adwc", 0, OP3_b_l_l, 0x78, "ashl", 0, OP3_b_u_u, 0x79, "ashq", 0, OP2_b_b, 0x8a, "bicb2", 0, OP3_b_b_b, 0x8b, "bicb3", 0, OP2_w_w, 0xaa, "bicw2", 0, OP3_w_w_w, 0xab, "bicw3", 0, OP2_l_l, 0xca, "bicl2", 0, OP3_l_l_l, 0xcb, "bicl3", 0, OP2_b_b, 0x88, "bisb2", 0, OP3_b_b_b, 0x89, "bisb3", 0, OP2_w_w, 0xa8, "bisw2", 0, OP3_w_w_w, 0xa9, "bisw3", 0, OP2_l_l, 0xc8, "bisl2", 0, OP3_l_l_l, 0xc9, "bisl3", 0, OP2_b_b, 0x93, "bitb", 0, OP2_w_w, 0xb3, "bitw", 0, OP2_l_l, 0xd3, "bitl", 0, OP1_X, 0x94|(1L<<16), "clrb", 0, OP1_X, 0xb4|(2L<<16), "clrw", 0, OP1_X, 0xd4|(4L<<16), "clrl", 0, OP1_u, 0x7c, "clrq", 0, OP1_u, 0x7cfd, "clro", 0, OP2_b_b, 0x91, "cmpb", 0, OP2_w_w, 0xb1, "cmpw", 0, OP2_l_l, 0xd1, "cmpl", 0, OP2_b_w, 0x99, "cvtbw", 0, OP2_b_l, 0x98, "cvtbl", 0, OP2_w_b, 0x33, "cvtwb", 0, OP2_w_l, 0x32, "cvtwl", 0, OP2_l_b, 0xf6, "cvtlb", 0, OP2_l_w, 0xf7, "cvtlw", 0, OP1_X, 0x97|(1L<<16), "decb", 0, OP1_X, 0xb7|(2L<<16), "decw", 0, OP1_X, 0xd7|(4L<<16), "decl", 0, OP2_b_b, 0x86, "divb2", 0, OP3_b_b_b, 0x87, "divb3", 0, OP2_w_w, 0xa6, "divw2", 0, OP3_w_w_w, 0xa7, "divw3", 0, OP2_l_l, 0xc6, "divl2", 0, OP3_l_l_l, 0xc7, "divl3", 0, OP4_l_u_l_l, 0x7b, "ediv", 0, OP4_l_l_l_u, 0x7a, "emul", 0, OP1_X, 0x96|(1L<<16), "incb", 0, OP1_X, 0xb6|(2L<<16), "incw", 0, OP1_X, 0xd6|(4L<<16), "incl", 0, OP2_b_b, 0x92, "mcomb", 0, OP2_w_w, 0xb2, "mcomw", 0, OP2_l_l, 0xd2, "mcoml", 0, OP2_b_b, 0x8e, "mnegb", 0, OP2_w_w, 0xae, "mnegw", 0, OP2_l_l, 0xce, "mnegl", 0, OP2_b_b, 0x90, "movb", 0, OP2_w_w, 0xb0, "movw", 0, OP2_l_l, 0xd0, "movl", 0, OP2_u_u, 0x7d, "movq", 0, OP2_u_u, 0x7dfd, "movo", 0, OP2_b_w, 0x9b, "movzbw", 0, OP2_b_l, 0x9a, "movzbl", 0, OP2_w_l, 0x3c, "movzwl", 0, OP2_b_b, 0x84, "mulb2", 0, OP3_b_b_b, 0x85, "mulb3", 0, OP2_w_w, 0xa4, "mulw2", 0, OP3_w_w_w, 0xa5, "mulw3", 0, OP2_l_l, 0xc4, "mull2", 0, OP3_l_l_l, 0xc5, "mull3", 0, OP1_X, 0xdd|(4L<<16), "pushl", 0, OP3_b_l_l, 0x9c, "rotl", 0, OP2_l_l, 0xd9, "sbwc", 0, OP2_b_b, 0x82, "subb2", 0, OP3_b_b_b, 0x83, "subb3", 0, OP2_w_w, 0xa2, "subw2", 0, OP3_w_w_w, 0xa3, "subw3", 0, OP2_l_l, 0xc2, "subl2", 0, OP3_l_l_l, 0xc3, "subl3", 0, OP1_X, 0x95|(1L<<16), "tstb", 0, OP1_X, 0xb5|(2L<<16), "tstw", 0, OP1_X, 0xd5|(4L<<16), "tstl", 0, OP2_b_b, 0x8c, "xorb2", 0, OP3_b_b_b, 0x8d, "xorb3", 0, OP2_w_w, 0xac, "xorw2", 0, OP3_w_w_w, 0xad, "xorw3", 0, OP2_l_l, 0xcc, "xorl2", 0, OP3_l_l_l, 0xcd, "xorl3", /* Address instructions */ 0, OP2_A_l, 0x9e, "movab", 0, OP2_A_l, 0x3e, "movaw", 0, OP2_A_l, 0xde, "moval", 0, OP2_A_l, 0xde, "movaf", 0, OP2_A_l, 0x7e, "movaq", 0, OP2_A_l, 0x7e, "movad", 0, OP2_A_l, 0x7e, "movag", 0, OP2_A_l, 0x7efd, "movah", 0, OP2_A_l, 0x7efd, "movao", 0, OP1_A, 0x9f, "pushab", 0, OP1_A, 0x3f, "pushaw", 0, OP1_A, 0xdf, "pushal", 0, OP1_A, 0xdf, "pushaf", 0, OP1_A, 0x7f, "pushaq", 0, OP1_A, 0x7f, "pushad", 0, OP1_A, 0x7f, "pushag", 0, OP1_A, 0x7ffd, "pushah", 0, OP1_A, 0x7ffd, "pushao", /* Variable length bit-field instructions */ 0, OP4_l_b_V_l, 0xec, "cmpv", 0, OP4_l_b_V_l, 0xed, "cmpzv", 0, OP4_l_b_V_l, 0xee, "extv", 0, OP4_l_b_V_l, 0xef, "extzv", 0, OP4_l_b_V_l, 0xeb, "ffc", 0, OP4_l_b_V_l, 0xea, "ffs", 0, OP4_l_l_b_V, 0xf0, "insv", /* Control instructions */ 0, OP4_b_b_b_Bw, 0x9d, "acbb", 0, OP4_w_w_w_Bw, 0x3d, "acbw", 0, OP4_l_l_l_Bw, 0xf1, "acbl", 0, OP4_u_u_u_Bw, 0x4f, "acbf", 0, OP4_u_u_u_Bw, 0x6f, "acbd", 0, OP4_u_u_u_Bw, 0x4ffd, "acbg", 0, OP4_u_u_u_Bw, 0x6ffd, "acbh", 0, OP3_l_l_Bb, 0xf3, "aobleq", 0, OP3_l_l_Bb, 0xf2, "aoblss", 0, OP1_BX, 0x14|(1L<<16), "bgtr", 0, OP1_BX, 0x15|(1L<<16), "bleq", 0, OP1_BX, 0x12|(1L<<16), "bneq", 0, OP1_BX, 0x12|(1L<<16), "bnequ", 0, OP1_BX, 0x13|(1L<<16), "beql", 0, OP1_BX, 0x13|(1L<<16), "beqlu", 0, OP1_BX, 0x18|(1L<<16), "bgeq", 0, OP1_BX, 0x19|(1L<<16), "blss", 0, OP1_BX, 0x1a|(1L<<16), "bgtru", 0, OP1_BX, 0x1b|(1L<<16), "blequ", 0, OP1_BX, 0x1c|(1L<<16), "bvc", 0, OP1_BX, 0x1d|(1L<<16), "bvs", 0, OP1_BX, 0x1e|(1L<<16), "bgequ", 0, OP1_BX, 0x1e|(1L<<16), "bcc", 0, OP1_BX, 0x1f|(1L<<16), "blssu", 0, OP1_BX, 0x1f|(1L<<16), "bcs", 0, OP3_l_V_Bb, 0xe0, "bbs", 0, OP3_l_V_Bb, 0xe1, "bbc", 0, OP3_l_V_Bb, 0xe2, "bbss", 0, OP3_l_V_Bb, 0xe3, "bbcs", 0, OP3_l_V_Bb, 0xe4, "bbsc", 0, OP3_l_V_Bb, 0xe5, "bbcc", 0, OP3_l_V_Bb, 0xe6, "bbssi", 0, OP3_l_V_Bb, 0xe7, "bbcci", 0, OP2_l_Bb, 0xe8, "blbs", 0, OP2_l_Bb, 0xe9, "blbc", 0, OP1_Be, 0x14, "jgtr", 0, OP1_Be, 0x15, "jleq", 0, OP1_Be, 0x12, "jneq", 0, OP1_Be, 0x12, "jnequ", 0, OP1_Be, 0x13, "jeql", 0, OP1_Be, 0x13, "jeqlu", 0, OP1_Be, 0x18, "jgeq", 0, OP1_Be, 0x19, "jlss", 0, OP1_Be, 0x1a, "jgtru", 0, OP1_Be, 0x1b, "jlequ", 0, OP1_Be, 0x1c, "jvc", 0, OP1_Be, 0x1d, "jvs", 0, OP1_Be, 0x1e, "jgequ", 0, OP1_Be, 0x1e, "jcc", 0, OP1_Be, 0x1f, "jlssu", 0, OP1_Be, 0x1f, "jcs", 0, OP2_l_Be, 0xe8, "jlbs", 0, OP2_l_Be, 0xe9, "jlbc", 0, OP3_l_V_Be, 0xe0, "jbs", 0, OP3_l_V_Be, 0xe1, "jbc", 0, OP3_l_V_Be, 0xe2, "jbss", 0, OP3_l_V_Be, 0xe3, "jbcs", 0, OP3_l_V_Be, 0xe4, "jbsc", 0, OP3_l_V_Be, 0xe5, "jbcc", 0, OP3_l_V_Be, 0xe6, "jbssi", 0, OP3_l_V_Be, 0xe7, "jbcci", 0, OP1_Bx, 0x11, "br", 0, OP1_BX, 0x11|(1L<<16), "brb", 0, OP1_BX, 0x31|(2L<<16), "brw", 0, OP1_Be, 0x11, "jbr", 0, OP1_Bx, 0x10, "bsb", 0, OP1_BX, 0x10|(1L<<16), "bsbb", 0, OP1_BX, 0x30|(2L<<16), "bsbw", 0, CASE_X_X_X, 0x8f|(1L<<16), "caseb", 0, CASE_X_X_X, 0xaf|(2L<<16), "casew", 0, CASE_X_X_X, 0xcf|(4L<<16), "casel", 0, OP1_A, 0x17, "jmp", 0, OP1_A, 0x16, "jsb", 0, OP0, 0x05, "rsb", 0, OP2_l_Bb, 0xf4, "sobgeq", 0, OP2_l_Bb, 0xf5, "sobgtr", /* Procedure call instructions */ 0, OP2_A_A, 0xfa, "callg", 0, OP2_l_A, 0xfb, "calls", 0, OP0, 0x04, "ret", /* Miscellaneous instructions */ 0, OP1_X, 0xb9|(2L<<16), "bicpsw", 0, OP1_X, 0xb8|(2L<<16), "bispsw", 0, OP0, 0x03, "bpt", 0, OP0, 0x00, "halt", 0, OP6_l_l_l_l_l_l,0x0a, "index", 0, OP1_X, 0xdc|(4L<<16), "movpsl", 0, OP0, 0x01, "nop", 0, OP1_X, 0xba|(2L<<16), "popr", 0, OP1_X, 0xbb|(2L<<16), "pushr", 0, OP0, 0xfc, "xfc", /* Queue instructions */ 0, OP2_A_A, 0x5c, "insqhi", 0, OP2_A_A, 0x5d, "insqti", 0, OP2_A_A, 0x0e, "insque", 0, OP2_A_l, 0x5e, "remqhi", 0, OP2_A_l, 0x5f, "remqti", 0, OP2_A_l, 0x0f, "remque", /* Floating point instructions */ 0, OP2_u_u, 0x40, "addf2", 0, OP3_u_u_u, 0x41, "addf3", 0, OP2_u_u, 0x60, "addd2", 0, OP3_u_u_u, 0x61, "addd3", 0, OP2_u_u, 0x40fd, "addg2", 0, OP3_u_u_u, 0x41fd, "addg3", 0, OP2_u_u, 0x60fd, "addh2", 0, OP3_u_u_u, 0x61fd, "addh3", 0, OP1_u, 0xd4, "clrf", 0, OP1_u, 0x7c, "clrd", 0, OP1_u, 0x7c, "clrg", 0, OP1_u, 0x7cfd, "clrh", 0, OP2_u_u, 0x51, "cmpf", 0, OP2_u_u, 0x71, "cmpd", 0, OP2_u_u, 0x51fd, "cmpg", 0, OP2_u_u, 0x71fd, "cmph", 0, OP2_b_u, 0x4c, "cvtbf", 0, OP2_b_u, 0x6c, "cvtbd", 0, OP2_b_u, 0x4cfd, "cvtbg", 0, OP2_b_u, 0x6cfd, "cvtbh", 0, OP2_w_u, 0x4d, "cvtwf", 0, OP2_w_u, 0x6d, "cvtwd", 0, OP2_w_u, 0x4dfd, "cvtwg", 0, OP2_w_u, 0x6dfd, "cvtwh", 0, OP2_l_u, 0x4e, "cvtlf", 0, OP2_l_u, 0x6e, "cvtld", 0, OP2_l_u, 0x4efd, "cvtlg", 0, OP2_l_u, 0x6efd, "cvtlh", 0, OP2_u_b, 0x48, "cvtfb", 0, OP2_u_b, 0x68, "cvtdb", 0, OP2_u_b, 0x48fd, "cvtgb", 0, OP2_u_b, 0x68fd, "cvthb", 0, OP2_u_w, 0x49, "cvtfw", 0, OP2_u_w, 0x69, "cvtdw", 0, OP2_u_w, 0x49fd, "cvtgw", 0, OP2_u_w, 0x69fd, "cvthw", 0, OP2_u_l, 0x4a, "cvtfl", 0, OP2_u_l, 0x6a, "cvtdl", 0, OP2_u_l, 0x4afd, "cvtgl", 0, OP2_u_l, 0x6afd, "cvthl", 0, OP2_u_l, 0x4b, "cvtrfl", 0, OP2_u_l, 0x6b, "cvtrdl", 0, OP2_u_l, 0x4bfd, "cvtrgl", 0, OP2_u_l, 0x6bfd, "cvtrhl", 0, OP2_u_u, 0x56, "cvtfd", 0, OP2_u_u, 0x99fd, "cvtfg", 0, OP2_u_u, 0x98fd, "cvtfh", 0, OP2_u_u, 0x76, "cvtdf", 0, OP2_u_u, 0x32fd, "cvtdh", 0, OP2_u_u, 0x33fd, "cvtgf", 0, OP2_u_u, 0x56fd, "cvtgh", 0, OP2_u_u, 0xf6fd, "cvthf", 0, OP2_u_u, 0xf7fd, "cvthd", 0, OP2_u_u, 0x76fd, "cvthg", 0, OP2_u_u, 0x46, "divf2", 0, OP3_u_u_u, 0x47, "divf3", 0, OP2_u_u, 0x66, "divd2", 0, OP3_u_u_u, 0x67, "divd3", 0, OP2_u_u, 0x46fd, "divg2", 0, OP3_u_u_u, 0x47fd, "divg3", 0, OP2_u_u, 0x66fd, "divh2", 0, OP3_u_u_u, 0x67fd, "divh3", 0, OP5_u_b_u_l_u, 0x54, "emodf", 0, OP5_u_b_u_l_u, 0x74, "emodd", 0, OP5_u_w_u_l_u, 0x54fd, "emodg", 0, OP5_u_w_u_l_u, 0x74fd, "emodh", 0, OP2_u_u, 0x52, "mnegf", 0, OP2_u_u, 0x72, "mnegd", 0, OP2_u_u, 0x52fd, "mnegg", 0, OP2_u_u, 0x72fd, "mnegh", 0, OP2_u_u, 0x50, "movf", 0, OP2_u_u, 0x70, "movd", 0, OP2_u_u, 0x50fd, "movg", 0, OP2_u_u, 0x70fd, "movh", 0, OP2_u_u, 0x44, "mulf2", 0, OP3_u_u_u, 0x45, "mulf3", 0, OP2_u_u, 0x64, "muld2", 0, OP3_u_u_u, 0x65, "muld3", 0, OP2_u_u, 0x44fd, "mulg2", 0, OP3_u_u_u, 0x45fd, "mulg3", 0, OP2_u_u, 0x64fd, "mulh2", 0, OP3_u_u_u, 0x65fd, "mulh3", 0, OP3_u_w_A, 0x55, "polyf", 0, OP3_u_w_A, 0x75, "polyd", 0, OP3_u_w_A, 0x55fd, "polyg", 0, OP3_u_w_A, 0x75fd, "polyh", 0, OP2_u_u, 0x42, "subf2", 0, OP3_u_u_u, 0x43, "subf3", 0, OP2_u_u, 0x62, "subd2", 0, OP3_u_u_u, 0x63, "subd3", 0, OP2_u_u, 0x42fd, "subg2", 0, OP3_u_u_u, 0x43fd, "subg3", 0, OP2_u_u, 0x62fd, "subh2", 0, OP3_u_u_u, 0x63fd, "subh3", 0, OP1_u, 0x53, "tstf", 0, OP1_u, 0x73, "tstd", 0, OP1_u, 0x53fd, "tstg", 0, OP1_u, 0x73fd, "tsth", /* Character string instructions */ 0, OP3_w_A_A, 0x29, "cmpc3", 0, OP5_w_A_b_w_A, 0x2d, "cmpc5", 0, OP3_b_w_A, 0x3a, "locc", 0, OP4_w_A_w_A, 0x39, "matchc", 0, OP3_w_A_A, 0x28, "movc3", 0, OP5_w_A_b_w_A, 0x2c, "movc5", 0, OP6_w_A_b_A_w_A,0x2e, "movtc", 0, OP6_w_A_b_A_w_A,0x2f, "movtuc", 0, OP4_w_A_A_b, 0x2a, "scanc", 0, OP3_b_w_A, 0x3b, "skpc", 0, OP4_w_A_A_b, 0x2b, "spanc", /* Cyclic redundancy check instructions */ 0, OP4_A_l_w_A, 0x0b, "crc", /* Decimal string instructions */ 0, OP4_w_A_w_A, 0x20, "addp4", 0, OP6_w_A_w_A_w_A,0x21, "addp6", 0, OP6_b_w_A_b_w_A,0xf8, "ashp", 0, OP3_w_A_A, 0x35, "cmpp3", 0, OP4_w_A_w_A, 0x37, "cmpp4", 0, OP3_l_w_A, 0xf9, "cvtlp", 0, OP3_w_A_l, 0x36, "cvtpl", 0, OP4_w_A_w_A, 0x08, "cvtps", 0, OP5_w_A_A_w_A, 0x24, "cvtpt", 0, OP4_w_A_w_A, 0x09, "cvtsp", 0, OP5_w_A_A_w_A, 0x26, "cvttp", 0, OP6_w_A_w_A_w_A,0x27, "divp", 0, OP3_w_A_A, 0x34, "movp", 0, OP6_w_A_w_A_w_A,0x25, "mulp", 0, OP4_w_A_w_A, 0x22, "subp4", 0, OP6_w_A_w_A_w_A,0x23, "subp6", /* Edit instruction */ 0, OP4_w_A_A_A, 0x38, "editpc", /* Other VAX-11 instructions */ /* BSD 4.3 adb has a different opinion of the bugw and bugl instructions: it thinks that an addressing mode byte is required. However, according to the VAX-11 Architecture Reference Manual, Revision 6.1, 1982, the access type is b, which means that the operand is a branch displacement. */ 0, OP1_BX, 0xfeff|(2L<<16),"bugw", 0, OP1_BX, 0xfdff|(4L<<16),"bugl", 0, OP3_b_w_A, 0x0c, "prober", 0, OP3_b_w_A, 0x0d, "probew", 0, OP0, 0x02, "rei", 0, OP1_X, 0xbc|(2L<<16), "chmk", 0, OP1_X, 0xbd|(2L<<16), "chme", 0, OP1_X, 0xbe|(2L<<16), "chms", 0, OP1_X, 0xbf|(2L<<16), "chmu", 0, OP0, 0x06, "ldpctx", 0, OP0, 0x07, "svpctx", 0, OP2_l_l, 0xda, "mtpr", 0, OP2_l_l, 0xdb, "mfpr",