📄 hppa.h
字号:
?a add conditions ?A 64 bit add conditions ?@ add branch conditions followed by nullify ?d non-negated add branch conditions ?D negated add branch conditions ?w wide mode non-negated add branch conditions ?W wide mode negated add branch conditions ?s compare/subtract conditions ?S 64 bit compare/subtract conditions ?t non-negated compare and branch conditions ?n 32 bit compare and branch conditions followed by nullify ?N 64 bit compare and branch conditions followed by nullify ?Q 64 bit compare and branch conditions for CMPIB instruction ?l logical conditions ?L 64 bit logical conditions ?b branch on bit conditions ?B 64 bit branch on bit conditions ?x shift/extract/deposit conditions ?X 64 bit shift/extract/deposit conditions ?y shift/extract/deposit conditions followed by nullify for conditional branches ?u unit conditions ?U 64 bit unit conditionsFloating point registers all have 'f' as a prefix: ft target register at 31 fT target register with L/R halves at 31 fa operand 1 register at 10 fA operand 1 register with L/R halves at 10 fX Same as fA, except prints a space before register during disasm fb operand 2 register at 15 fB operand 2 register with L/R halves at 15 fC operand 3 register with L/R halves at 16:18,21:23 fe Like fT, but encoding is different. fE Same as fe, except prints a space before register during disasm. fx target register at 15 (only for PA 2.0 long format FLDD/FSTD). Float registers for fmpyadd and fmpysub: fi mult operand 1 register at 10 fj mult operand 2 register at 15 fk mult target register at 20 fl add/sub operand register at 25 fm add/sub target register at 31*/#if 0/* List of characters not to put a space after. Note that "," is included, as the "spopN" operations use literal commas in their completer sections. */static const char *const completer_chars = ",CcY<>?!@+&U~FfGHINnOoZMadu|/=0123%e$m}";#endif/* The order of the opcodes in this table is significant: * The assembler requires that all instances of the same mnemonic must be consecutive. If they aren't, the assembler will bomb at runtime. * The disassembler should not care about the order of the opcodes. */static const struct pa_opcode pa_opcodes[] ={/* Pseudo-instructions. */{ "ldi", 0x34000000, 0xffe00000, "l,x", pa20w, 0},/* ldo val(r0),r */{ "ldi", 0x34000000, 0xffe0c000, "j,x", pa10, 0},/* ldo val(r0),r */{ "cmpib", 0xec000000, 0xfc000000, "?Qn5,b,w", pa20, FLAG_STRICT},{ "cmpib", 0x84000000, 0xf4000000, "?nn5,b,w", pa10, FLAG_STRICT},{ "comib", 0x84000000, 0xfc000000, "?nn5,b,w", pa10, 0}, /* comib{tf}*//* This entry is for the disassembler only. It will never be used by assembler. */{ "comib", 0x8c000000, 0xfc000000, "?nn5,b,w", pa10, 0}, /* comib{tf}*/{ "cmpb", 0x9c000000, 0xdc000000, "?Nnx,b,w", pa20, FLAG_STRICT},{ "cmpb", 0x80000000, 0xf4000000, "?nnx,b,w", pa10, FLAG_STRICT},{ "comb", 0x80000000, 0xfc000000, "?nnx,b,w", pa10, 0}, /* comb{tf} *//* This entry is for the disassembler only. It will never be used by assembler. */{ "comb", 0x88000000, 0xfc000000, "?nnx,b,w", pa10, 0}, /* comb{tf} */{ "addb", 0xa0000000, 0xf4000000, "?Wnx,b,w", pa20w, FLAG_STRICT},{ "addb", 0xa0000000, 0xfc000000, "?@nx,b,w", pa10, 0}, /* addb{tf} *//* This entry is for the disassembler only. It will never be used by assembler. */{ "addb", 0xa8000000, 0xfc000000, "?@nx,b,w", pa10, 0},{ "addib", 0xa4000000, 0xf4000000, "?Wn5,b,w", pa20w, FLAG_STRICT},{ "addib", 0xa4000000, 0xfc000000, "?@n5,b,w", pa10, 0}, /* addib{tf}*//* This entry is for the disassembler only. It will never be used by assembler. */{ "addib", 0xac000000, 0xfc000000, "?@n5,b,w", pa10, 0}, /* addib{tf}*/{ "nop", 0x08000240, 0xffffffff, "", pa10, 0}, /* or 0,0,0 */{ "copy", 0x08000240, 0xffe0ffe0, "x,t", pa10, 0}, /* or r,0,t */{ "mtsar", 0x01601840, 0xffe0ffff, "x", pa10, 0}, /* mtctl r,cr11 *//* Loads and Stores for integer registers. */{ "ldd", 0x0c0010e0, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},{ "ldd", 0x0c0010e0, 0xfc1f33e0, "cocc@(b),t", pa20, FLAG_STRICT},{ "ldd", 0x0c0000c0, 0xfc0013c0, "cxccx(s,b),t", pa20, FLAG_STRICT},{ "ldd", 0x0c0000c0, 0xfc0013c0, "cxccx(b),t", pa20, FLAG_STRICT},{ "ldd", 0x0c0010c0, 0xfc0013c0, "cmcc5(s,b),t", pa20, FLAG_STRICT},{ "ldd", 0x0c0010c0, 0xfc0013c0, "cmcc5(b),t", pa20, FLAG_STRICT},{ "ldd", 0x50000000, 0xfc000002, "cq&(b),x", pa20w, FLAG_STRICT},{ "ldd", 0x50000000, 0xfc000002, "cq#(b),x", pa20, FLAG_STRICT},{ "ldw", 0x0c000080, 0xfc0013c0, "cxccx(s,b),t", pa10, FLAG_STRICT},{ "ldw", 0x0c000080, 0xfc0013c0, "cxccx(b),t", pa10, FLAG_STRICT},{ "ldw", 0x0c001080, 0xfc0013c0, "cmcc5(s,b),t", pa10, FLAG_STRICT},{ "ldw", 0x0c001080, 0xfc0013c0, "cmcc5(b),t", pa10, FLAG_STRICT},{ "ldw", 0x0c0010a0, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},{ "ldw", 0x0c0010a0, 0xfc1f33e0, "cocc@(b),t", pa20, FLAG_STRICT},{ "ldw", 0x4c000000, 0xfc000000, "ce<(b),x", pa20w, FLAG_STRICT},{ "ldw", 0x4c000000, 0xfc000000, "ceJ(s,b),x", pa10, FLAG_STRICT},{ "ldw", 0x4c000000, 0xfc000000, "ceJ(b),x", pa10, FLAG_STRICT},{ "ldw", 0x5c000004, 0xfc000006, "ce>(b),x", pa20w, FLAG_STRICT},{ "ldw", 0x5c000004, 0xfc000006, "ceK(s,b),x", pa20, FLAG_STRICT},{ "ldw", 0x5c000004, 0xfc000006, "ceK(b),x", pa20, FLAG_STRICT},{ "ldw", 0x48000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT},{ "ldw", 0x48000000, 0xfc000000, "j(s,b),x", pa10, 0},{ "ldw", 0x48000000, 0xfc000000, "j(b),x", pa10, 0},{ "ldh", 0x0c000040, 0xfc0013c0, "cxccx(s,b),t", pa10, FLAG_STRICT},{ "ldh", 0x0c000040, 0xfc0013c0, "cxccx(b),t", pa10, FLAG_STRICT},{ "ldh", 0x0c001040, 0xfc0013c0, "cmcc5(s,b),t", pa10, FLAG_STRICT},{ "ldh", 0x0c001040, 0xfc0013c0, "cmcc5(b),t", pa10, FLAG_STRICT},{ "ldh", 0x0c001060, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},{ "ldh", 0x0c001060, 0xfc1f33e0, "cocc@(b),t", pa20, FLAG_STRICT},{ "ldh", 0x44000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT},{ "ldh", 0x44000000, 0xfc000000, "j(s,b),x", pa10, 0},{ "ldh", 0x44000000, 0xfc000000, "j(b),x", pa10, 0},{ "ldb", 0x0c000000, 0xfc0013c0, "cxccx(s,b),t", pa10, FLAG_STRICT},{ "ldb", 0x0c000000, 0xfc0013c0, "cxccx(b),t", pa10, FLAG_STRICT},{ "ldb", 0x0c001000, 0xfc0013c0, "cmcc5(s,b),t", pa10, FLAG_STRICT},{ "ldb", 0x0c001000, 0xfc0013c0, "cmcc5(b),t", pa10, FLAG_STRICT},{ "ldb", 0x0c001020, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},{ "ldb", 0x0c001020, 0xfc1f33e0, "cocc@(b),t", pa20, FLAG_STRICT},{ "ldb", 0x40000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT},{ "ldb", 0x40000000, 0xfc000000, "j(s,b),x", pa10, 0},{ "ldb", 0x40000000, 0xfc000000, "j(b),x", pa10, 0},{ "std", 0x0c0012e0, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},{ "std", 0x0c0012e0, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},{ "std", 0x0c0012c0, 0xfc0013c0, "cmcCx,V(s,b)", pa20, FLAG_STRICT},{ "std", 0x0c0012c0, 0xfc0013c0, "cmcCx,V(b)", pa20, FLAG_STRICT},{ "std", 0x70000000, 0xfc000002, "cqx,&(b)", pa20w, FLAG_STRICT},{ "std", 0x70000000, 0xfc000002, "cqx,#(b)", pa20, FLAG_STRICT},{ "stw", 0x0c001280, 0xfc0013c0, "cmcCx,V(s,b)", pa10, FLAG_STRICT},{ "stw", 0x0c001280, 0xfc0013c0, "cmcCx,V(b)", pa10, FLAG_STRICT},{ "stw", 0x0c0012a0, 0xfc0013ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},{ "stw", 0x0c0012a0, 0xfc0013ff, "cocCx,@(b)", pa20, FLAG_STRICT},{ "stw", 0x6c000000, 0xfc000000, "cex,<(b)", pa20w, FLAG_STRICT},{ "stw", 0x6c000000, 0xfc000000, "cex,J(s,b)", pa10, FLAG_STRICT},{ "stw", 0x6c000000, 0xfc000000, "cex,J(b)", pa10, FLAG_STRICT},{ "stw", 0x7c000004, 0xfc000006, "cex,>(b)", pa20w, FLAG_STRICT},{ "stw", 0x7c000004, 0xfc000006, "cex,K(s,b)", pa20, FLAG_STRICT},{ "stw", 0x7c000004, 0xfc000006, "cex,K(b)", pa20, FLAG_STRICT},{ "stw", 0x68000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT},{ "stw", 0x68000000, 0xfc000000, "x,j(s,b)", pa10, 0},{ "stw", 0x68000000, 0xfc000000, "x,j(b)", pa10, 0},{ "sth", 0x0c001240, 0xfc0013c0, "cmcCx,V(s,b)", pa10, FLAG_STRICT},{ "sth", 0x0c001240, 0xfc0013c0, "cmcCx,V(b)", pa10, FLAG_STRICT},{ "sth", 0x0c001260, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},{ "sth", 0x0c001260, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},{ "sth", 0x64000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT},{ "sth", 0x64000000, 0xfc000000, "x,j(s,b)", pa10, 0},{ "sth", 0x64000000, 0xfc000000, "x,j(b)", pa10, 0},{ "stb", 0x0c001200, 0xfc0013c0, "cmcCx,V(s,b)", pa10, FLAG_STRICT},{ "stb", 0x0c001200, 0xfc0013c0, "cmcCx,V(b)", pa10, FLAG_STRICT},{ "stb", 0x0c001220, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},{ "stb", 0x0c001220, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},{ "stb", 0x60000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT},{ "stb", 0x60000000, 0xfc000000, "x,j(s,b)", pa10, 0},{ "stb", 0x60000000, 0xfc000000, "x,j(b)", pa10, 0},{ "ldwm", 0x4c000000, 0xfc000000, "j(s,b),x", pa10, 0},{ "ldwm", 0x4c000000, 0xfc000000, "j(b),x", pa10, 0},{ "stwm", 0x6c000000, 0xfc000000, "x,j(s,b)", pa10, 0},{ "stwm", 0x6c000000, 0xfc000000, "x,j(b)", pa10, 0},{ "ldwx", 0x0c000080, 0xfc001fc0, "cXx(s,b),t", pa10, 0},{ "ldwx", 0x0c000080, 0xfc001fc0, "cXx(b),t", pa10, 0},{ "ldhx", 0x0c000040, 0xfc001fc0, "cXx(s,b),t", pa10, 0},{ "ldhx", 0x0c000040, 0xfc001fc0, "cXx(b),t", pa10, 0},{ "ldbx", 0x0c000000, 0xfc001fc0, "cXx(s,b),t", pa10, 0},{ "ldbx", 0x0c000000, 0xfc001fc0, "cXx(b),t", pa10, 0},{ "ldwa", 0x0c000180, 0xfc00d3c0, "cxccx(b),t", pa10, FLAG_STRICT},{ "ldwa", 0x0c001180, 0xfc00d3c0, "cmcc5(b),t", pa10, FLAG_STRICT},{ "ldwa", 0x0c0011a0, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT},{ "ldcw", 0x0c0001c0, 0xfc0013c0, "cxcdx(s,b),t", pa10, FLAG_STRICT},{ "ldcw", 0x0c0001c0, 0xfc0013c0, "cxcdx(b),t", pa10, FLAG_STRICT},{ "ldcw", 0x0c0011c0, 0xfc0013c0, "cmcd5(s,b),t", pa10, FLAG_STRICT},{ "ldcw", 0x0c0011c0, 0xfc0013c0, "cmcd5(b),t", pa10, FLAG_STRICT},{ "stwa", 0x0c001380, 0xfc00d3c0, "cmcCx,V(b)", pa10, FLAG_STRICT},{ "stwa", 0x0c0013a0, 0xfc00d3ff, "cocCx,@(b)", pa20, FLAG_STRICT},{ "stby", 0x0c001300, 0xfc0013c0, "cscCx,V(s,b)", pa10, FLAG_STRICT},{ "stby", 0x0c001300, 0xfc0013c0, "cscCx,V(b)", pa10, FLAG_STRICT},{ "ldda", 0x0c000100, 0xfc00d3c0, "cxccx(b),t", pa20, FLAG_STRICT},{ "ldda", 0x0c001100, 0xfc00d3c0, "cmcc5(b),t", pa20, FLAG_STRICT},{ "ldda", 0x0c001120, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT},{ "ldcd", 0x0c000140, 0xfc0013c0, "cxcdx(s,b),t", pa20, FLAG_STRICT},{ "ldcd", 0x0c000140, 0xfc0013c0, "cxcdx(b),t", pa20, FLAG_STRICT},{ "ldcd", 0x0c001140, 0xfc0013c0, "cmcd5(s,b),t", pa20, FLAG_STRICT},{ "ldcd", 0x0c001140, 0xfc0013c0, "cmcd5(b),t", pa20, FLAG_STRICT},{ "stda", 0x0c0013e0, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},{ "stda", 0x0c0013e0, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},{ "stda", 0x0c0013c0, 0xfc0013c0, "cmcCx,V(s,b)", pa20, FLAG_STRICT},{ "stda", 0x0c0013c0, 0xfc0013c0, "cmcCx,V(b)", pa20, FLAG_STRICT},{ "ldwax", 0x0c000180, 0xfc00dfc0, "cXx(b),t", pa10, 0},{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cXx(s,b),t", pa10, 0},{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cXx(b),t", pa10, 0},{ "ldws", 0x0c001080, 0xfc001fc0, "cM5(s,b),t", pa10, 0},{ "ldws", 0x0c001080, 0xfc001fc0, "cM5(b),t", pa10, 0},{ "ldhs", 0x0c001040, 0xfc001fc0, "cM5(s,b),t", pa10, 0},{ "ldhs", 0x0c001040, 0xfc001fc0, "cM5(b),t", pa10, 0},{ "ldbs", 0x0c001000, 0xfc001fc0, "cM5(s,b),t", pa10, 0},{ "ldbs", 0x0c001000, 0xfc001fc0, "cM5(b),t", pa10, 0},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -