Balance spacings in braces ##indent

This commit is contained in:
pancake 2022-10-13 21:21:34 +02:00 committed by GitHub
parent bf4f6a6504
commit a06ade1796
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 20226 additions and 20251 deletions

View File

@ -995,7 +995,7 @@ R_API bool r2r_check_cmd_test(R2RProcessOutput *out, R2RCmdTest *test) {
#define JQ_CMD "jq"
R_API bool r2r_check_jq_available(void) {
const char *args[] = {"."};
const char *args[] = { "." };
const char *invalid_json = "this is not json lol";
R2RSubprocess *proc = r2r_subprocess_start (JQ_CMD, args, 1, NULL, NULL, 0);
if (!proc) {
@ -1038,7 +1038,7 @@ R_API bool r2r_check_json_test(R2RProcessOutput *out, R2RJsonTest *test) {
if (!out || out->ret != 0 || !out->out || !out->err || out->timeout) {
return false;
}
const char *args[] = {"."};
const char *args[] = { "." };
R2RSubprocess *proc = r2r_subprocess_start (JQ_CMD, args, 1, NULL, NULL, 0);
r2r_subprocess_stdin_write (proc, (const ut8 *)out->out, strlen (out->out));
r2r_subprocess_wait (proc, UT64_MAX);

View File

@ -4034,62 +4034,62 @@ static const struct arc_operand_value arc_reg_names_a700[] =
{ "memsubsys",0x67,AUXREG_AC, ARC_REGISTER_READONLY},
{ "MEMSUBSYS",0x67,AUXREG_AC, ARC_REGISTER_READONLY},
/* Interrupt vector base register */
{"vecbase_ac_build",0x68,AUXREG_AC, ARC_REGISTER_READONLY},
{"VECBASE_AC_BUILD",0x68,AUXREG_AC, ARC_REGISTER_READONLY},
{ "vecbase_ac_build",0x68,AUXREG_AC, ARC_REGISTER_READONLY},
{ "VECBASE_AC_BUILD",0x68,AUXREG_AC, ARC_REGISTER_READONLY},
/* Peripheral base address register */
{ "p_base_addr",0x69,AUXREG_AC, ARC_REGISTER_READONLY},
{ "P_BASE_ADDR",0x69,AUXREG_AC, ARC_REGISTER_READONLY},
/* MMU BCR . Specifies the associativity of the TLB etc. */
{"mmu_build",0x6F,AUXREG_AC, ARC_REGISTER_READONLY},
{"MMU_BUILD",0x6F,AUXREG_AC, ARC_REGISTER_READONLY},
{ "mmu_build",0x6F,AUXREG_AC, ARC_REGISTER_READONLY},
{ "MMU_BUILD",0x6F,AUXREG_AC, ARC_REGISTER_READONLY},
/* ARC Angel BCR . Specifies the version of the ARC Angel Dev. Board */
{ "arcangel_build",0x70,AUXREG_AC, ARC_REGISTER_READONLY},
{ "ARCANGEL_BUILD",0x70,AUXREG_AC, ARC_REGISTER_READONLY},
/* Data Cache BCR . Associativity/Line Size/ size of the Data Cache etc. */
{"dcache_build",0x72,AUXREG_AC, ARC_REGISTER_READONLY},
{"DCACHE_BUILD",0x72,AUXREG_AC, ARC_REGISTER_READONLY},
{ "dcache_build",0x72,AUXREG_AC, ARC_REGISTER_READONLY},
{ "DCACHE_BUILD",0x72,AUXREG_AC, ARC_REGISTER_READONLY},
/* Information regarding multiple arc debug interfaces */
{"madi_build",0x73,AUXREG_AC, ARC_REGISTER_READONLY},
{"MADI_BUILD",0x73,AUXREG_AC, ARC_REGISTER_READONLY},
{ "madi_build",0x73,AUXREG_AC, ARC_REGISTER_READONLY},
{ "MADI_BUILD",0x73,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for data closely coupled memory */
{"dccm_build",0x74,AUXREG_AC, ARC_REGISTER_READONLY},
{"DCCM_BUILD",0x74,AUXREG_AC, ARC_REGISTER_READONLY},
{ "dccm_build",0x74,AUXREG_AC, ARC_REGISTER_READONLY},
{ "DCCM_BUILD",0x74,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for timers */
{"timer_build",0x75,AUXREG_AC, ARC_REGISTER_READONLY},
{"TIMER_BUILD",0x75,AUXREG_AC, ARC_REGISTER_READONLY},
{ "timer_build",0x75,AUXREG_AC, ARC_REGISTER_READONLY},
{ "TIMER_BUILD",0x75,AUXREG_AC, ARC_REGISTER_READONLY},
/* Actionpoints build */
{"ap_build",0x76,AUXREG_AC, ARC_REGISTER_READONLY},
{"AP_BUILD",0x76,AUXREG_AC, ARC_REGISTER_READONLY},
{ "ap_build",0x76,AUXREG_AC, ARC_REGISTER_READONLY},
{ "AP_BUILD",0x76,AUXREG_AC, ARC_REGISTER_READONLY},
/* Instruction Cache BCR */
{"icache_build",0x77,AUXREG_AC, ARC_REGISTER_READONLY},
{"ICACHE_BUILD",0x77,AUXREG_AC, ARC_REGISTER_READONLY},
{ "icache_build",0x77,AUXREG_AC, ARC_REGISTER_READONLY},
{ "ICACHE_BUILD",0x77,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for Instruction Closely Coupled Memory.
Used to be BCR for Saturated ADD/SUB.
*/
{"iccm_build",0x78,AUXREG_AC, ARC_REGISTER_READONLY},
{"ICCM_BUILD",0x78,AUXREG_AC, ARC_REGISTER_READONLY},
{ "iccm_build",0x78,AUXREG_AC, ARC_REGISTER_READONLY},
{ "ICCM_BUILD",0x78,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for X/Y Memory */
{"dspram_build",0x79,AUXREG_AC, ARC_REGISTER_READONLY},
{"DSPRAM_BUILD",0x79,AUXREG_AC, ARC_REGISTER_READONLY},
{ "dspram_build",0x79,AUXREG_AC, ARC_REGISTER_READONLY},
{ "DSPRAM_BUILD",0x79,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for MAC / MUL */
{"mac_build",0x7A,AUXREG_AC, ARC_REGISTER_READONLY},
{"MAC_BUILD",0x7A,AUXREG_AC, ARC_REGISTER_READONLY},
{ "mac_build",0x7A,AUXREG_AC, ARC_REGISTER_READONLY},
{ "MAC_BUILD",0x7A,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for old 32 * 32 Multiply */
{"multiply_build",0x7B,AUXREG_AC, ARC_REGISTER_READONLY},
{"MULTIPLY_BUILD",0x7B,AUXREG_AC, ARC_REGISTER_READONLY},
{ "multiply_build",0x7B,AUXREG_AC, ARC_REGISTER_READONLY},
{ "MULTIPLY_BUILD",0x7B,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for swap */
{"swap_build",0x7C,AUXREG_AC, ARC_REGISTER_READONLY},
{"SWAP_BUILD",0x7C,AUXREG_AC, ARC_REGISTER_READONLY},
{ "swap_build",0x7C,AUXREG_AC, ARC_REGISTER_READONLY},
{ "SWAP_BUILD",0x7C,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR For Norm */
{"norm_build",0x7D,AUXREG_AC, ARC_REGISTER_READONLY},
{"NORM_BUILD",0x7D,AUXREG_AC, ARC_REGISTER_READONLY},
{ "norm_build",0x7D,AUXREG_AC, ARC_REGISTER_READONLY},
{ "NORM_BUILD",0x7D,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for Min / Max instructions */
{"minmax_build",0x7E,AUXREG_AC, ARC_REGISTER_READONLY},
{"MINMAX_BUILD",0x7E,AUXREG_AC, ARC_REGISTER_READONLY},
{ "minmax_build",0x7E,AUXREG_AC, ARC_REGISTER_READONLY},
{ "MINMAX_BUILD",0x7E,AUXREG_AC, ARC_REGISTER_READONLY},
/* BCR for barrel shifter */
{"barrel_build",0x7F,AUXREG_AC, ARC_REGISTER_READONLY},
{"BARREL_BUILD",0x7F,AUXREG_AC, ARC_REGISTER_READONLY}
{ "barrel_build",0x7F,AUXREG_AC, ARC_REGISTER_READONLY},
{ "BARREL_BUILD",0x7F,AUXREG_AC, ARC_REGISTER_READONLY}
};
@ -4611,9 +4611,9 @@ ARC700_rtie_insn (arc_insn insn)
ld/ldb/ldw r0, [gp, var@sda] 1
ldw.as r0, [gp, var@sda] 2
ld_s r0, [gp, var@sda] 10
ldb_ r0, [gp, var@sda] 11
ldw_s r0, [gp, var@sda] 12
ld_s r0, [gp, var@sda] 10
ldb_ r0, [gp, var@sda] 11
ldw_s r0, [gp, var@sda] 12
Any other insn -1

View File

@ -49,263 +49,263 @@ struct dalvik_opcodes_t {
};
static const struct dalvik_opcodes_t dalvik_opcodes[256] = {
{"nop", 2, fmtop}, /* 0x00 */
{"move", 2, fmtopvAvB},
{"move/from16", 4, fmtopvAAvBBBB},
{"move/16", 6, fmtopvAAAAvBBBB},
{"move-wide", 2, fmtopvAvB},
{"move-wide/from16", 4, fmtopvAAvBBBB},
{"move-wide/16", 6, fmtopvAAAAvBBBB},
{"move-object", 2, fmtopvAvB},
{"move-object/from16", 4, fmtopvAAvBBBB},
{"move-object/16", 6, fmtopvAAAAvBBBB},
{"move-result", 2, fmtopvAA},
{"move-result-wide", 2, fmtopvAA},
{"move-result-object", 2, fmtopvAA},
{"move-exception", 2, fmtopvAA},
{"return-void", 2, fmtop},
{"return", 2, fmtopvAA},
{"return-wide", 2, fmtopvAA}, /* 0x10 */
{"return-object", 2, fmtopvAA},
{"const/4", 2, fmtopvAcB},
{"const/16", 4, fmtopvAAcBBBB},
{"const", 6, fmtopvAAcBBBBBBBB},
{"const/high16", 4, fmtopvAAcBBBB0000},
{"const-wide/16", 4, fmtopvAAcBBBB},
{"const-wide/32", 6, fmtopvAAcBBBBBBBB},
{"const-wide", 10, fmtopvAAcBBBBBBBBBBBBBBBB},
{"const-wide/high16", 4, fmtopvAAcBBBB0000},
{"const-string", 4, fmtopvAAtBBBB},
{"const-string/jumbo", 6, fmtopvAAtBBBBBBBB},
{"const-class", 4, fmtopvAAtBBBB},
{"monitor-enter", 2, fmtopvAA},
{"monitor-exit", 2, fmtopvAA},
{"check-cast", 4, fmtopvAAtBBBB},
{"instance-of", 4, fmtopvAvBtCCCC}, /* 0x20 */
{"array-length", 2, fmtopvAvB},
{"new-instance", 4, fmtopvAAtBBBB},
{"new-array", 4, fmtopvAvBtCCCC},
{"filled-new-array", 6, fmtopvXtBBBB},
{"filled-new-array/range", 6, fmtopvCCCCmBBBB},
{"fill-array-data", 6, fmtopvAApBBBBBBBB},
{"throw", 2, fmtopvAA},
{"goto", 2, fmtoppAA},
{"goto/16", 4, fmtoppAAAA},
{"goto/32", 6, fmtoppAAAAAAAA},
{"packed-switch", 6, fmtopvAApBBBBBBBB},
{"sparse-switch", 6, fmtopvAApBBBBBBBB},
{"cmpl-float", 4, fmtopvAAvBBvCC},
{"cmpg-float", 4, fmtopvAAvBBvCC},
{"cmpl-double", 4, fmtopvAAvBBvCC},
{"cmpg-double", 4, fmtopvAAvBBvCC}, /* 0x30 */
{"cmp-long", 4, fmtopvAAvBBvCC},
{"if-eq", 4, fmtopvAvBpCCCC},
{"if-ne", 4, fmtopvAvBpCCCC},
{"if-lt", 4, fmtopvAvBpCCCC},
{"if-ge", 4, fmtopvAvBpCCCC},
{"if-gt", 4, fmtopvAvBpCCCC},
{"if-le", 4, fmtopvAvBpCCCC},
{"if-eqz", 4, fmtopvAApBBBB},
{"if-nez", 4, fmtopvAApBBBB},
{"if-ltz", 4, fmtopvAApBBBB},
{"if-gez", 4, fmtopvAApBBBB},
{"if-gtz", 4, fmtopvAApBBBB},
{"if-lez", 4, fmtopvAApBBBB},
{"UNUSED", 2, fmt00},
{"UNUSED", 2, fmt00},
{"UNUSED", 2, fmt00}, /* 0x40 */
{"UNUSED", 2, fmt00},
{"UNUSED", 2, fmt00},
{"UNUSED", 2, fmt00},
{"aget", 4, fmtopvAAvBBvCC},
{"aget-wide", 4, fmtopvAAvBBvCC},
{"aget-object", 4, fmtopvAAvBBvCC},
{"aget-boolean", 4, fmtopvAAvBBvCC},
{"aget-byte", 4, fmtopvAAvBBvCC},
{"aget-char", 4, fmtopvAAvBBvCC},
{"aget-short", 4, fmtopvAAvBBvCC},
{"aput", 4, fmtopvAAvBBvCC},
{"aput-wide", 4, fmtopvAAvBBvCC},
{"aput-object", 4, fmtopvAAvBBvCC},
{"aput-boolean", 4, fmtopvAAvBBvCC},
{"aput-byte", 4, fmtopvAAvBBvCC},
{"aput-char", 4, fmtopvAAvBBvCC}, /* 0x50 */
{"aput-short", 4, fmtopvAAvBBvCC},
{"iget", 4, fmtopvAvBtCCCC},
{"iget-wide", 4, fmtopvAvBtCCCC},
{"iget-object", 4, fmtopvAvBtCCCC},
{"iget-boolean", 4, fmtopvAvBtCCCC},
{"iget-byte", 4, fmtopvAvBtCCCC},
{"iget-char", 4, fmtopvAvBtCCCC},
{"iget-short", 4, fmtopvAvBtCCCC},
{"iput", 4, fmtopvAvBtCCCC},
{"iput-wide", 4, fmtopvAvBtCCCC},
{"iput-object", 4, fmtopvAvBtCCCC},
{"iput-boolean", 4, fmtopvAvBtCCCC},
{"iput-byte", 4, fmtopvAvBtCCCC},
{"iput-char", 4, fmtopvAvBtCCCC},
{"iput-short", 4, fmtopvAvBtCCCC},
{"sget", 4, fmtopvAAtBBBB}, /* 0x60 */
{"sget-wide", 4, fmtopvAAtBBBB},
{"sget-object", 4, fmtopvAAtBBBB},
{"sget-boolean", 4, fmtopvAAtBBBB},
{"sget-byte", 4, fmtopvAAtBBBB},
{"sget-char", 4, fmtopvAAtBBBB},
{"sget-short", 4, fmtopvAAtBBBB},
{"sput", 4, fmtopvAAtBBBB},
{"sput-wide", 4, fmtopvAAtBBBB},
{"sput-object", 4, fmtopvAAtBBBB},
{"sput-boolean", 4, fmtopvAAtBBBB},
{"sput-byte", 4, fmtopvAAtBBBB},
{"sput-char", 4, fmtopvAAtBBBB},
{"sput-short", 4, fmtopvAAtBBBB},
{"invoke-virtual", 6, fmtopvXtBBBB},
{"invoke-super", 6, fmtopvXtBBBB},
{"invoke-direct", 6, fmtopvXtBBBB}, /* 0x70 */
{"invoke-static", 6, fmtopvXtBBBB},
{"invoke-interface", 6, fmtopvXtBBBB}, //XXX: Maybe use opt invoke-interface ??
{"UNUSED", 2, fmt00},
{"invoke-virtual/range", 6, fmtopvCCCCmBBBB},
{"invoke-super/range", 6, fmtopvCCCCmBBBB},
{"invoke-direct/range", 6, fmtopvCCCCmBBBB},
{"invoke-static/range", 6, fmtopvCCCCmBBBB},
{"invoke-interface/range", 6, fmtopvCCCCmBBBB},
{"UNUSED", 2, fmt00},
{"UNUSED", 2, fmt00},
{"neg-int", 2, fmtopvAvB},
{"not-int", 2, fmtopvAvB},
{"neg-long", 2, fmtopvAvB},
{"not-long", 2, fmtopvAvB},
{"neg-float", 2, fmtopvAvB},
{"neg-double", 2, fmtopvAvB}, /* 0x80 */
{"int-to-long", 2, fmtopvAvB},
{"int-to-float", 2, fmtopvAvB},
{"int-to-double", 2, fmtopvAvB},
{"long-to-int", 2, fmtopvAvB},
{"long-to-float", 2, fmtopvAvB},
{"long-to-double", 2, fmtopvAvB},
{"float-to-int", 2, fmtopvAvB},
{"float-to-long", 2, fmtopvAvB},
{"float-to-double", 2, fmtopvAvB},
{"double-to-int", 2, fmtopvAvB},
{"double-to-long", 2, fmtopvAvB},
{"double-to-float", 2, fmtopvAvB},
{"int-to-byte", 2, fmtopvAvB},
{"int-to-char", 2, fmtopvAvB},
{"int-to-short", 2, fmtopvAvB},
{"add-int", 4, fmtopvAAvBBvCC}, /* 0x90 */
{"sub-int", 4, fmtopvAAvBBvCC},
{"mul-int", 4, fmtopvAAvBBvCC},
{"div-int", 4, fmtopvAAvBBvCC},
{"rem-int", 4, fmtopvAAvBBvCC},
{"and-int", 4, fmtopvAAvBBvCC},
{"or-int", 4, fmtopvAAvBBvCC},
{"xor-int", 4, fmtopvAAvBBvCC},
{"shl-int", 4, fmtopvAAvBBvCC},
{"shr-int", 4, fmtopvAAvBBvCC},
{"ushr-int", 4, fmtopvAAvBBvCC},
{"add-long", 4, fmtopvAAvBBvCC},
{"sub-long", 4, fmtopvAAvBBvCC},
{"mul-long", 4, fmtopvAAvBBvCC},
{"div-long", 4, fmtopvAAvBBvCC},
{"rem-long", 4, fmtopvAAvBBvCC},
{"and-long", 4, fmtopvAAvBBvCC}, /* 0xa0 */
{"or-long", 4, fmtopvAAvBBvCC},
{"xor-long", 4, fmtopvAAvBBvCC},
{"shl-long", 4, fmtopvAAvBBvCC},
{"shr-long", 4, fmtopvAAvBBvCC},
{"ushr-long", 4, fmtopvAAvBBvCC},
{"add-float", 4, fmtopvAAvBBvCC},
{"sub-float", 4, fmtopvAAvBBvCC},
{"mul-float", 4, fmtopvAAvBBvCC},
{"div-float", 4, fmtopvAAvBBvCC},
{"rem-float", 4, fmtopvAAvBBvCC},
{"add-double", 4, fmtopvAAvBBvCC},
{"sub-double", 4, fmtopvAAvBBvCC},
{"mul-double", 4, fmtopvAAvBBvCC},
{"div-double", 4, fmtopvAAvBBvCC},
{"rem-double", 4, fmtopvAAvBBvCC},
{"add-int/2addr", 2, fmtopvAvB}, /* 0xb0 */
{"sub-int/2addr", 2, fmtopvAvB},
{"mul-int/2addr", 2, fmtopvAvB},
{"div-int/2addr", 2, fmtopvAvB},
{"rem-int/2addr", 2, fmtopvAvB},
{"and-int/2addr", 2, fmtopvAvB},
{"or-int/2addr", 2, fmtopvAvB},
{"xor-int/2addr", 2, fmtopvAvB},
{"shl-int/2addr", 2, fmtopvAvB},
{"shr-int/2addr", 2, fmtopvAvB},
{"ushr-int/2addr", 2, fmtopvAvB},
{"add-long/2addr", 2, fmtopvAvB},
{"sub-long/2addr", 2, fmtopvAvB},
{"mul-long/2addr", 2, fmtopvAvB},
{"div-long/2addr", 2, fmtopvAvB},
{"rem-long/2addr", 2, fmtopvAvB},
{"and-long/2addr", 2, fmtopvAvB}, /* 0xc0 */
{"or-long/2addr", 2, fmtopvAvB},
{"xor-long/2addr", 2, fmtopvAvB},
{"shl-long/2addr", 2, fmtopvAvB},
{"shr-long/2addr", 2, fmtopvAvB},
{"ushr-long/2addr", 2, fmtopvAvB},
{"add-float/2addr", 2, fmtopvAvB},
{"sub-float/2addr", 2, fmtopvAvB},
{"mul-float/2addr", 2, fmtopvAvB},
{"div-float/2addr", 2, fmtopvAvB},
{"rem-float/2addr", 2, fmtopvAvB},
{"add-double/2addr", 2, fmtopvAvB},
{"sub-double/2addr", 2, fmtopvAvB},
{"mul-double/2addr", 2, fmtopvAvB},
{"div-double/2addr", 2, fmtopvAvB},
{"rem-double/2addr", 2, fmtopvAvB},
{"add-int/lit16", 4, fmtopvAvBcCCCC}, /* 0xd0 */
{"rsub-int", 4, fmtopvAvBcCCCC},
{"mul-int/lit16", 4, fmtopvAvBcCCCC},
{"div-int/lit16", 4, fmtopvAvBcCCCC},
{"rem-int/lit16", 4, fmtopvAvBcCCCC},
{"and-int/lit16", 4, fmtopvAvBcCCCC},
{"or-int/lit16", 4, fmtopvAvBcCCCC},
{"xor-int/lit16", 4, fmtopvAvBcCCCC},
{"add-int/lit8", 4, fmtopvAAvBBcCC},
{"rsub-int/lit8", 4, fmtopvAAvBBcCC},
{"mul-int/lit8", 4, fmtopvAAvBBcCC},
{"div-int/lit8", 4, fmtopvAAvBBcCC},
{"rem-int/lit8", 4, fmtopvAAvBBcCC},
{"and-int/lit8", 4, fmtopvAAvBBcCC},
{"or-int/lit8", 4, fmtopvAAvBBcCC},
{"xor-int/lit8", 4, fmtopvAAvBBcCC},
{"shl-int/lit8", 4, fmtopvAAvBBcCC}, /* 0xe0 */
{"shr-int/lit8", 4, fmtopvAAvBBcCC},
{"ushr-int/lit8", 4, fmtopvAAvBBcCC},
{"+iget-volatile", 4, fmtopvAvBtCCCC},
{"+iput-volatile", 4, fmtopvAvBtCCCC},
{"+sget-volatile", 4, fmtopvAvBtCCCC},
{"+sput-volatile", 4, fmtopvAvBtCCCC},
{"+iget-object-volatile", 4, fmtopvAvBtCCCC},
{"+iget-wide-volatile", 4, fmtopvAvBtCCCC},
{"+iput-wide-volatile", 4, fmtopvAvBtCCCC},
{"+sget-wide-volatile", 4, fmtopvAvBtCCCC},
{"+sput-wide-volatile", 4, fmtopvAvBtCCCC},
{"^breakpoint", 4, fmtopvAvBtCCCC},
{"^throw-verification-error", 4, fmtopAAtBBBB},
{"+execute-inline", 6, fmtoptinlineI},
{"+execute-inline/range", 6, fmtoptinlineIR},
//{"+invoke-direct-empty", 6, fmtopvXtBBBB}, /* 0xf0 */ // invoke-object-init-range
{"+invoke-object-init-range", 6, fmtopvXtBBBB}, /* 0xf0 */ // invoke-object-init-range
{"return-void-barrier", 2, fmtop},
{"+iget-quick", 4, fmtoptopvAvBoCCCC},
{"+iget-wide-quick", 4, fmtoptopvAvBoCCCC},
{"+iget-object-quick", 4, fmtoptopvAvBoCCCC},
{"+iput-quick", 4, fmtoptopvAvBoCCCC},
{"+iput-wide-quick", 4, fmtoptopvAvBoCCCC},
{"+iput-object-quick", 4, fmtoptopvAvBoCCCC},
{"+invoke-virtual-quick", 6, fmtoptinvokeVS},
{"+invoke-virtual-quick/range", 6, fmtoptinvokeVSR},
{"invoke-polymorphic", 8, fmtop45CC},
{"invoke-polymorphic/range", 8, fmtop4RCC},
{"invoke-custom", 6, fmtopvXtBBBB},
{"invoke-custom/range", 6, fmtopvCCCCmBBBB},
{"+sput-object-volatile", 4, fmtopvAAtBBBB},
{"invalid", 2, fmtop}
{ "nop", 2, fmtop}, /* 0x00 */
{ "move", 2, fmtopvAvB},
{ "move/from16", 4, fmtopvAAvBBBB},
{ "move/16", 6, fmtopvAAAAvBBBB},
{ "move-wide", 2, fmtopvAvB},
{ "move-wide/from16", 4, fmtopvAAvBBBB},
{ "move-wide/16", 6, fmtopvAAAAvBBBB},
{ "move-object", 2, fmtopvAvB},
{ "move-object/from16", 4, fmtopvAAvBBBB},
{ "move-object/16", 6, fmtopvAAAAvBBBB},
{ "move-result", 2, fmtopvAA},
{ "move-result-wide", 2, fmtopvAA},
{ "move-result-object", 2, fmtopvAA},
{ "move-exception", 2, fmtopvAA},
{ "return-void", 2, fmtop},
{ "return", 2, fmtopvAA},
{ "return-wide", 2, fmtopvAA}, /* 0x10 */
{ "return-object", 2, fmtopvAA},
{ "const/4", 2, fmtopvAcB},
{ "const/16", 4, fmtopvAAcBBBB},
{ "const", 6, fmtopvAAcBBBBBBBB},
{ "const/high16", 4, fmtopvAAcBBBB0000},
{ "const-wide/16", 4, fmtopvAAcBBBB},
{ "const-wide/32", 6, fmtopvAAcBBBBBBBB},
{ "const-wide", 10, fmtopvAAcBBBBBBBBBBBBBBBB},
{ "const-wide/high16", 4, fmtopvAAcBBBB0000},
{ "const-string", 4, fmtopvAAtBBBB},
{ "const-string/jumbo", 6, fmtopvAAtBBBBBBBB},
{ "const-class", 4, fmtopvAAtBBBB},
{ "monitor-enter", 2, fmtopvAA},
{ "monitor-exit", 2, fmtopvAA},
{ "check-cast", 4, fmtopvAAtBBBB},
{ "instance-of", 4, fmtopvAvBtCCCC}, /* 0x20 */
{ "array-length", 2, fmtopvAvB},
{ "new-instance", 4, fmtopvAAtBBBB},
{ "new-array", 4, fmtopvAvBtCCCC},
{ "filled-new-array", 6, fmtopvXtBBBB},
{ "filled-new-array/range", 6, fmtopvCCCCmBBBB},
{ "fill-array-data", 6, fmtopvAApBBBBBBBB},
{ "throw", 2, fmtopvAA},
{ "goto", 2, fmtoppAA},
{ "goto/16", 4, fmtoppAAAA},
{ "goto/32", 6, fmtoppAAAAAAAA},
{ "packed-switch", 6, fmtopvAApBBBBBBBB},
{ "sparse-switch", 6, fmtopvAApBBBBBBBB},
{ "cmpl-float", 4, fmtopvAAvBBvCC},
{ "cmpg-float", 4, fmtopvAAvBBvCC},
{ "cmpl-double", 4, fmtopvAAvBBvCC},
{ "cmpg-double", 4, fmtopvAAvBBvCC}, /* 0x30 */
{ "cmp-long", 4, fmtopvAAvBBvCC},
{ "if-eq", 4, fmtopvAvBpCCCC},
{ "if-ne", 4, fmtopvAvBpCCCC},
{ "if-lt", 4, fmtopvAvBpCCCC},
{ "if-ge", 4, fmtopvAvBpCCCC},
{ "if-gt", 4, fmtopvAvBpCCCC},
{ "if-le", 4, fmtopvAvBpCCCC},
{ "if-eqz", 4, fmtopvAApBBBB},
{ "if-nez", 4, fmtopvAApBBBB},
{ "if-ltz", 4, fmtopvAApBBBB},
{ "if-gez", 4, fmtopvAApBBBB},
{ "if-gtz", 4, fmtopvAApBBBB},
{ "if-lez", 4, fmtopvAApBBBB},
{ "UNUSED", 2, fmt00},
{ "UNUSED", 2, fmt00},
{ "UNUSED", 2, fmt00}, /* 0x40 */
{ "UNUSED", 2, fmt00},
{ "UNUSED", 2, fmt00},
{ "UNUSED", 2, fmt00},
{ "aget", 4, fmtopvAAvBBvCC},
{ "aget-wide", 4, fmtopvAAvBBvCC},
{ "aget-object", 4, fmtopvAAvBBvCC},
{ "aget-boolean", 4, fmtopvAAvBBvCC},
{ "aget-byte", 4, fmtopvAAvBBvCC},
{ "aget-char", 4, fmtopvAAvBBvCC},
{ "aget-short", 4, fmtopvAAvBBvCC},
{ "aput", 4, fmtopvAAvBBvCC},
{ "aput-wide", 4, fmtopvAAvBBvCC},
{ "aput-object", 4, fmtopvAAvBBvCC},
{ "aput-boolean", 4, fmtopvAAvBBvCC},
{ "aput-byte", 4, fmtopvAAvBBvCC},
{ "aput-char", 4, fmtopvAAvBBvCC}, /* 0x50 */
{ "aput-short", 4, fmtopvAAvBBvCC},
{ "iget", 4, fmtopvAvBtCCCC},
{ "iget-wide", 4, fmtopvAvBtCCCC},
{ "iget-object", 4, fmtopvAvBtCCCC},
{ "iget-boolean", 4, fmtopvAvBtCCCC},
{ "iget-byte", 4, fmtopvAvBtCCCC},
{ "iget-char", 4, fmtopvAvBtCCCC},
{ "iget-short", 4, fmtopvAvBtCCCC},
{ "iput", 4, fmtopvAvBtCCCC},
{ "iput-wide", 4, fmtopvAvBtCCCC},
{ "iput-object", 4, fmtopvAvBtCCCC},
{ "iput-boolean", 4, fmtopvAvBtCCCC},
{ "iput-byte", 4, fmtopvAvBtCCCC},
{ "iput-char", 4, fmtopvAvBtCCCC},
{ "iput-short", 4, fmtopvAvBtCCCC},
{ "sget", 4, fmtopvAAtBBBB}, /* 0x60 */
{ "sget-wide", 4, fmtopvAAtBBBB},
{ "sget-object", 4, fmtopvAAtBBBB},
{ "sget-boolean", 4, fmtopvAAtBBBB},
{ "sget-byte", 4, fmtopvAAtBBBB},
{ "sget-char", 4, fmtopvAAtBBBB},
{ "sget-short", 4, fmtopvAAtBBBB},
{ "sput", 4, fmtopvAAtBBBB},
{ "sput-wide", 4, fmtopvAAtBBBB},
{ "sput-object", 4, fmtopvAAtBBBB},
{ "sput-boolean", 4, fmtopvAAtBBBB},
{ "sput-byte", 4, fmtopvAAtBBBB},
{ "sput-char", 4, fmtopvAAtBBBB},
{ "sput-short", 4, fmtopvAAtBBBB},
{ "invoke-virtual", 6, fmtopvXtBBBB},
{ "invoke-super", 6, fmtopvXtBBBB},
{ "invoke-direct", 6, fmtopvXtBBBB}, /* 0x70 */
{ "invoke-static", 6, fmtopvXtBBBB},
{ "invoke-interface", 6, fmtopvXtBBBB}, //XXX: Maybe use opt invoke-interface ??
{ "UNUSED", 2, fmt00},
{ "invoke-virtual/range", 6, fmtopvCCCCmBBBB},
{ "invoke-super/range", 6, fmtopvCCCCmBBBB},
{ "invoke-direct/range", 6, fmtopvCCCCmBBBB},
{ "invoke-static/range", 6, fmtopvCCCCmBBBB},
{ "invoke-interface/range", 6, fmtopvCCCCmBBBB},
{ "UNUSED", 2, fmt00},
{ "UNUSED", 2, fmt00},
{ "neg-int", 2, fmtopvAvB},
{ "not-int", 2, fmtopvAvB},
{ "neg-long", 2, fmtopvAvB},
{ "not-long", 2, fmtopvAvB},
{ "neg-float", 2, fmtopvAvB},
{ "neg-double", 2, fmtopvAvB}, /* 0x80 */
{ "int-to-long", 2, fmtopvAvB},
{ "int-to-float", 2, fmtopvAvB},
{ "int-to-double", 2, fmtopvAvB},
{ "long-to-int", 2, fmtopvAvB},
{ "long-to-float", 2, fmtopvAvB},
{ "long-to-double", 2, fmtopvAvB},
{ "float-to-int", 2, fmtopvAvB},
{ "float-to-long", 2, fmtopvAvB},
{ "float-to-double", 2, fmtopvAvB},
{ "double-to-int", 2, fmtopvAvB},
{ "double-to-long", 2, fmtopvAvB},
{ "double-to-float", 2, fmtopvAvB},
{ "int-to-byte", 2, fmtopvAvB},
{ "int-to-char", 2, fmtopvAvB},
{ "int-to-short", 2, fmtopvAvB},
{ "add-int", 4, fmtopvAAvBBvCC}, /* 0x90 */
{ "sub-int", 4, fmtopvAAvBBvCC},
{ "mul-int", 4, fmtopvAAvBBvCC},
{ "div-int", 4, fmtopvAAvBBvCC},
{ "rem-int", 4, fmtopvAAvBBvCC},
{ "and-int", 4, fmtopvAAvBBvCC},
{ "or-int", 4, fmtopvAAvBBvCC},
{ "xor-int", 4, fmtopvAAvBBvCC},
{ "shl-int", 4, fmtopvAAvBBvCC},
{ "shr-int", 4, fmtopvAAvBBvCC},
{ "ushr-int", 4, fmtopvAAvBBvCC},
{ "add-long", 4, fmtopvAAvBBvCC},
{ "sub-long", 4, fmtopvAAvBBvCC},
{ "mul-long", 4, fmtopvAAvBBvCC},
{ "div-long", 4, fmtopvAAvBBvCC},
{ "rem-long", 4, fmtopvAAvBBvCC},
{ "and-long", 4, fmtopvAAvBBvCC}, /* 0xa0 */
{ "or-long", 4, fmtopvAAvBBvCC},
{ "xor-long", 4, fmtopvAAvBBvCC},
{ "shl-long", 4, fmtopvAAvBBvCC},
{ "shr-long", 4, fmtopvAAvBBvCC},
{ "ushr-long", 4, fmtopvAAvBBvCC},
{ "add-float", 4, fmtopvAAvBBvCC},
{ "sub-float", 4, fmtopvAAvBBvCC},
{ "mul-float", 4, fmtopvAAvBBvCC},
{ "div-float", 4, fmtopvAAvBBvCC},
{ "rem-float", 4, fmtopvAAvBBvCC},
{ "add-double", 4, fmtopvAAvBBvCC},
{ "sub-double", 4, fmtopvAAvBBvCC},
{ "mul-double", 4, fmtopvAAvBBvCC},
{ "div-double", 4, fmtopvAAvBBvCC},
{ "rem-double", 4, fmtopvAAvBBvCC},
{ "add-int/2addr", 2, fmtopvAvB}, /* 0xb0 */
{ "sub-int/2addr", 2, fmtopvAvB},
{ "mul-int/2addr", 2, fmtopvAvB},
{ "div-int/2addr", 2, fmtopvAvB},
{ "rem-int/2addr", 2, fmtopvAvB},
{ "and-int/2addr", 2, fmtopvAvB},
{ "or-int/2addr", 2, fmtopvAvB},
{ "xor-int/2addr", 2, fmtopvAvB},
{ "shl-int/2addr", 2, fmtopvAvB},
{ "shr-int/2addr", 2, fmtopvAvB},
{ "ushr-int/2addr", 2, fmtopvAvB},
{ "add-long/2addr", 2, fmtopvAvB},
{ "sub-long/2addr", 2, fmtopvAvB},
{ "mul-long/2addr", 2, fmtopvAvB},
{ "div-long/2addr", 2, fmtopvAvB},
{ "rem-long/2addr", 2, fmtopvAvB},
{ "and-long/2addr", 2, fmtopvAvB}, /* 0xc0 */
{ "or-long/2addr", 2, fmtopvAvB},
{ "xor-long/2addr", 2, fmtopvAvB},
{ "shl-long/2addr", 2, fmtopvAvB},
{ "shr-long/2addr", 2, fmtopvAvB},
{ "ushr-long/2addr", 2, fmtopvAvB},
{ "add-float/2addr", 2, fmtopvAvB},
{ "sub-float/2addr", 2, fmtopvAvB},
{ "mul-float/2addr", 2, fmtopvAvB},
{ "div-float/2addr", 2, fmtopvAvB},
{ "rem-float/2addr", 2, fmtopvAvB},
{ "add-double/2addr", 2, fmtopvAvB},
{ "sub-double/2addr", 2, fmtopvAvB},
{ "mul-double/2addr", 2, fmtopvAvB},
{ "div-double/2addr", 2, fmtopvAvB},
{ "rem-double/2addr", 2, fmtopvAvB},
{ "add-int/lit16", 4, fmtopvAvBcCCCC}, /* 0xd0 */
{ "rsub-int", 4, fmtopvAvBcCCCC},
{ "mul-int/lit16", 4, fmtopvAvBcCCCC},
{ "div-int/lit16", 4, fmtopvAvBcCCCC},
{ "rem-int/lit16", 4, fmtopvAvBcCCCC},
{ "and-int/lit16", 4, fmtopvAvBcCCCC},
{ "or-int/lit16", 4, fmtopvAvBcCCCC},
{ "xor-int/lit16", 4, fmtopvAvBcCCCC},
{ "add-int/lit8", 4, fmtopvAAvBBcCC},
{ "rsub-int/lit8", 4, fmtopvAAvBBcCC},
{ "mul-int/lit8", 4, fmtopvAAvBBcCC},
{ "div-int/lit8", 4, fmtopvAAvBBcCC},
{ "rem-int/lit8", 4, fmtopvAAvBBcCC},
{ "and-int/lit8", 4, fmtopvAAvBBcCC},
{ "or-int/lit8", 4, fmtopvAAvBBcCC},
{ "xor-int/lit8", 4, fmtopvAAvBBcCC},
{ "shl-int/lit8", 4, fmtopvAAvBBcCC}, /* 0xe0 */
{ "shr-int/lit8", 4, fmtopvAAvBBcCC},
{ "ushr-int/lit8", 4, fmtopvAAvBBcCC},
{ "+iget-volatile", 4, fmtopvAvBtCCCC},
{ "+iput-volatile", 4, fmtopvAvBtCCCC},
{ "+sget-volatile", 4, fmtopvAvBtCCCC},
{ "+sput-volatile", 4, fmtopvAvBtCCCC},
{ "+iget-object-volatile", 4, fmtopvAvBtCCCC},
{ "+iget-wide-volatile", 4, fmtopvAvBtCCCC},
{ "+iput-wide-volatile", 4, fmtopvAvBtCCCC},
{ "+sget-wide-volatile", 4, fmtopvAvBtCCCC},
{ "+sput-wide-volatile", 4, fmtopvAvBtCCCC},
{ "^breakpoint", 4, fmtopvAvBtCCCC},
{ "^throw-verification-error", 4, fmtopAAtBBBB},
{ "+execute-inline", 6, fmtoptinlineI},
{ "+execute-inline/range", 6, fmtoptinlineIR},
//{ "+invoke-direct-empty", 6, fmtopvXtBBBB}, /* 0xf0 */ // invoke-object-init-range
{ "+invoke-object-init-range", 6, fmtopvXtBBBB}, /* 0xf0 */ // invoke-object-init-range
{ "return-void-barrier", 2, fmtop},
{ "+iget-quick", 4, fmtoptopvAvBoCCCC},
{ "+iget-wide-quick", 4, fmtoptopvAvBoCCCC},
{ "+iget-object-quick", 4, fmtoptopvAvBoCCCC},
{ "+iput-quick", 4, fmtoptopvAvBoCCCC},
{ "+iput-wide-quick", 4, fmtoptopvAvBoCCCC},
{ "+iput-object-quick", 4, fmtoptopvAvBoCCCC},
{ "+invoke-virtual-quick", 6, fmtoptinvokeVS},
{ "+invoke-virtual-quick/range", 6, fmtoptinvokeVSR},
{ "invoke-polymorphic", 8, fmtop45CC},
{ "invoke-polymorphic/range", 8, fmtop4RCC},
{ "invoke-custom", 6, fmtopvXtBBBB},
{ "invoke-custom/range", 6, fmtopvCCCCmBBBB},
{ "+sput-object-volatile", 4, fmtopvAAtBBBB},
{ "invalid", 2, fmtop}
};
#endif

View File

@ -632,7 +632,7 @@ static int decode_cmpi(const ut8 *bytes, ebc_command_t *cmd) {
char op1c[32];
char indx[32] = {0};
char immed[32] = {0};
char *suff[] = {"eq", "lte", "gte", "ulte", "ugte"};
char *suff[] = { "eq", "lte", "gte", "ulte", "ugte" };
snprintf (op1c, sizeof (op1c)-1, "%sr%u",
TEST_BIT(bytes[1], 3) ? "@" : "", op1);

View File

@ -1,294 +1,294 @@
/* radare - LGPL - Copyright 2013 - 2014 - condret@runas-racer.com */
/* radare - LGPL - Copyright 2013-2022 - condret */
#define GB_8BIT 1
#define GB_16BIT 2
#define ARG_8 4
#define ARG_16 8
#define GB_IO 16 // Most io (Joypad, Sound, Screen ...)
#define GB_8BIT 1
#define GB_16BIT 2
#define ARG_8 4
#define ARG_16 8
#define GB_IO 16 // Most io (Joypad, Sound, Screen ...)
typedef struct{
typedef struct {
const char *name;
const int type;
} gb_opcode;
static const char *cb_ops[]={ "rlc","rrc","rl","rr","sla","sra","swap","srl",
"bit 0,","bit 1,","bit 2,","bit 3,","bit 4,","bit 5,","bit 6,","bit 7,",
"res 0,","res 1,","res 2,","res 3,","res 4,","res 5,","res 6,","res 7,",
"set 0,","set 1,","set 2,","set 3,","set 4,","set 5,","set 6,","set 7,"};
static const char *cb_ops[] = {
"rlc", "rrc", "rl", "rr", "sla", "sra", "swap", "srl",
"bit 0,", "bit 1,", "bit 2,", "bit 3,", "bit 4,", "bit 5,", "bit 6,", "bit 7,",
"res 0,", "res 1,", "res 2,", "res 3,", "res 4,", "res 5,", "res 6,", "res 7,",
"set 0,", "set 1,", "set 2,", "set 3,", "set 4,", "set 5,", "set 6,", "set 7,"
};
static const char *cb_regs[]={ "b","c","d","e","h","l","[hl]","a"};
static const char *cb_regs[]= { "b", "c", "d", "e", "h", "l", "[hl]", "a" };
static gb_opcode gb_op[] = {
{"nop" ,GB_8BIT}, //0x00
{"ld bc, 0x%04x" ,GB_8BIT+ARG_16},
{"ld [bc], a" ,GB_8BIT},
{"inc bc" ,GB_8BIT},
{"inc b" ,GB_8BIT},
{"dec b" ,GB_8BIT},
{"ld b, 0x%02x" ,GB_8BIT+ARG_8},
{"rlca" ,GB_8BIT},
{"ld [0x%04x], sp" ,GB_8BIT+ARG_16}, //word or byte?
{"add hl, bc" ,GB_8BIT},
{"ld a, [bc]" ,GB_8BIT},
{"dec bc" ,GB_8BIT},
{"inc c" ,GB_8BIT},
{"dec c" ,GB_8BIT},
{"ld c, 0x%02x" ,GB_8BIT+ARG_8},
{"rrca" ,GB_8BIT},
{ "nop", GB_8BIT }, //0x00
{ "ld bc, 0x%04x", GB_8BIT + ARG_16},
{ "ld [bc], a", GB_8BIT },
{ "inc bc", GB_8BIT },
{ "inc b", GB_8BIT },
{ "dec b", GB_8BIT },
{ "ld b, 0x%02x", GB_8BIT + ARG_8 },
{ "rlca", GB_8BIT },
{ "ld [0x%04x], sp", GB_8BIT + ARG_16}, //word or byte?
{ "add hl, bc", GB_8BIT },
{ "ld a, [bc]", GB_8BIT },
{ "dec bc", GB_8BIT },
{ "inc c", GB_8BIT },
{ "dec c", GB_8BIT },
{ "ld c, 0x%02x", GB_8BIT + ARG_8 },
{ "rrca", GB_8BIT },
{ "stop", GB_8BIT }, //0x10
{ "ld de, 0x%04x" ,GB_8BIT+ARG_16},
{ "ld [de], a" ,GB_8BIT },
{ "inc de", GB_8BIT },
{ "inc d", GB_8BIT },
{ "dec d", GB_8BIT },
{ "ld d, 0x%02x" ,GB_8BIT+ARG_8 },
{ "rla", GB_8BIT },
{ "jr 0x%02x", GB_8BIT+ARG_8 }, //signed
{ "add hl, de" ,GB_8BIT },
{ "ld a, [de]" ,GB_8BIT },
{ "dec de", GB_8BIT },
{ "inc e", GB_8BIT },
{ "dec e", GB_8BIT },
{ "ld e, 0x%02x" ,GB_8BIT+ARG_8 },
{ "rra", GB_8BIT },
{"stop" ,GB_8BIT}, //0x10
{"ld de, 0x%04x" ,GB_8BIT+ARG_16},
{"ld [de], a" ,GB_8BIT},
{"inc de" ,GB_8BIT},
{"inc d" ,GB_8BIT},
{"dec d" ,GB_8BIT},
{"ld d, 0x%02x" ,GB_8BIT+ARG_8},
{"rla" ,GB_8BIT},
{"jr 0x%02x" ,GB_8BIT+ARG_8}, //signed
{"add hl, de" ,GB_8BIT},
{"ld a, [de]" ,GB_8BIT},
{"dec de" ,GB_8BIT},
{"inc e" ,GB_8BIT},
{"dec e" ,GB_8BIT},
{"ld e, 0x%02x" ,GB_8BIT+ARG_8},
{"rra" ,GB_8BIT},
{ "jr nZ, 0x%02x" ,GB_8BIT+ARG_8 }, //0x20 //signed
{ "ld hl, 0x%04x" ,GB_8BIT+ARG_16},
{ "ldi [hl], a" ,GB_8BIT },
{ "inc hl", GB_8BIT },
{ "inc h", GB_8BIT },
{ "dec h", GB_8BIT },
{ "ld h, 0x%02x" ,GB_8BIT+ARG_8 },
{ "daa", GB_8BIT },
{ "jr Z, 0x%02x" ,GB_8BIT+ARG_8 }, //signed
{ "add hl, hl" ,GB_8BIT },
{ "ldi a, [hl]" ,GB_8BIT },
{ "dec hl", GB_8BIT },
{ "inc l", GB_8BIT },
{ "dec l", GB_8BIT },
{ "ld l, 0x%02x" ,GB_8BIT+ARG_8 },
{ "cpl", GB_8BIT },
{"jr nZ, 0x%02x" ,GB_8BIT+ARG_8}, //0x20 //signed
{"ld hl, 0x%04x" ,GB_8BIT+ARG_16},
{"ldi [hl], a" ,GB_8BIT},
{"inc hl" ,GB_8BIT},
{"inc h" ,GB_8BIT},
{"dec h" ,GB_8BIT},
{"ld h, 0x%02x" ,GB_8BIT+ARG_8},
{"daa" ,GB_8BIT},
{"jr Z, 0x%02x" ,GB_8BIT+ARG_8}, //signed
{"add hl, hl" ,GB_8BIT},
{"ldi a, [hl]" ,GB_8BIT},
{"dec hl" ,GB_8BIT},
{"inc l" ,GB_8BIT},
{"dec l" ,GB_8BIT},
{"ld l, 0x%02x" ,GB_8BIT+ARG_8},
{"cpl" ,GB_8BIT},
{ "jr nC, 0x%02x" ,GB_8BIT+ARG_8 }, //0x30 //signed
{ "ld sp, 0x%04x" ,GB_8BIT+ARG_16},
{ "ldd [hl], a" ,GB_8BIT },
{ "inc sp", GB_8BIT },
{ "inc [hl]", GB_8BIT },
{ "dec [hl]", GB_8BIT },
{ "ld [hl], 0x%02x" ,GB_8BIT+ARG_8 },
{ "scf", GB_8BIT },
{ "jr C, 0x%02x" ,GB_8BIT+ARG_8 }, //signed
{ "add hl, sp" ,GB_8BIT },
{ "ldd a, [hl]" ,GB_8BIT },
{ "dec sp", GB_8BIT },
{ "inc a", GB_8BIT },
{ "dec a", GB_8BIT },
{ "ld a, 0x%02x" ,GB_8BIT+ARG_8 },
{ "ccf", GB_8BIT },
{"jr nC, 0x%02x" ,GB_8BIT+ARG_8}, //0x30 //signed
{"ld sp, 0x%04x" ,GB_8BIT+ARG_16},
{"ldd [hl], a" ,GB_8BIT},
{"inc sp" ,GB_8BIT},
{"inc [hl]" ,GB_8BIT},
{"dec [hl]" ,GB_8BIT},
{"ld [hl], 0x%02x" ,GB_8BIT+ARG_8},
{"scf" ,GB_8BIT},
{"jr C, 0x%02x" ,GB_8BIT+ARG_8}, //signed
{"add hl, sp" ,GB_8BIT},
{"ldd a, [hl]" ,GB_8BIT},
{"dec sp" ,GB_8BIT},
{"inc a" ,GB_8BIT},
{"dec a" ,GB_8BIT},
{"ld a, 0x%02x" ,GB_8BIT+ARG_8},
{"ccf" ,GB_8BIT},
{ "ld b, b" ,GB_8BIT }, //0x40
{ "ld b, c" ,GB_8BIT },
{ "ld b, d" ,GB_8BIT },
{ "ld b, e" ,GB_8BIT },
{ "ld b, h" ,GB_8BIT },
{ "ld b, l" ,GB_8BIT },
{ "ld b, [hl]" ,GB_8BIT },
{ "ld b, a" ,GB_8BIT },
{ "ld c, b" ,GB_8BIT },
{ "ld c, c" ,GB_8BIT },
{ "ld c, d" ,GB_8BIT },
{ "ld c, e" ,GB_8BIT },
{ "ld c, h" ,GB_8BIT },
{ "ld c, l" ,GB_8BIT },
{ "ld c, [hl]" ,GB_8BIT },
{ "ld c, a" ,GB_8BIT },
{"ld b, b" ,GB_8BIT}, //0x40
{"ld b, c" ,GB_8BIT},
{"ld b, d" ,GB_8BIT},
{"ld b, e" ,GB_8BIT},
{"ld b, h" ,GB_8BIT},
{"ld b, l" ,GB_8BIT},
{"ld b, [hl]" ,GB_8BIT},
{"ld b, a" ,GB_8BIT},
{"ld c, b" ,GB_8BIT},
{"ld c, c" ,GB_8BIT},
{"ld c, d" ,GB_8BIT},
{"ld c, e" ,GB_8BIT},
{"ld c, h" ,GB_8BIT},
{"ld c, l" ,GB_8BIT},
{"ld c, [hl]" ,GB_8BIT},
{"ld c, a" ,GB_8BIT},
{ "ld d, b" ,GB_8BIT }, //0x50
{ "ld d, c" ,GB_8BIT },
{ "ld d, d" ,GB_8BIT },
{ "ld d, e" ,GB_8BIT },
{ "ld d, h" ,GB_8BIT },
{ "ld d, l" ,GB_8BIT },
{ "ld d, [hl]" ,GB_8BIT },
{ "ld d, a" ,GB_8BIT },
{ "ld e, b" ,GB_8BIT },
{ "ld e, c" ,GB_8BIT },
{ "ld e, d" ,GB_8BIT },
{ "ld e, e" ,GB_8BIT },
{ "ld e, h" ,GB_8BIT },
{ "ld e, l" ,GB_8BIT },
{ "ld e, [hl]" ,GB_8BIT },
{ "ld e, a" ,GB_8BIT },
{"ld d, b" ,GB_8BIT}, //0x50
{"ld d, c" ,GB_8BIT},
{"ld d, d" ,GB_8BIT},
{"ld d, e" ,GB_8BIT},
{"ld d, h" ,GB_8BIT},
{"ld d, l" ,GB_8BIT},
{"ld d, [hl]" ,GB_8BIT},
{"ld d, a" ,GB_8BIT},
{"ld e, b" ,GB_8BIT},
{"ld e, c" ,GB_8BIT},
{"ld e, d" ,GB_8BIT},
{"ld e, e" ,GB_8BIT},
{"ld e, h" ,GB_8BIT},
{"ld e, l" ,GB_8BIT},
{"ld e, [hl]" ,GB_8BIT},
{"ld e, a" ,GB_8BIT},
{ "ld h, b" ,GB_8BIT }, //0x60
{ "ld h, c" ,GB_8BIT },
{ "ld h, d" ,GB_8BIT },
{ "ld h, e" ,GB_8BIT },
{ "ld h, h" ,GB_8BIT },
{ "ld h, l" ,GB_8BIT },
{ "ld h, [hl]" ,GB_8BIT },
{ "ld h, a" ,GB_8BIT },
{ "ld l, b" ,GB_8BIT },
{ "ld l, c" ,GB_8BIT },
{ "ld l, d" ,GB_8BIT },
{ "ld l, e" ,GB_8BIT },
{ "ld l, h" ,GB_8BIT },
{ "ld l, l" ,GB_8BIT },
{ "ld l, [hl]" ,GB_8BIT },
{ "ld l, a" ,GB_8BIT },
{"ld h, b" ,GB_8BIT}, //0x60
{"ld h, c" ,GB_8BIT},
{"ld h, d" ,GB_8BIT},
{"ld h, e" ,GB_8BIT},
{"ld h, h" ,GB_8BIT},
{"ld h, l" ,GB_8BIT},
{"ld h, [hl]" ,GB_8BIT},
{"ld h, a" ,GB_8BIT},
{"ld l, b" ,GB_8BIT},
{"ld l, c" ,GB_8BIT},
{"ld l, d" ,GB_8BIT},
{"ld l, e" ,GB_8BIT},
{"ld l, h" ,GB_8BIT},
{"ld l, l" ,GB_8BIT},
{"ld l, [hl]" ,GB_8BIT},
{"ld l, a" ,GB_8BIT},
{ "ld [hl], b" ,GB_8BIT },//0X70
{ "ld [hl], c" ,GB_8BIT },
{ "ld [hl], d" ,GB_8BIT },
{ "ld [hl], e" ,GB_8BIT },
{ "ld [hl], h" ,GB_8BIT },
{ "ld [hl], l" ,GB_8BIT },
{ "halt", GB_8BIT },
{ "ld [hl], a" ,GB_8BIT },
{ "ld a, b" ,GB_8BIT },
{ "ld a, c" ,GB_8BIT },
{ "ld a, d" ,GB_8BIT },
{ "ld a, e" ,GB_8BIT },
{ "ld a, h" ,GB_8BIT },
{ "ld a, l" ,GB_8BIT },
{ "ld a, [hl]" ,GB_8BIT },
{ "ld a, a" ,GB_8BIT },
{"ld [hl], b" ,GB_8BIT}, //0X70
{"ld [hl], c" ,GB_8BIT},
{"ld [hl], d" ,GB_8BIT},
{"ld [hl], e" ,GB_8BIT},
{"ld [hl], h" ,GB_8BIT},
{"ld [hl], l" ,GB_8BIT},
{"halt" ,GB_8BIT},
{"ld [hl], a" ,GB_8BIT},
{"ld a, b" ,GB_8BIT},
{"ld a, c" ,GB_8BIT},
{"ld a, d" ,GB_8BIT},
{"ld a, e" ,GB_8BIT},
{"ld a, h" ,GB_8BIT},
{"ld a, l" ,GB_8BIT},
{"ld a, [hl]" ,GB_8BIT},
{"ld a, a" ,GB_8BIT},
{ "add b", GB_8BIT }, //0x80
{ "add c", GB_8BIT },
{ "add d", GB_8BIT },
{ "add e", GB_8BIT },
{ "add h", GB_8BIT },
{ "add l", GB_8BIT },
{ "add [hl]", GB_8BIT },
{ "add a", GB_8BIT },
{ "adc b", GB_8BIT },
{ "adc c", GB_8BIT },
{ "adc d", GB_8BIT },
{ "adc e", GB_8BIT },
{ "adc h", GB_8BIT },
{ "adc l", GB_8BIT },
{ "adc [hl]", GB_8BIT },
{ "adc a", GB_8BIT },
{"add b" ,GB_8BIT}, //0x80
{"add c" ,GB_8BIT},
{"add d" ,GB_8BIT},
{"add e" ,GB_8BIT},
{"add h" ,GB_8BIT},
{"add l" ,GB_8BIT},
{"add [hl]" ,GB_8BIT},
{"add a" ,GB_8BIT},
{"adc b" ,GB_8BIT},
{"adc c" ,GB_8BIT},
{"adc d" ,GB_8BIT},
{"adc e" ,GB_8BIT},
{"adc h" ,GB_8BIT},
{"adc l" ,GB_8BIT},
{"adc [hl]" ,GB_8BIT},
{"adc a" ,GB_8BIT},
{ "sub b", GB_8BIT }, //0x90
{ "sub c", GB_8BIT },
{ "sub d", GB_8BIT },
{ "sub e", GB_8BIT },
{ "sub h", GB_8BIT },
{ "sub l", GB_8BIT },
{ "sub [hl]", GB_8BIT },
{ "sub a", GB_8BIT },
{ "sbc b", GB_8BIT },
{ "sbc c", GB_8BIT },
{ "sbc d", GB_8BIT },
{ "sbc e", GB_8BIT },
{ "sbc h", GB_8BIT },
{ "sbc l", GB_8BIT },
{ "sbc [hl]", GB_8BIT },
{ "sbc a", GB_8BIT },
{"sub b" ,GB_8BIT}, //0x90
{"sub c" ,GB_8BIT},
{"sub d" ,GB_8BIT},
{"sub e" ,GB_8BIT},
{"sub h" ,GB_8BIT},
{"sub l" ,GB_8BIT},
{"sub [hl]" ,GB_8BIT},
{"sub a" ,GB_8BIT},
{"sbc b" ,GB_8BIT},
{"sbc c" ,GB_8BIT},
{"sbc d" ,GB_8BIT},
{"sbc e" ,GB_8BIT},
{"sbc h" ,GB_8BIT},
{"sbc l" ,GB_8BIT},
{"sbc [hl]" ,GB_8BIT},
{"sbc a" ,GB_8BIT},
{ "and b", GB_8BIT }, //0xa0
{ "and c", GB_8BIT },
{ "and d", GB_8BIT },
{ "and e", GB_8BIT },
{ "and h", GB_8BIT },
{ "and l", GB_8BIT },
{ "and [hl]", GB_8BIT },
{ "and a", GB_8BIT },
{ "xor b", GB_8BIT },
{ "xor c", GB_8BIT },
{ "xor d", GB_8BIT },
{ "xor e", GB_8BIT },
{ "xor h", GB_8BIT },
{ "xor l", GB_8BIT },
{ "xor [hl]", GB_8BIT },
{ "xor a", GB_8BIT },
{"and b" ,GB_8BIT}, //0xa0
{"and c" ,GB_8BIT},
{"and d" ,GB_8BIT},
{"and e" ,GB_8BIT},
{"and h" ,GB_8BIT},
{"and l" ,GB_8BIT},
{"and [hl]" ,GB_8BIT},
{"and a" ,GB_8BIT},
{"xor b" ,GB_8BIT},
{"xor c" ,GB_8BIT},
{"xor d" ,GB_8BIT},
{"xor e" ,GB_8BIT},
{"xor h" ,GB_8BIT},
{"xor l" ,GB_8BIT},
{"xor [hl]" ,GB_8BIT},
{"xor a" ,GB_8BIT},
{ "or b", GB_8BIT }, //0xb0
{ "or c", GB_8BIT },
{ "or d", GB_8BIT },
{ "or e", GB_8BIT },
{ "or h", GB_8BIT },
{ "or l", GB_8BIT },
{ "or [hl]", GB_8BIT },
{ "or a", GB_8BIT },
{ "cp b", GB_8BIT },
{ "cp c", GB_8BIT },
{ "cp d", GB_8BIT },
{ "cp e", GB_8BIT },
{ "cp h", GB_8BIT },
{ "cp l", GB_8BIT },
{ "cp [hl]", GB_8BIT },
{ "cp a", GB_8BIT },
{"or b" ,GB_8BIT}, //0xb0
{"or c" ,GB_8BIT},
{"or d" ,GB_8BIT},
{"or e" ,GB_8BIT},
{"or h" ,GB_8BIT},
{"or l" ,GB_8BIT},
{"or [hl]" ,GB_8BIT},
{"or a" ,GB_8BIT},
{"cp b" ,GB_8BIT},
{"cp c" ,GB_8BIT},
{"cp d" ,GB_8BIT},
{"cp e" ,GB_8BIT},
{"cp h" ,GB_8BIT},
{"cp l" ,GB_8BIT},
{"cp [hl]" ,GB_8BIT},
{"cp a" ,GB_8BIT},
{ "ret nZ", GB_8BIT }, //0xc0
{ "pop bc", GB_8BIT },
{ "jp nZ, 0x%04x", GB_8BIT+ARG_16},
{ "jp 0x%04x", GB_8BIT+ARG_16},
{ "call nZ, 0x%04x", GB_8BIT+ARG_16},
{ "push bc", GB_8BIT },
{ "add 0x%02x", GB_8BIT+ARG_8 },
{ "rst 0", GB_8BIT },
{ "ret Z", GB_8BIT },
{ "ret", GB_8BIT },
{ "jp Z, 0x%04x", GB_8BIT+ARG_16},
{ "", GB_16BIT },
{ "call Z, 0x%04x" ,GB_8BIT+ARG_16},
{ "call 0x%04x", GB_8BIT+ARG_16},
{ "adc 0x%02x", GB_8BIT+ARG_8 },
{ "rst 8", GB_8BIT },
{"ret nZ" ,GB_8BIT}, //0xc0
{"pop bc" ,GB_8BIT},
{"jp nZ, 0x%04x" ,GB_8BIT+ARG_16},
{"jp 0x%04x" ,GB_8BIT+ARG_16},
{"call nZ, 0x%04x" ,GB_8BIT+ARG_16},
{"push bc" ,GB_8BIT},
{"add 0x%02x" ,GB_8BIT+ARG_8},
{"rst 0" ,GB_8BIT},
{"ret Z" ,GB_8BIT},
{"ret" ,GB_8BIT},
{"jp Z, 0x%04x" ,GB_8BIT+ARG_16},
{"" ,GB_16BIT},
{"call Z, 0x%04x" ,GB_8BIT+ARG_16},
{"call 0x%04x" ,GB_8BIT+ARG_16},
{"adc 0x%02x" ,GB_8BIT+ARG_8},
{"rst 8" ,GB_8BIT},
{ "ret nC", GB_8BIT }, //0xd0
{ "pop de", GB_8BIT },
{ "jp nC, 0x%04x" ,GB_8BIT+ARG_16},
{ "invalid", GB_8BIT },
{ "call nC, 0x%04x" ,GB_8BIT+ARG_16},
{ "push de", GB_8BIT },
{ "sub 0x%02x", GB_8BIT+ARG_8 },
{ "rst 16", GB_8BIT },
{ "ret C", GB_8BIT },
{ "reti", GB_8BIT },
{ "jp C, 0x%04x" ,GB_8BIT+ARG_16},
{ "invalid", GB_8BIT },
{ "call C, 0x%04x" ,GB_8BIT+ARG_16},
{ "invalid", GB_8BIT },
{ "sbc 0x%02x", GB_8BIT+ARG_8 },
{ "rst 24", GB_8BIT },
{"ret nC" ,GB_8BIT}, //0xd0
{"pop de" ,GB_8BIT},
{"jp nC, 0x%04x" ,GB_8BIT+ARG_16},
{"invalid" ,GB_8BIT},
{"call nC, 0x%04x" ,GB_8BIT+ARG_16},
{"push de" ,GB_8BIT},
{"sub 0x%02x" ,GB_8BIT+ARG_8},
{"rst 16" ,GB_8BIT},
{"ret C" ,GB_8BIT},
{"reti" ,GB_8BIT},
{"jp C, 0x%04x" ,GB_8BIT+ARG_16},
{"invalid" ,GB_8BIT},
{"call C, 0x%04x" ,GB_8BIT+ARG_16},
{"invalid" ,GB_8BIT},
{"sbc 0x%02x" ,GB_8BIT+ARG_8},
{"rst 24" ,GB_8BIT},
{ "ld [%s], a" ,GB_8BIT+ARG_8+GB_IO }, //0xe0
{ "pop hl", GB_8BIT },
{ "ld [0xff00 + c], a" ,GB_8BIT },
{ "invalid", GB_8BIT },
{ "invalid", GB_8BIT },
{ "push hl", GB_8BIT },
{ "and 0x%02x", GB_8BIT+ARG_8 },
{ "rst 32", GB_8BIT },
{ "add sp, 0x%02x" ,GB_8BIT+ARG_8 }, //signed
{ "jp hl", GB_8BIT },
{ "ld [0x%04x], a" ,GB_8BIT+ARG_16}, //signed
{ "invalid", GB_8BIT },
{ "invalid", GB_8BIT },
{ "invalid", GB_8BIT },
{ "xor 0x%02x", GB_8BIT+ARG_8 },
{ "rst 40", GB_8BIT },
{"ld [%s], a" ,GB_8BIT+ARG_8+GB_IO}, //0xe0
{"pop hl" ,GB_8BIT},
{"ld [0xff00 + c], a" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"push hl" ,GB_8BIT},
{"and 0x%02x" ,GB_8BIT+ARG_8},
{"rst 32" ,GB_8BIT},
{"add sp, 0x%02x" ,GB_8BIT+ARG_8}, //signed
{"jp hl" ,GB_8BIT},
{"ld [0x%04x], a" ,GB_8BIT+ARG_16}, //signed
{"invalid" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"xor 0x%02x" ,GB_8BIT+ARG_8},
{"rst 40" ,GB_8BIT},
{"ld a, [%s]" ,GB_8BIT+ARG_8+GB_IO}, //0xf0
{"pop af" ,GB_8BIT},
{"ld a, [0xff00 + c]" ,GB_8BIT},
{"di" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"push af" ,GB_8BIT},
{"or 0x%02x" ,GB_8BIT+ARG_8},
{"rst 48" ,GB_8BIT},
{"ld hl, sp + 0x%02x" ,GB_8BIT+ARG_8}, //signed
{"ld sp, hl" ,GB_8BIT},
{"ld a, [0x%04x]" ,GB_8BIT+ARG_16},
{"ei" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"invalid" ,GB_8BIT},
{"cp 0x%02x" ,GB_8BIT+ARG_8},
{"rst 56" ,GB_8BIT},
{ "ld a, [%s]" ,GB_8BIT+ARG_8+GB_IO }, //0xf0
{ "pop af", GB_8BIT },
{ "ld a, [0xff00 + c]" ,GB_8BIT },
{ "di", GB_8BIT },
{ "invalid", GB_8BIT },
{ "push af", GB_8BIT },
{ "or 0x%02x", GB_8BIT+ARG_8 },
{ "rst 48", GB_8BIT },
{ "ld hl, sp + 0x%02x" ,GB_8BIT+ARG_8 }, //signed
{ "ld sp, hl", GB_8BIT },
{ "ld a, [0x%04x]", GB_8BIT+ARG_16},
{ "ei", GB_8BIT },
{ "invalid", GB_8BIT },
{ "invalid", GB_8BIT },
{ "cp 0x%02x", GB_8BIT+ARG_8 },
{ "rst 56", GB_8BIT },
};

View File

@ -111,339 +111,339 @@ static const unsigned char i4004_lengthtable[] =
static const struct i4004_kv i4004_wordlist[] =
{
#line 146 "i4004.gperf"
{"ldm 0xe","de"},
{ "ldm 0xe","de" },
#line 93 "i4004.gperf"
{"ld r9","a9"},
{ "ld r9","a9" },
#line 141 "i4004.gperf"
{"ldm 0x9","d9"},
{ "ldm 0x9","d9" },
#line 29 "i4004.gperf"
{"jin r8r9","39"},
{ "jin r8r9","39" },
#line 142 "i4004.gperf"
{"ldm 0xa","da"},
{ "ldm 0xa","da" },
#line 90 "i4004.gperf"
{"ld r6","a6"},
{ "ld r6","a6" },
#line 61 "i4004.gperf"
{"add r9","89"},
{ "add r9","89" },
#line 138 "i4004.gperf"
{"ldm 0x6","d6"},
{ "ldm 0x6","d6" },
#line 144 "i4004.gperf"
{"ldm 0xc","dc"},
{ "ldm 0xc","dc" },
#line 168 "i4004.gperf"
{"cma","f4"},
{ "cma","f4" },
#line 58 "i4004.gperf"
{"add r6","86"},
{ "add r6","86" },
#line 143 "i4004.gperf"
{"ldm 0xb","db"},
{ "ldm 0xb","db" },
#line 167 "i4004.gperf"
{"cmc","f3"},
{ "cmc","f3" },
#line 166 "i4004.gperf"
{"iac","f2"},
{ "iac","f2" },
#line 130 "i4004.gperf"
{"bbl 0xe","ce"},
{ "bbl 0xe","ce" },
#line 176 "i4004.gperf"
{"kbp","fc"},
{ "kbp","fc" },
#line 125 "i4004.gperf"
{"bbl 0x9","c9"},
{ "bbl 0x9","c9" },
#line 126 "i4004.gperf"
{"bbl 0xa","ca"},
{ "bbl 0xa","ca" },
#line 174 "i4004.gperf"
{"stc","fa"},
{ "stc","fa" },
#line 122 "i4004.gperf"
{"bbl 0x6","c6"},
{ "bbl 0x6","c6" },
#line 128 "i4004.gperf"
{"bbl 0xc","cc"},
{ "bbl 0xc","cc" },
#line 11 "i4004.gperf"
{"nop","00"},
{ "nop","00" },
#line 127 "i4004.gperf"
{"bbl 0xb","cb"},
{ "bbl 0xb","cb" },
#line 87 "i4004.gperf"
{"ld r3","a3"},
{ "ld r3","a3" },
#line 97 "i4004.gperf"
{"ld r13","ad"},
{ "ld r13","ad" },
#line 135 "i4004.gperf"
{"ldm 0x3","d3"},
{ "ldm 0x3","d3" },
#line 23 "i4004.gperf"
{"jin r2r3","33"},
{ "jin r2r3","33" },
#line 33 "i4004.gperf"
{"jin r12r13","3d"},
{ "jin r12r13","3d" },
#line 55 "i4004.gperf"
{"add r3","83"},
{ "add r3","83" },
#line 65 "i4004.gperf"
{"add r13","8d"},
{ "add r13","8d" },
#line 85 "i4004.gperf"
{"ld r1","a1"},
{ "ld r1","a1" },
#line 95 "i4004.gperf"
{"ld r11","ab"},
{ "ld r11","ab" },
#line 133 "i4004.gperf"
{"ldm 0x1","d1"},
{ "ldm 0x1","d1" },
#line 21 "i4004.gperf"
{"jin r0r1","31"},
{ "jin r0r1","31" },
#line 18 "i4004.gperf"
{"src r6","2d"},
{ "src r6","2d" },
#line 31 "i4004.gperf"
{"jin r10r11","3b"},
{ "jin r10r11","3b" },
#line 53 "i4004.gperf"
{"add r1","81"},
{ "add r1","81" },
#line 63 "i4004.gperf"
{"add r11","8b"},
{ "add r11","8b" },
#line 119 "i4004.gperf"
{"bbl 0x3","c3"},
{ "bbl 0x3","c3" },
#line 169 "i4004.gperf"
{"ral","f5"},
{ "ral","f5" },
#line 145 "i4004.gperf"
{"ldm 0xd","dd"},
{ "ldm 0xd","dd" },
#line 149 "i4004.gperf"
{"wmp","e1"},
{ "wmp","e1" },
#line 109 "i4004.gperf"
{"xch r9","b9"},
{ "xch r9","b9" },
#line 117 "i4004.gperf"
{"bbl 0x1","c1"},
{ "bbl 0x1","c1" },
#line 106 "i4004.gperf"
{"xch r6","b6"},
{ "xch r6","b6" },
#line 89 "i4004.gperf"
{"ld r5","a5"},
{ "ld r5","a5" },
#line 99 "i4004.gperf"
{"ld r15","af"},
{ "ld r15","af" },
#line 137 "i4004.gperf"
{"ldm 0x5","d5"},
{ "ldm 0x5","d5" },
#line 25 "i4004.gperf"
{"jin r4r5","35"},
{ "jin r4r5","35" },
#line 35 "i4004.gperf"
{"jin r14r15","3f"},
{ "jin r14r15","3f" },
#line 57 "i4004.gperf"
{"add r5","85"},
{ "add r5","85" },
#line 67 "i4004.gperf"
{"add r15","8f"},
{ "add r15","8f" },
#line 175 "i4004.gperf"
{"daa","fb"},
{ "daa","fb" },
#line 15 "i4004.gperf"
{"src r3","27"},
{ "src r3","27" },
#line 172 "i4004.gperf"
{"dac","f8"},
{ "dac","f8" },
#line 92 "i4004.gperf"
{"ld r8","a8"},
{ "ld r8","a8" },
#line 140 "i4004.gperf"
{"ldm 0x8","d8"},
{ "ldm 0x8","d8" },
#line 129 "i4004.gperf"
{"bbl 0xd","cd"},
{ "bbl 0xd","cd" },
#line 163 "i4004.gperf"
{"rd3","ef"},
{ "rd3","ef" },
#line 60 "i4004.gperf"
{"add r8","88"},
{ "add r8","88" },
#line 13 "i4004.gperf"
{"src r1","23"},
{ "src r1","23" },
#line 171 "i4004.gperf"
{"tcc","f7"},
{ "tcc","f7" },
#line 121 "i4004.gperf"
{"bbl 0x5","c5"},
{ "bbl 0x5","c5" },
#line 161 "i4004.gperf"
{"rd1","ed"},
{ "rd1","ed" },
#line 158 "i4004.gperf"
{"rdr","ea"},
{ "rdr","ea" },
#line 103 "i4004.gperf"
{"xch r3","b3"},
{ "xch r3","b3" },
#line 113 "i4004.gperf"
{"xch r13","bd"},
{ "xch r13","bd" },
#line 173 "i4004.gperf"
{"tcs","f9"},
{ "tcs","f9" },
#line 124 "i4004.gperf"
{"bbl 0x8","c8"},
{ "bbl 0x8","c8" },
#line 155 "i4004.gperf"
{"wr3","e7"},
{ "wr3","e7" },
#line 77 "i4004.gperf"
{"sub r9","99"},
{ "sub r9","99" },
#line 101 "i4004.gperf"
{"xch r1","b1"},
{ "xch r1","b1" },
#line 111 "i4004.gperf"
{"xch r11","bb"},
{ "xch r11","bb" },
#line 170 "i4004.gperf"
{"rar","f6"},
{ "rar","f6" },
#line 74 "i4004.gperf"
{"sub r6","96"},
{ "sub r6","96" },
#line 17 "i4004.gperf"
{"src r5","2b"},
{ "src r5","2b" },
#line 153 "i4004.gperf"
{"wr1","e5"},
{ "wr1","e5" },
#line 86 "i4004.gperf"
{"ld r2","a2"},
{ "ld r2","a2" },
#line 96 "i4004.gperf"
{"ld r12","ac"},
{ "ld r12","ac" },
#line 134 "i4004.gperf"
{"ldm 0x2","d2"},
{ "ldm 0x2","d2" },
#line 150 "i4004.gperf"
{"wrr","e2"},
{ "wrr","e2" },
#line 54 "i4004.gperf"
{"add r2","82"},
{ "add r2","82" },
#line 64 "i4004.gperf"
{"add r12","8c"},
{ "add r12","8c" },
#line 177 "i4004.gperf"
{"dcl","fd"},
{ "dcl","fd" },
#line 84 "i4004.gperf"
{"ld r0","a0"},
{ "ld r0","a0" },
#line 94 "i4004.gperf"
{"ld r10","aa"},
{ "ld r10","aa" },
#line 132 "i4004.gperf"
{"ldm 0x0","d0"},
{ "ldm 0x0","d0" },
#line 52 "i4004.gperf"
{"add r0","80"},
{ "add r0","80" },
#line 62 "i4004.gperf"
{"add r10","8a"},
{ "add r10","8a" },
#line 159 "i4004.gperf"
{"adm","eb"},
{ "adm","eb" },
#line 105 "i4004.gperf"
{"xch r5","b5"},
{ "xch r5","b5" },
#line 115 "i4004.gperf"
{"xch r15","bf"},
{ "xch r15","bf" },
#line 118 "i4004.gperf"
{"bbl 0x2","c2"},
{ "bbl 0x2","c2" },
#line 71 "i4004.gperf"
{"sub r3","93"},
{ "sub r3","93" },
#line 81 "i4004.gperf"
{"sub r13","9d"},
{ "sub r13","9d" },
#line 165 "i4004.gperf"
{"clc","f1"},
{ "clc","f1" },
#line 108 "i4004.gperf"
{"xch r8","b8"},
{ "xch r8","b8" },
#line 116 "i4004.gperf"
{"bbl 0x0","c0"},
{ "bbl 0x0","c0" },
#line 164 "i4004.gperf"
{"clb","f0"},
{ "clb","f0" },
#line 69 "i4004.gperf"
{"sub r1","91"},
{ "sub r1","91" },
#line 79 "i4004.gperf"
{"sub r11","9b"},
{ "sub r11","9b" },
#line 156 "i4004.gperf"
{"sbm","e8"},
{ "sbm","e8" },
#line 14 "i4004.gperf"
{"src r2","25"},
{ "src r2","25" },
#line 91 "i4004.gperf"
{"ld r7","a7"},
{ "ld r7","a7" },
#line 139 "i4004.gperf"
{"ldm 0x7","d7"},
{ "ldm 0x7","d7" },
#line 27 "i4004.gperf"
{"jin r6r7","37"},
{ "jin r6r7","37" },
#line 162 "i4004.gperf"
{"rd2","ee"},
{ "rd2","ee" },
#line 59 "i4004.gperf"
{"add r7","87"},
{ "add r7","87" },
#line 12 "i4004.gperf"
{"src r0","21"},
{ "src r0","21" },
#line 160 "i4004.gperf"
{"rd0","ec"},
{ "rd0","ec" },
#line 73 "i4004.gperf"
{"sub r5","95"},
{ "sub r5","95" },
#line 83 "i4004.gperf"
{"sub r15","9f"},
{ "sub r15","9f" },
#line 157 "i4004.gperf"
{"rdm","e9"},
{ "rdm","e9" },
#line 102 "i4004.gperf"
{"xch r2","b2"},
{ "xch r2","b2" },
#line 112 "i4004.gperf"
{"xch r12","bc"},
{ "xch r12","bc" },
#line 151 "i4004.gperf"
{"wpm","e3"},
{ "wpm","e3" },
#line 123 "i4004.gperf"
{"bbl 0x7","c7"},
{ "bbl 0x7","c7" },
#line 154 "i4004.gperf"
{"wr2","e6"},
{ "wr2","e6" },
#line 76 "i4004.gperf"
{"sub r8","98"},
{ "sub r8","98" },
#line 100 "i4004.gperf"
{"xch r0","b0"},
{ "xch r0","b0" },
#line 110 "i4004.gperf"
{"xch r10","ba"},
{ "xch r10","ba" },
#line 88 "i4004.gperf"
{"ld r4","a4"},
{ "ld r4","a4" },
#line 98 "i4004.gperf"
{"ld r14","ae"},
{ "ld r14","ae" },
#line 136 "i4004.gperf"
{"ldm 0x4","d4"},
{ "ldm 0x4","d4" },
#line 152 "i4004.gperf"
{"wr0","e4"},
{ "wr0","e4" },
#line 56 "i4004.gperf"
{"add r4","84"},
{ "add r4","84" },
#line 66 "i4004.gperf"
{"add r14","8e"},
{ "add r14","8e" },
#line 148 "i4004.gperf"
{"wrm","e0"},
{ "wrm","e0" },
#line 45 "i4004.gperf"
{"inc r9","69"},
{ "inc r9","69" },
#line 19 "i4004.gperf"
{"src r7","2f"},
{ "src r7","2f" },
#line 147 "i4004.gperf"
{"ldm 0xf","df"},
{ "ldm 0xf","df" },
#line 42 "i4004.gperf"
{"inc r6","66"},
{ "inc r6","66" },
#line 28 "i4004.gperf"
{"fin r8r9","38"},
{ "fin r8r9","38" },
#line 120 "i4004.gperf"
{"bbl 0x4","c4"},
{ "bbl 0x4","c4" },
#line 70 "i4004.gperf"
{"sub r2","92"},
{ "sub r2","92" },
#line 80 "i4004.gperf"
{"sub r12","9c"},
{ "sub r12","9c" },
#line 107 "i4004.gperf"
{"xch r7","b7"},
{ "xch r7","b7" },
#line 131 "i4004.gperf"
{"bbl 0xf","cf"},
{ "bbl 0xf","cf" },
#line 68 "i4004.gperf"
{"sub r0","90"},
{ "sub r0","90" },
#line 78 "i4004.gperf"
{"sub r10","9a"},
{ "sub r10","9a" },
#line 16 "i4004.gperf"
{"src r4","29"},
{ "src r4","29" },
#line 39 "i4004.gperf"
{"inc r3","63"},
{ "inc r3","63" },
#line 49 "i4004.gperf"
{"inc r13","6d"},
{ "inc r13","6d" },
#line 22 "i4004.gperf"
{"fin r2r3","32"},
{ "fin r2r3","32" },
#line 32 "i4004.gperf"
{"fin r12r13","3c"},
{ "fin r12r13","3c" },
#line 37 "i4004.gperf"
{"inc r1","61"},
{ "inc r1","61" },
#line 47 "i4004.gperf"
{"inc r11","6b"},
{ "inc r11","6b" },
#line 20 "i4004.gperf"
{"fin r0r1","30"},
{ "fin r0r1","30" },
#line 30 "i4004.gperf"
{"fin r10r11","3a"},
{ "fin r10r11","3a" },
#line 104 "i4004.gperf"
{"xch r4","b4"},
{ "xch r4","b4" },
#line 114 "i4004.gperf"
{"xch r14","be"},
{ "xch r14","be" },
#line 75 "i4004.gperf"
{"sub r7","97"},
{ "sub r7","97" },
#line 41 "i4004.gperf"
{"inc r5","65"},
{ "inc r5","65" },
#line 51 "i4004.gperf"
{"inc r15","6f"},
{ "inc r15","6f" },
#line 24 "i4004.gperf"
{"fin r4r5","34"},
{ "fin r4r5","34" },
#line 34 "i4004.gperf"
{"fin r14r15","3e"},
{ "fin r14r15","3e" },
#line 44 "i4004.gperf"
{"inc r8","68"},
{ "inc r8","68" },
#line 72 "i4004.gperf"
{"sub r4","94"},
{ "sub r4","94" },
#line 82 "i4004.gperf"
{"sub r14","9e"},
{ "sub r14","9e" },
#line 38 "i4004.gperf"
{"inc r2","62"},
{ "inc r2","62" },
#line 48 "i4004.gperf"
{"inc r12","6c"},
{ "inc r12","6c" },
#line 36 "i4004.gperf"
{"inc r0","60"},
{ "inc r0","60" },
#line 46 "i4004.gperf"
{"inc r10","6a"},
{ "inc r10","6a" },
#line 43 "i4004.gperf"
{"inc r7","67"},
{ "inc r7","67" },
#line 26 "i4004.gperf"
{"fin r6r7","36"},
{ "fin r6r7","36" },
#line 40 "i4004.gperf"
{"inc r4","64"},
{ "inc r4","64" },
#line 50 "i4004.gperf"
{"inc r14","6e"}
{ "inc r14","6e" }
};
static const short i4004_lookup[] =

0
libr/anal/arch/kvx/opc.sed Executable file → Normal file
View File

View File

@ -17,27 +17,27 @@ typedef struct r_asm_lm32_csr_t {
#define RAsmLm32CsrNumber 21
static const RAsmLm32Csr RAsmLm32Csrs[RAsmLm32CsrNumber] = {
{0x00, "IE"},
{0x01, "IM"},
{0x02, "IP"},
{0x03, "ICC"},
{0x04, "DCC"},
{0x05, "CC"},
{0x06, "CFG"},
{0x07, "EBA"},
{0x08, "DC"},
{0x09, "DEBA"},
{0x0a, "CFG2"},
{0x0e, "JTX"},
{0x0f, "JRX"},
{0x10, "BP0"},
{0x11, "BP1"},
{0x12, "BP2"},
{0x13, "BP3"},
{0x18, "WP0"},
{0x19, "WP1"},
{0x1a, "WP2"},
{0x1b, "WP3"},
{0x00, "IE" },
{0x01, "IM" },
{0x02, "IP" },
{0x03, "ICC" },
{0x04, "DCC" },
{0x05, "CC" },
{0x06, "CFG" },
{0x07, "EBA" },
{0x08, "DC" },
{0x09, "DEBA" },
{0x0a, "CFG2" },
{0x0e, "JTX" },
{0x0f, "JRX" },
{0x10, "BP0" },
{0x11, "BP1" },
{0x12, "BP2" },
{0x13, "BP3" },
{0x18, "WP0" },
{0x19, "WP1" },
{0x1a, "WP2" },
{0x1b, "WP3" },
};
typedef struct r_asm_lm32_reg_t {
@ -48,45 +48,45 @@ typedef struct r_asm_lm32_reg_t {
#define RAsmLm32RegNumber 39
static const RAsmLm32Reg RAsmLm32Regs[RAsmLm32RegNumber] = {
{0x00, "r0"},
{0x00, "zero"},
{0x01, "r1"},
{0x02, "r2"},
{0x03, "r3"},
{0x04, "r4"},
{0x05, "r5"},
{0x06, "r6"},
{0x07, "r7"},
{0x08, "r8"},
{0x09, "r9"},
{0x0a, "r10"},
{0x0b, "r11"},
{0x0c, "r12"},
{0x0d, "r13"},
{0x0e, "r14"},
{0x0f, "r15"},
{0x10, "r16"},
{0x11, "r17"},
{0x12, "r18"},
{0x13, "r19"},
{0x14, "r20"},
{0x15, "r21"},
{0x16, "r22"},
{0x17, "r23"},
{0x18, "r24"},
{0x19, "r25"},
{0x1a, "gp"},
{0x1a, "r26"},
{0x1b, "fp"},
{0x1b, "r27"},
{0x1c, "sp"},
{0x1c, "r28"},
{0x1d, "ra"},
{0x1d, "r29"},
{0x1e, "ea"},
{0x1e, "r30"},
{0x1f, "ba"},
{0x1f, "r31"},
{0x00, "r0" },
{0x00, "zero" },
{0x01, "r1" },
{0x02, "r2" },
{0x03, "r3" },
{0x04, "r4" },
{0x05, "r5" },
{0x06, "r6" },
{0x07, "r7" },
{0x08, "r8" },
{0x09, "r9" },
{0x0a, "r10" },
{0x0b, "r11" },
{0x0c, "r12" },
{0x0d, "r13" },
{0x0e, "r14" },
{0x0f, "r15" },
{0x10, "r16" },
{0x11, "r17" },
{0x12, "r18" },
{0x13, "r19" },
{0x14, "r20" },
{0x15, "r21" },
{0x16, "r22" },
{0x17, "r23" },
{0x18, "r24" },
{0x19, "r25" },
{0x1a, "gp" },
{0x1a, "r26" },
{0x1b, "fp" },
{0x1b, "r27" },
{0x1c, "sp" },
{0x1c, "r28" },
{0x1d, "ra" },
{0x1d, "r29" },
{0x1e, "ea" },
{0x1e, "r30" },
{0x1f, "ba" },
{0x1f, "r31" },
};
typedef enum r_asm_lm32_instr_type_t {
@ -179,70 +179,70 @@ typedef struct r_asm_lm32_opcode {
#define RAsmLm32OpcodeNumber 0x40
static const RAsmLm32Opcode RAsmLm32OpcodeList[RAsmLm32OpcodeNumber] = {
{reg_imm5, "srui"}, //0x00
{reg_imm16_zeroextend, "nori"}, //0x01
{reg_imm16_signextend, "muli"}, //0x02
{reg_imm16_signextend, "sh"}, //0x03
{reg_imm16_signextend, "lb"}, //0x04
{reg_imm5, "sri"}, //0x05
{reg_imm16_zeroextend, "xori"}, //0x06
{reg_imm16_signextend, "lh"}, //0x07
{reg_imm16_zeroextend, "andi"}, //0x08
{reg_imm16_zeroextend, "xnori"}, //0x09
{reg_imm16_signextend, "lw"}, //0x0a
{reg_imm16_signextend, "lhu"}, //0x0b
{reg_imm16_signextend, "sb"}, //0x0c
{reg_imm16_signextend, "addi"}, //0x0d
{reg_imm16_zeroextend, "ori"}, //0x0e
{reg_imm5, "sli"}, //0x0f
{reg_imm16_signextend, "lbu"}, //0x10
{reg_imm16_shift2_signextend, "be"}, //0x11
{reg_imm16_shift2_signextend, "bg"}, //0x12
{reg_imm16_shift2_signextend, "bge"}, //0x13
{reg_imm16_shift2_signextend, "bgeu"}, //0x14
{reg_imm16_shift2_signextend, "bgu"}, //0x15
{reg_imm16_signextend, "sw"}, //0x16
{reg_imm16_shift2_signextend, "bne"}, //0x17
{reg_imm16_zeroextend, "andhi"}, //0x18
{reg_imm16_signextend, "cmpei"}, //0x19
{reg_imm16_signextend, "cmpgi"}, //0x1a
{reg_imm16_signextend, "cmpgei"}, //0x1b
{reg_imm16_zeroextend, "cmpgeui"}, //0x1c
{reg_imm16_zeroextend, "cmpgui"}, //0x1d
{reg_imm16_zeroextend, "orhi"}, //0x1e
{reg_imm16_signextend, "cmpnei"}, //0x1f
{three_regs, "sru"}, //0x20
{three_regs, "nor"}, //0x21
{three_regs, "mul"}, //0x22
{three_regs, "divu"}, //0x23
{csr_reg, "rcsr"}, //0x24
{three_regs, "sr"}, //0x25
{three_regs, "xor"}, //0x26
{three_regs, "div"}, //0x27
{three_regs, "and"}, //0x28
{three_regs, "xnor"}, //0x29
{reserved, "reserved"}, //0x2a
{raise_instr, "raise"}, //0x2b (break, scall)
{two_regs, "sextb"}, //0x2c
{three_regs, "add"}, //0x2d
{three_regs, "or"}, //0x2e
{three_regs, "sl"}, //0x2f
{one_reg, "b"}, //0x30
{three_regs, "modu"}, //0x31
{three_regs, "sub"}, //0x32
{reserved, "reserved"}, //0x33
{reg_csr, "wcsr"}, //0x34
{three_regs, "mod"}, //0x35
{one_reg, "call"}, //0x36
{two_regs, "sexth"}, //0x37
{imm26, "bi"}, //0x38
{three_regs, "cmpe"}, //0x39
{three_regs, "cmpg"}, //0x3a
{three_regs, "cmpge"}, //0x3b
{three_regs, "cmpgeu"}, //0x3c
{three_regs, "cmpgu"}, //0x3d
{imm26, "calli"}, //0x3e
{three_regs, "cmpne"}, //0x3f
{reg_imm5, "srui" }, //0x00
{reg_imm16_zeroextend, "nori" }, //0x01
{reg_imm16_signextend, "muli" }, //0x02
{reg_imm16_signextend, "sh" }, //0x03
{reg_imm16_signextend, "lb" }, //0x04
{reg_imm5, "sri" }, //0x05
{reg_imm16_zeroextend, "xori" }, //0x06
{reg_imm16_signextend, "lh" }, //0x07
{reg_imm16_zeroextend, "andi" }, //0x08
{reg_imm16_zeroextend, "xnori" }, //0x09
{reg_imm16_signextend, "lw" }, //0x0a
{reg_imm16_signextend, "lhu" }, //0x0b
{reg_imm16_signextend, "sb" }, //0x0c
{reg_imm16_signextend, "addi" }, //0x0d
{reg_imm16_zeroextend, "ori" }, //0x0e
{reg_imm5, "sli" }, //0x0f
{reg_imm16_signextend, "lbu" }, //0x10
{reg_imm16_shift2_signextend, "be" }, //0x11
{reg_imm16_shift2_signextend, "bg" }, //0x12
{reg_imm16_shift2_signextend, "bge" }, //0x13
{reg_imm16_shift2_signextend, "bgeu" }, //0x14
{reg_imm16_shift2_signextend, "bgu" }, //0x15
{reg_imm16_signextend, "sw" }, //0x16
{reg_imm16_shift2_signextend, "bne" }, //0x17
{reg_imm16_zeroextend, "andhi" }, //0x18
{reg_imm16_signextend, "cmpei" }, //0x19
{reg_imm16_signextend, "cmpgi" }, //0x1a
{reg_imm16_signextend, "cmpgei" }, //0x1b
{reg_imm16_zeroextend, "cmpgeui" }, //0x1c
{reg_imm16_zeroextend, "cmpgui" }, //0x1d
{reg_imm16_zeroextend, "orhi" }, //0x1e
{reg_imm16_signextend, "cmpnei" }, //0x1f
{three_regs, "sru" }, //0x20
{three_regs, "nor" }, //0x21
{three_regs, "mul" }, //0x22
{three_regs, "divu" }, //0x23
{csr_reg, "rcsr" }, //0x24
{three_regs, "sr" }, //0x25
{three_regs, "xor" }, //0x26
{three_regs, "div" }, //0x27
{three_regs, "and" }, //0x28
{three_regs, "xnor" }, //0x29
{reserved, "reserved" }, //0x2a
{raise_instr, "raise" }, //0x2b (break, scall)
{two_regs, "sextb" }, //0x2c
{three_regs, "add" }, //0x2d
{three_regs, "or" }, //0x2e
{three_regs, "sl" }, //0x2f
{one_reg, "b" }, //0x30
{three_regs, "modu" }, //0x31
{three_regs, "sub" }, //0x32
{reserved, "reserved" }, //0x33
{reg_csr, "wcsr" }, //0x34
{three_regs, "mod" }, //0x35
{one_reg, "call" }, //0x36
{two_regs, "sexth" }, //0x37
{imm26, "bi" }, //0x38
{three_regs, "cmpe" }, //0x39
{three_regs, "cmpg" }, //0x3a
{three_regs, "cmpge" }, //0x3b
{three_regs, "cmpgeu" }, //0x3c
{three_regs, "cmpgu" }, //0x3d
{imm26, "calli" }, //0x3e
{three_regs, "cmpne" }, //0x3f
};
typedef struct r_asm_lm32_instruction {

View File

@ -26,263 +26,263 @@ typedef struct mcs96_op_t {
static const Mcs96Op mcs96_op[] = {
{"skip", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"shr", MCS96_3B},
{"shl", MCS96_3B},
{"shra", MCS96_3B}, //0x0a
{"invalid", MCS96_1B},
{"shrl", MCS96_3B},
{"shll", MCS96_3B},
{"shral", MCS96_3B},
{"norml", MCS96_3B},
{"invalid", MCS96_1B}, //0x10
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"shrb", MCS96_3B},
{"shlb", MCS96_3B},
{"shrab", MCS96_3B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"sjmp", MCS96_2B}, //0x20
{"sjmp", MCS96_2B},
{"sjmp", MCS96_2B},
{"sjmp", MCS96_2B},
{"sjmp", MCS96_2B},
{"sjmp", MCS96_2B},
{"sjmp", MCS96_2B},
{"sjmp", MCS96_2B},
{"scall", MCS96_2B}, //0x28
{"scall", MCS96_2B},
{"scall", MCS96_2B},
{"scall", MCS96_2B},
{"scall", MCS96_2B},
{"scall", MCS96_2B},
{"scall", MCS96_2B},
{"scall", MCS96_2B},
{"jbc", MCS96_3B}, //0x30
{"jbc", MCS96_3B},
{"jbc", MCS96_3B},
{"jbc", MCS96_3B},
{"jbc", MCS96_3B},
{"jbc", MCS96_3B},
{"jbc", MCS96_3B},
{"jbc", MCS96_3B},
{"jbs", MCS96_3B}, //0x38
{"jbs", MCS96_3B},
{"jbs", MCS96_3B},
{"jbs", MCS96_3B},
{"jbs", MCS96_3B},
{"jbs", MCS96_3B},
{"jbs", MCS96_3B},
{"jbs", MCS96_3B},
{"and", MCS96_4B|MCS96_3OP}, //0x40
{"and", MCS96_5B|MCS96_3OP},
{"and", MCS96_4B|MCS96_3OP},
{"and", MCS96_5B_OR_6B|MCS96_3OP},
{"add", MCS96_4B|MCS96_3OP},
{"add", MCS96_5B|MCS96_3OP},
{"add", MCS96_4B|MCS96_3OP},
{"add", MCS96_5B_OR_6B|MCS96_3OP},
{"sub", MCS96_4B|MCS96_3OP},
{"sub", MCS96_5B|MCS96_3OP},
{"sub", MCS96_4B|MCS96_3OP},
{"sub", MCS96_5B_OR_6B|MCS96_3OP},
{"mulu", MCS96_4B|MCS96_3OP|MCS96_FE},
{"mulu", MCS96_5B|MCS96_3OP|MCS96_FE},
{"mulu", MCS96_4B|MCS96_3OP|MCS96_FE},
{"mulu", MCS96_5B_OR_6B|MCS96_3OP|MCS96_FE}, //0x4f
{"andb", MCS96_4B|MCS96_3OP|MCS96_REG_8},
{"andb", MCS96_4B|MCS96_3OP},
{"andb", MCS96_4B|MCS96_3OP},
{"andb", MCS96_5B_OR_6B|MCS96_3OP}, //datasheet says that this is always 5 byte
{ "skip", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "shr", MCS96_3B},
{ "shl", MCS96_3B},
{ "shra", MCS96_3B}, //0x0a
{ "invalid", MCS96_1B},
{ "shrl", MCS96_3B},
{ "shll", MCS96_3B},
{ "shral", MCS96_3B},
{ "norml", MCS96_3B},
{ "invalid", MCS96_1B}, //0x10
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "shrb", MCS96_3B},
{ "shlb", MCS96_3B},
{ "shrab", MCS96_3B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "sjmp", MCS96_2B}, //0x20
{ "sjmp", MCS96_2B},
{ "sjmp", MCS96_2B},
{ "sjmp", MCS96_2B},
{ "sjmp", MCS96_2B},
{ "sjmp", MCS96_2B},
{ "sjmp", MCS96_2B},
{ "sjmp", MCS96_2B},
{ "scall", MCS96_2B}, //0x28
{ "scall", MCS96_2B},
{ "scall", MCS96_2B},
{ "scall", MCS96_2B},
{ "scall", MCS96_2B},
{ "scall", MCS96_2B},
{ "scall", MCS96_2B},
{ "scall", MCS96_2B},
{ "jbc", MCS96_3B}, //0x30
{ "jbc", MCS96_3B},
{ "jbc", MCS96_3B},
{ "jbc", MCS96_3B},
{ "jbc", MCS96_3B},
{ "jbc", MCS96_3B},
{ "jbc", MCS96_3B},
{ "jbc", MCS96_3B},
{ "jbs", MCS96_3B}, //0x38
{ "jbs", MCS96_3B},
{ "jbs", MCS96_3B},
{ "jbs", MCS96_3B},
{ "jbs", MCS96_3B},
{ "jbs", MCS96_3B},
{ "jbs", MCS96_3B},
{ "jbs", MCS96_3B},
{ "and", MCS96_4B|MCS96_3OP}, //0x40
{ "and", MCS96_5B|MCS96_3OP},
{ "and", MCS96_4B|MCS96_3OP},
{ "and", MCS96_5B_OR_6B|MCS96_3OP},
{ "add", MCS96_4B|MCS96_3OP},
{ "add", MCS96_5B|MCS96_3OP},
{ "add", MCS96_4B|MCS96_3OP},
{ "add", MCS96_5B_OR_6B|MCS96_3OP},
{ "sub", MCS96_4B|MCS96_3OP},
{ "sub", MCS96_5B|MCS96_3OP},
{ "sub", MCS96_4B|MCS96_3OP},
{ "sub", MCS96_5B_OR_6B|MCS96_3OP},
{ "mulu", MCS96_4B|MCS96_3OP|MCS96_FE},
{ "mulu", MCS96_5B|MCS96_3OP|MCS96_FE},
{ "mulu", MCS96_4B|MCS96_3OP|MCS96_FE},
{ "mulu", MCS96_5B_OR_6B|MCS96_3OP|MCS96_FE}, //0x4f
{ "andb", MCS96_4B|MCS96_3OP|MCS96_REG_8},
{ "andb", MCS96_4B|MCS96_3OP},
{ "andb", MCS96_4B|MCS96_3OP},
{ "andb", MCS96_5B_OR_6B|MCS96_3OP}, //datasheet says that this is always 5 byte
//that datasheet already has proven to have typos
{"addb", MCS96_4B|MCS96_3OP},
{"addb", MCS96_4B|MCS96_3OP},
{"addb", MCS96_4B|MCS96_3OP},
{"addb", MCS96_5B_OR_6B|MCS96_3OP},
{"subb", MCS96_4B|MCS96_3OP},
{"subb", MCS96_4B|MCS96_3OP},
{"subb", MCS96_4B|MCS96_3OP},
{"subb", MCS96_5B_OR_6B|MCS96_3OP},
{"mulub", MCS96_4B|MCS96_3OP|MCS96_FE},
{"mulub", MCS96_4B|MCS96_3OP|MCS96_FE},
{"mulub", MCS96_4B|MCS96_3OP|MCS96_FE},
{"mulub", MCS96_5B_OR_6B|MCS96_3OP|MCS96_FE}, //0x5f
{"and", MCS96_3B|MCS96_2OP},
{"and", MCS96_4B|MCS96_2OP},
{"and", MCS96_3B|MCS96_2OP},
{"and", MCS96_4B_OR_5B|MCS96_2OP},
{"add", MCS96_3B|MCS96_2OP},
{"add", MCS96_4B|MCS96_2OP},
{"add", MCS96_3B|MCS96_2OP},
{"add", MCS96_4B_OR_5B|MCS96_2OP},
{"sub", MCS96_3B|MCS96_2OP},
{"sub", MCS96_4B|MCS96_2OP},
{"sub", MCS96_3B|MCS96_2OP},
{"sub", MCS96_4B_OR_5B|MCS96_2OP},
{"mulu", MCS96_3B|MCS96_2OP|MCS96_FE},
{"mulu", MCS96_4B|MCS96_2OP|MCS96_FE},
{"mulu", MCS96_3B|MCS96_2OP|MCS96_FE},
{"mulu", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x6f
{"andb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"andb", MCS96_3B|MCS96_2OP},
{"andb", MCS96_3B|MCS96_2OP},
{"andb", MCS96_4B_OR_5B|MCS96_2OP}, //again i don't trust the data-sheet here
{"addb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"addb", MCS96_3B|MCS96_2OP},
{"addb", MCS96_3B|MCS96_2OP},
{"addb", MCS96_4B_OR_5B|MCS96_2OP},
{"subb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"subb", MCS96_3B|MCS96_2OP},
{"subb", MCS96_3B|MCS96_2OP},
{"subb", MCS96_4B_OR_5B|MCS96_2OP},
{"mulub", MCS96_3B|MCS96_2OP|MCS96_FE|MCS96_REG_8},
{"mulub", MCS96_3B|MCS96_2OP|MCS96_FE},
{"mulub", MCS96_3B|MCS96_2OP|MCS96_FE},
{"mulub", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x7f
{"or", MCS96_3B|MCS96_2OP},
{"or", MCS96_4B|MCS96_2OP},
{"or", MCS96_3B|MCS96_2OP},
{"or", MCS96_4B_OR_5B|MCS96_2OP},
{"xor", MCS96_3B|MCS96_2OP},
{"xor", MCS96_4B|MCS96_2OP},
{"xor", MCS96_3B|MCS96_2OP},
{"xor", MCS96_4B_OR_5B|MCS96_2OP},
{"cmp", MCS96_3B|MCS96_2OP},
{"cmp", MCS96_4B|MCS96_2OP},
{"cmp", MCS96_3B|MCS96_2OP},
{"cmp", MCS96_4B_OR_5B|MCS96_2OP},
{"divu", MCS96_3B|MCS96_2OP|MCS96_FE},
{"divu", MCS96_4B|MCS96_2OP|MCS96_FE},
{"divu", MCS96_3B|MCS96_2OP|MCS96_FE},
{"divu", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x8f
{"orb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"orb", MCS96_3B|MCS96_2OP},
{"orb", MCS96_3B|MCS96_2OP},
{"orb", MCS96_4B_OR_5B|MCS96_2OP},
{"xorb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"xorb", MCS96_3B|MCS96_2OP},
{"xorb", MCS96_3B|MCS96_2OP},
{"xorb", MCS96_4B_OR_5B|MCS96_2OP},
{"cmpb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"cmpb", MCS96_3B|MCS96_2OP},
{"cmpb", MCS96_3B|MCS96_2OP},
{"cmpb", MCS96_4B_OR_5B|MCS96_2OP},
{"divub", MCS96_3B|MCS96_2OP|MCS96_FE|MCS96_REG_8},
{"divub", MCS96_3B|MCS96_2OP|MCS96_FE},
{"divub", MCS96_3B|MCS96_2OP|MCS96_FE},
{"divub", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x9f
{"ld", MCS96_3B|MCS96_2OP},
{"ld", MCS96_4B|MCS96_2OP},
{"ld", MCS96_3B|MCS96_2OP},
{"ld", MCS96_4B_OR_5B|MCS96_2OP},
{"addc", MCS96_3B|MCS96_2OP},
{"addc", MCS96_4B|MCS96_2OP},
{"addc", MCS96_3B|MCS96_2OP},
{"addc", MCS96_4B_OR_5B|MCS96_2OP},
{"subc", MCS96_3B|MCS96_2OP},
{"subc", MCS96_4B|MCS96_2OP},
{"subc", MCS96_3B|MCS96_2OP},
{"subc", MCS96_4B_OR_5B|MCS96_2OP},
{"lbsze", MCS96_3B|MCS96_2OP},
{"lbsze", MCS96_3B|MCS96_2OP},
{"lbsze", MCS96_3B|MCS96_2OP},
{"lbsze", MCS96_4B_OR_5B|MCS96_2OP}, //0xaf
{"ldb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"ldb", MCS96_3B|MCS96_2OP},
{"ldb", MCS96_3B|MCS96_2OP},
{"ldb", MCS96_4B_OR_5B|MCS96_2OP},
{"addcb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"addcb", MCS96_3B|MCS96_2OP},
{"addcb", MCS96_3B|MCS96_2OP},
{"addcb", MCS96_4B_OR_5B|MCS96_2OP},
{"subcb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"subcb", MCS96_3B|MCS96_2OP},
{"subcb", MCS96_3B|MCS96_2OP},
{"subcb", MCS96_4B_OR_5B|MCS96_2OP},
{"ldbse", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{"ldbse", MCS96_3B|MCS96_2OP},
{"ldbse", MCS96_3B|MCS96_2OP},
{"ldbse", MCS96_4B_OR_5B|MCS96_2OP}, //0xbf
{"st", MCS96_3B|MCS96_2OP},
{"invalid", MCS96_1B},
{"st", MCS96_3B|MCS96_2OP},
{"st", MCS96_4B_OR_5B|MCS96_2OP},
{"stb", MCS96_3B|MCS96_2OP},
{"invalid", MCS96_1B},
{"stb", MCS96_3B|MCS96_2OP},
{"stb", MCS96_4B_OR_5B|MCS96_2OP},
{"push", MCS96_2B},
{"push", MCS96_3B},
{"push", MCS96_2B},
{"push", MCS96_3B_OR_4B},
{"pop", MCS96_2B},
{"invalid", MCS96_1B},
{"pop", MCS96_2B},
{"pop", MCS96_3B_OR_4B}, //0xcf
{"jnst", MCS96_2B},
{"jnh", MCS96_2B},
{"jgt", MCS96_2B},
{"jnc", MCS96_2B},
{"jnvt", MCS96_2B},
{"jnv", MCS96_2B},
{"jge", MCS96_2B},
{"jne", MCS96_2B},
{"jst", MCS96_2B},
{"jh", MCS96_2B},
{"jle", MCS96_2B},
{"jc", MCS96_2B},
{"jvt", MCS96_2B},
{"jv", MCS96_2B},
{"jlt", MCS96_2B},
{"je", MCS96_2B}, //0xdf
{"djnz", MCS96_3B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"br", MCS96_2B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"ljmp", MCS96_3B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"lcall", MCS96_3B}, //0xef
{"ret", MCS96_1B},
{"invalid", MCS96_1B},
{"pushf", MCS96_1B},
{"popf", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"invalid", MCS96_1B},
{"trap", MCS96_1B},
{"clrc", MCS96_1B},
{"setc", MCS96_1B},
{"di", MCS96_1B},
{"ei", MCS96_1B},
{"clrvt", MCS96_1B},
{"nop", MCS96_1B},
{"invalid", MCS96_1B},
{"rst", MCS96_1B}
{ "addb", MCS96_4B|MCS96_3OP},
{ "addb", MCS96_4B|MCS96_3OP},
{ "addb", MCS96_4B|MCS96_3OP},
{ "addb", MCS96_5B_OR_6B|MCS96_3OP},
{ "subb", MCS96_4B|MCS96_3OP},
{ "subb", MCS96_4B|MCS96_3OP},
{ "subb", MCS96_4B|MCS96_3OP},
{ "subb", MCS96_5B_OR_6B|MCS96_3OP},
{ "mulub", MCS96_4B|MCS96_3OP|MCS96_FE},
{ "mulub", MCS96_4B|MCS96_3OP|MCS96_FE},
{ "mulub", MCS96_4B|MCS96_3OP|MCS96_FE},
{ "mulub", MCS96_5B_OR_6B|MCS96_3OP|MCS96_FE}, //0x5f
{ "and", MCS96_3B|MCS96_2OP},
{ "and", MCS96_4B|MCS96_2OP},
{ "and", MCS96_3B|MCS96_2OP},
{ "and", MCS96_4B_OR_5B|MCS96_2OP},
{ "add", MCS96_3B|MCS96_2OP},
{ "add", MCS96_4B|MCS96_2OP},
{ "add", MCS96_3B|MCS96_2OP},
{ "add", MCS96_4B_OR_5B|MCS96_2OP},
{ "sub", MCS96_3B|MCS96_2OP},
{ "sub", MCS96_4B|MCS96_2OP},
{ "sub", MCS96_3B|MCS96_2OP},
{ "sub", MCS96_4B_OR_5B|MCS96_2OP},
{ "mulu", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "mulu", MCS96_4B|MCS96_2OP|MCS96_FE},
{ "mulu", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "mulu", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x6f
{ "andb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "andb", MCS96_3B|MCS96_2OP},
{ "andb", MCS96_3B|MCS96_2OP},
{ "andb", MCS96_4B_OR_5B|MCS96_2OP}, //again i don't trust the data-sheet here
{ "addb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "addb", MCS96_3B|MCS96_2OP},
{ "addb", MCS96_3B|MCS96_2OP},
{ "addb", MCS96_4B_OR_5B|MCS96_2OP},
{ "subb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "subb", MCS96_3B|MCS96_2OP},
{ "subb", MCS96_3B|MCS96_2OP},
{ "subb", MCS96_4B_OR_5B|MCS96_2OP},
{ "mulub", MCS96_3B|MCS96_2OP|MCS96_FE|MCS96_REG_8},
{ "mulub", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "mulub", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "mulub", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x7f
{ "or", MCS96_3B|MCS96_2OP},
{ "or", MCS96_4B|MCS96_2OP},
{ "or", MCS96_3B|MCS96_2OP},
{ "or", MCS96_4B_OR_5B|MCS96_2OP},
{ "xor", MCS96_3B|MCS96_2OP},
{ "xor", MCS96_4B|MCS96_2OP},
{ "xor", MCS96_3B|MCS96_2OP},
{ "xor", MCS96_4B_OR_5B|MCS96_2OP},
{ "cmp", MCS96_3B|MCS96_2OP},
{ "cmp", MCS96_4B|MCS96_2OP},
{ "cmp", MCS96_3B|MCS96_2OP},
{ "cmp", MCS96_4B_OR_5B|MCS96_2OP},
{ "divu", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "divu", MCS96_4B|MCS96_2OP|MCS96_FE},
{ "divu", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "divu", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x8f
{ "orb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "orb", MCS96_3B|MCS96_2OP},
{ "orb", MCS96_3B|MCS96_2OP},
{ "orb", MCS96_4B_OR_5B|MCS96_2OP},
{ "xorb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "xorb", MCS96_3B|MCS96_2OP},
{ "xorb", MCS96_3B|MCS96_2OP},
{ "xorb", MCS96_4B_OR_5B|MCS96_2OP},
{ "cmpb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "cmpb", MCS96_3B|MCS96_2OP},
{ "cmpb", MCS96_3B|MCS96_2OP},
{ "cmpb", MCS96_4B_OR_5B|MCS96_2OP},
{ "divub", MCS96_3B|MCS96_2OP|MCS96_FE|MCS96_REG_8},
{ "divub", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "divub", MCS96_3B|MCS96_2OP|MCS96_FE},
{ "divub", MCS96_4B_OR_5B|MCS96_2OP|MCS96_FE}, //0x9f
{ "ld", MCS96_3B|MCS96_2OP},
{ "ld", MCS96_4B|MCS96_2OP},
{ "ld", MCS96_3B|MCS96_2OP},
{ "ld", MCS96_4B_OR_5B|MCS96_2OP},
{ "addc", MCS96_3B|MCS96_2OP},
{ "addc", MCS96_4B|MCS96_2OP},
{ "addc", MCS96_3B|MCS96_2OP},
{ "addc", MCS96_4B_OR_5B|MCS96_2OP},
{ "subc", MCS96_3B|MCS96_2OP},
{ "subc", MCS96_4B|MCS96_2OP},
{ "subc", MCS96_3B|MCS96_2OP},
{ "subc", MCS96_4B_OR_5B|MCS96_2OP},
{ "lbsze", MCS96_3B|MCS96_2OP},
{ "lbsze", MCS96_3B|MCS96_2OP},
{ "lbsze", MCS96_3B|MCS96_2OP},
{ "lbsze", MCS96_4B_OR_5B|MCS96_2OP}, //0xaf
{ "ldb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "ldb", MCS96_3B|MCS96_2OP},
{ "ldb", MCS96_3B|MCS96_2OP},
{ "ldb", MCS96_4B_OR_5B|MCS96_2OP},
{ "addcb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "addcb", MCS96_3B|MCS96_2OP},
{ "addcb", MCS96_3B|MCS96_2OP},
{ "addcb", MCS96_4B_OR_5B|MCS96_2OP},
{ "subcb", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "subcb", MCS96_3B|MCS96_2OP},
{ "subcb", MCS96_3B|MCS96_2OP},
{ "subcb", MCS96_4B_OR_5B|MCS96_2OP},
{ "ldbse", MCS96_3B|MCS96_2OP|MCS96_REG_8},
{ "ldbse", MCS96_3B|MCS96_2OP},
{ "ldbse", MCS96_3B|MCS96_2OP},
{ "ldbse", MCS96_4B_OR_5B|MCS96_2OP}, //0xbf
{ "st", MCS96_3B|MCS96_2OP},
{ "invalid", MCS96_1B},
{ "st", MCS96_3B|MCS96_2OP},
{ "st", MCS96_4B_OR_5B|MCS96_2OP},
{ "stb", MCS96_3B|MCS96_2OP},
{ "invalid", MCS96_1B},
{ "stb", MCS96_3B|MCS96_2OP},
{ "stb", MCS96_4B_OR_5B|MCS96_2OP},
{ "push", MCS96_2B},
{ "push", MCS96_3B},
{ "push", MCS96_2B},
{ "push", MCS96_3B_OR_4B},
{ "pop", MCS96_2B},
{ "invalid", MCS96_1B},
{ "pop", MCS96_2B},
{ "pop", MCS96_3B_OR_4B}, //0xcf
{ "jnst", MCS96_2B},
{ "jnh", MCS96_2B},
{ "jgt", MCS96_2B},
{ "jnc", MCS96_2B},
{ "jnvt", MCS96_2B},
{ "jnv", MCS96_2B},
{ "jge", MCS96_2B},
{ "jne", MCS96_2B},
{ "jst", MCS96_2B},
{ "jh", MCS96_2B},
{ "jle", MCS96_2B},
{ "jc", MCS96_2B},
{ "jvt", MCS96_2B},
{ "jv", MCS96_2B},
{ "jlt", MCS96_2B},
{ "je", MCS96_2B}, //0xdf
{ "djnz", MCS96_3B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "br", MCS96_2B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "ljmp", MCS96_3B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "lcall", MCS96_3B}, //0xef
{ "ret", MCS96_1B},
{ "invalid", MCS96_1B},
{ "pushf", MCS96_1B},
{ "popf", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "invalid", MCS96_1B},
{ "trap", MCS96_1B},
{ "clrc", MCS96_1B},
{ "setc", MCS96_1B},
{ "di", MCS96_1B},
{ "ei", MCS96_1B},
{ "clrvt", MCS96_1B},
{ "nop", MCS96_1B},
{ "invalid", MCS96_1B},
{ "rst", MCS96_1B}
};
static const char * const mcs96_fe_op[] = { "mul", "mulb", "mul", "mulb", "div", "divb", "invalid", "invalid" };

View File

@ -30,262 +30,262 @@ static int snes_op_get_size(int M_flag, int X_flag, snes_op_t* op) {
}
static snes_op_t snes_op[]={
{"brk 0x%02x", SNES_OP_16BIT},
{"ora (0x%02x,x)", SNES_OP_16BIT},
{"cop 0x%02x", SNES_OP_16BIT},
{"ora 0x%02x,s", SNES_OP_16BIT},
{"tsb 0x%02x", SNES_OP_16BIT},
{"ora 0x%02x", SNES_OP_16BIT},
{"asl 0x%02x", SNES_OP_16BIT},
{"ora [0x%02x]", SNES_OP_16BIT},
{"php", SNES_OP_8BIT},
{"ora", SNES_OP_IMM_M},
{"asl a", SNES_OP_8BIT},
{"phd", SNES_OP_8BIT},
{"tsb 0x%04x", SNES_OP_24BIT},
{"ora 0x%04x", SNES_OP_24BIT},
{"asl 0x%04x", SNES_OP_24BIT},
{"ora 0x%06x", SNES_OP_32BIT},
{"bpl 0x%06x", SNES_OP_16BIT},
{"ora (0x%02x),y", SNES_OP_16BIT},
{"ora (0x%02x)", SNES_OP_16BIT},
{"ora (0x%02x,s),y", SNES_OP_16BIT},
{"trb 0x%02x", SNES_OP_16BIT},
{"ora 0x%02x,x", SNES_OP_16BIT},
{"asl 0x%02x,x", SNES_OP_16BIT},
{"ora [0x%02x],y", SNES_OP_16BIT},
{"clc", SNES_OP_8BIT},
{"ora 0x%04x,y", SNES_OP_24BIT},
{"inc a", SNES_OP_8BIT},
{"tas", SNES_OP_8BIT},
{"trb 0x%04x", SNES_OP_24BIT},
{"ora 0x%04x,x", SNES_OP_24BIT},
{"asl 0x%04x,x", SNES_OP_24BIT},
{"ora 0x%06x,x", SNES_OP_32BIT},
{"jsr 0x%04x", SNES_OP_24BIT},
{"and (0x%02x,x)", SNES_OP_16BIT},
{"jsr 0x%06x", SNES_OP_32BIT},
{"and 0x%02x,s", SNES_OP_16BIT},
{"bit 0x%02x", SNES_OP_16BIT},
{"and 0x%02x", SNES_OP_16BIT},
{"rol 0x%02x", SNES_OP_16BIT},
{"and [0x%02x]", SNES_OP_16BIT},
{"plp", SNES_OP_8BIT},
{"and", SNES_OP_IMM_M},
{"rol a", SNES_OP_8BIT},
{"pld", SNES_OP_8BIT},
{"bit 0x%04x", SNES_OP_24BIT},
{"and 0x%04x", SNES_OP_24BIT},
{"rol 0x%04x", SNES_OP_24BIT},
{"and 0x%06x", SNES_OP_32BIT},
{"bmi 0x%06x", SNES_OP_16BIT},
{"and (0x%02x),y", SNES_OP_16BIT},
{"and (0x%02x)", SNES_OP_16BIT},
{"and (0x%02x,s),y", SNES_OP_16BIT},
{"bit 0x%02x,x", SNES_OP_16BIT},
{"and 0x%02x,x", SNES_OP_16BIT},
{"rol 0x%02x,x", SNES_OP_16BIT},
{"and [0x%02x],y", SNES_OP_16BIT},
{"sec", SNES_OP_8BIT},
{"and 0x%04x,y", SNES_OP_24BIT},
{"dec a", SNES_OP_8BIT},
{"tsa", SNES_OP_8BIT},
{"bit 0x%04x,x", SNES_OP_24BIT},
{"and 0x%04x,x", SNES_OP_24BIT},
{"rol 0x%04x,x", SNES_OP_24BIT},
{"and 0x%06x,x", SNES_OP_32BIT},
{"rti", SNES_OP_8BIT},
{"eor (0x%02x,x)", SNES_OP_16BIT},
{"wdm 0x%02X", SNES_OP_16BIT},
{"eor 0x%02x,s", SNES_OP_16BIT},
{"mvp 0x%02x,0x%02x", SNES_OP_24BIT},
{"eor 0x%02x", SNES_OP_16BIT},
{"lsr 0x%02x", SNES_OP_16BIT},
{"eor [0x%02x]", SNES_OP_16BIT},
{"pha", SNES_OP_8BIT},
{"eor", SNES_OP_IMM_M},
{"lsr a", SNES_OP_8BIT},
{"phk", SNES_OP_8BIT},
{"jmp 0x%04x", SNES_OP_24BIT},
{"eor 0x%04x", SNES_OP_24BIT},
{"lsr 0x%04x", SNES_OP_24BIT},
{"eor 0x%06x", SNES_OP_32BIT},
{"bvc 0x%06x", SNES_OP_16BIT},
{"eor (0x%02x),y", SNES_OP_16BIT},
{"eor (0x%02x)", SNES_OP_16BIT},
{"eor (0x%02x,s),y", SNES_OP_16BIT},
{"mvn 0x%02x,0x%02x", SNES_OP_16BIT},
{"eor 0x%02x,x", SNES_OP_16BIT},
{"lsr 0x%02x,x", SNES_OP_16BIT},
{"eor [0x%02x],y", SNES_OP_16BIT},
{"cli", SNES_OP_8BIT},
{"eor 0x%04x,y", SNES_OP_24BIT},
{"phy", SNES_OP_8BIT},
{"tad", SNES_OP_8BIT},
{"jmp 0x%06x", SNES_OP_32BIT},
{"eor 0x%04x,x", SNES_OP_24BIT},
{"lsr 0x%04x,x", SNES_OP_24BIT},
{"eor 0x%06x,x", SNES_OP_32BIT},
{"rts", SNES_OP_8BIT},
{"adc (0x%02x,x)", SNES_OP_16BIT},
{"per 0x%04x", SNES_OP_24BIT},
{"adc 0x%02x,s", SNES_OP_16BIT},
{"stz 0x%02x", SNES_OP_16BIT},
{"adc 0x%02x", SNES_OP_16BIT},
{"ror 0x%02x", SNES_OP_16BIT},
{"adc [0x%02x]", SNES_OP_16BIT},
{"pla", SNES_OP_8BIT},
{"adc", SNES_OP_IMM_M},
{"ror a", SNES_OP_8BIT},
{"rtl", SNES_OP_8BIT},
{"jmp (0x%04x)", SNES_OP_24BIT},
{"adc 0x%04x", SNES_OP_24BIT},
{"ror 0x%04x", SNES_OP_24BIT},
{"adc 0x%06x", SNES_OP_32BIT},
{"bvs 0x%06x", SNES_OP_16BIT},
{"adc (0x%02x),y", SNES_OP_16BIT},
{"adc (0x%02x)", SNES_OP_16BIT},
{"adc (0x%02x,s),y", SNES_OP_16BIT},
{"stz 0x%02x,x", SNES_OP_16BIT},
{"adc 0x%02x,x", SNES_OP_16BIT},
{"ror 0x%02x,x", SNES_OP_16BIT},
{"adc [0x%02x],y", SNES_OP_16BIT},
{"sei", SNES_OP_8BIT},
{"adc 0x%04x,y", SNES_OP_24BIT},
{"ply", SNES_OP_8BIT},
{"tda", SNES_OP_8BIT},
{"jmp (0x%04x,x)", SNES_OP_24BIT},
{"adc 0x%04x,x", SNES_OP_24BIT},
{"ror 0x%04x,x", SNES_OP_24BIT},
{"adc 0x%06x,x", SNES_OP_32BIT},
{"bra 0x%06x", SNES_OP_16BIT},
{"sta (0x%02x,x)", SNES_OP_16BIT},
{"brl 0x%06x", SNES_OP_24BIT},
{"sta 0x%02x,s", SNES_OP_16BIT},
{"sty 0x%02x", SNES_OP_16BIT},
{"sta 0x%02x", SNES_OP_16BIT},
{"stx 0x%02x", SNES_OP_16BIT},
{"sta [0x%02x]", SNES_OP_16BIT},
{"dey", SNES_OP_8BIT},
{"bit", SNES_OP_IMM_M},
{"txa", SNES_OP_8BIT},
{"phb", SNES_OP_8BIT},
{"sty 0x%04x", SNES_OP_24BIT},
{"sta 0x%04x", SNES_OP_24BIT},
{"stx 0x%04x", SNES_OP_24BIT},
{"sta 0x%06x", SNES_OP_32BIT},
{"bcc 0x%06x", SNES_OP_16BIT},
{"sta (0x%02x),y", SNES_OP_16BIT},
{"sta (0x%02x)", SNES_OP_16BIT},
{"sta (0x%02x,s),y", SNES_OP_16BIT},
{"sty 0x%02x,x", SNES_OP_16BIT},
{"sta 0x%02x,x", SNES_OP_16BIT},
{"stx 0x%02x,y", SNES_OP_16BIT},
{"sta [0x%02x],y", SNES_OP_16BIT},
{"tya", SNES_OP_8BIT},
{"sta 0x%04x,y", SNES_OP_24BIT},
{"txs", SNES_OP_8BIT},
{"txy", SNES_OP_8BIT},
{"stz 0x%04x", SNES_OP_24BIT},
{"sta 0x%04x,x", SNES_OP_24BIT},
{"stz 0x%04x,x", SNES_OP_24BIT},
{"sta 0x%06x,x", SNES_OP_32BIT},
{"ldy", SNES_OP_IMM_X},
{"lda (0x%02x,x)", SNES_OP_16BIT},
{"ldx", SNES_OP_IMM_X},
{"lda 0x%02x,s", SNES_OP_16BIT},
{"ldy 0x%02x", SNES_OP_16BIT},
{"lda 0x%02x", SNES_OP_16BIT},
{"ldx 0x%02x", SNES_OP_16BIT},
{"lda [0x%02x]", SNES_OP_16BIT},
{"tay", SNES_OP_8BIT},
{"lda", SNES_OP_IMM_M},
{"tax", SNES_OP_8BIT},
{"plb", SNES_OP_8BIT},
{"ldy 0x%04x", SNES_OP_24BIT},
{"lda 0x%04x", SNES_OP_24BIT},
{"ldx 0x%04x", SNES_OP_24BIT},
{"lda 0x%06x", SNES_OP_32BIT},
{"bcs 0x%06x", SNES_OP_16BIT},
{"lda (0x%02x),y", SNES_OP_16BIT},
{"lda (0x%02x)", SNES_OP_16BIT},
{"lda (0x%02x,s),y", SNES_OP_16BIT},
{"ldy 0x%02x,x", SNES_OP_16BIT},
{"lda 0x%02x,x", SNES_OP_16BIT},
{"ldx 0x%02x,y", SNES_OP_16BIT},
{"lda [0x%02x],y", SNES_OP_16BIT},
{"clv", SNES_OP_8BIT},
{"lda 0x%04x,y", SNES_OP_24BIT},
{"tsx", SNES_OP_8BIT},
{"tyx", SNES_OP_8BIT},
{"ldy 0x%04x,x", SNES_OP_24BIT},
{"lda 0x%04x,x", SNES_OP_24BIT},
{"ldx 0x%04x,y", SNES_OP_24BIT},
{"lda 0x%06x,x", SNES_OP_32BIT},
{"cpy", SNES_OP_IMM_X},
{"cmp (0x%02x,x)", SNES_OP_16BIT},
{"rep #0x%02x", SNES_OP_16BIT},
{"cmp 0x%02x,s", SNES_OP_16BIT},
{"cpy 0x%02x", SNES_OP_16BIT},
{"cmp 0x%02x", SNES_OP_16BIT},
{"dec 0x%02x", SNES_OP_16BIT},
{"cmp [0x%02x]", SNES_OP_16BIT},
{"iny", SNES_OP_8BIT},
{"cmp", SNES_OP_IMM_M},
{"dex", SNES_OP_8BIT},
{"wai", SNES_OP_8BIT},
{"cpy 0x%04x", SNES_OP_24BIT},
{"cmp 0x%04x", SNES_OP_24BIT},
{"dec 0x%04x", SNES_OP_24BIT},
{"cmp 0x%06x", SNES_OP_32BIT},
{"bne 0x%06x", SNES_OP_16BIT},
{"cmp (0x%02x),y", SNES_OP_16BIT},
{"cmp (0x%02x)", SNES_OP_16BIT},
{"cmp (0x%02x,s),y", SNES_OP_16BIT},
{"pei (0x%02x)", SNES_OP_16BIT},
{"cmp 0x%02x,x", SNES_OP_16BIT},
{"dec 0x%02x,x", SNES_OP_16BIT},
{"cmp [0x%02x],y", SNES_OP_16BIT},
{"cld", SNES_OP_8BIT},
{"cmp 0x%04x,y", SNES_OP_24BIT},
{"phx", SNES_OP_8BIT},
{"stp", SNES_OP_8BIT},
{"jmp [0x%04x]", SNES_OP_24BIT},
{"cmp 0x%04x,x", SNES_OP_24BIT},
{"dec 0x%04x,x", SNES_OP_24BIT},
{"cmp 0x%06x,x", SNES_OP_32BIT},
{"cpx", SNES_OP_IMM_X},
{"sbc (0x%02x,x)", SNES_OP_16BIT},
{"sep #0x%02x", SNES_OP_16BIT},
{"sbc 0x%02x,s", SNES_OP_16BIT},
{"cpx 0x%02x", SNES_OP_16BIT},
{"sbc 0x%02x", SNES_OP_16BIT},
{"inc 0x%02x", SNES_OP_16BIT},
{"sbc [0x%02x]", SNES_OP_16BIT},
{"inx", SNES_OP_8BIT},
{"sbc", SNES_OP_IMM_M},
{"nop", SNES_OP_8BIT},
{"swa", SNES_OP_8BIT},
{"cpx 0x%04x", SNES_OP_24BIT},
{"sbc 0x%04x", SNES_OP_24BIT},
{"inc 0x%04x", SNES_OP_24BIT},
{"sbc 0x%06x", SNES_OP_32BIT},
{"beq 0x%06x", SNES_OP_16BIT},
{"sbc (0x%02x),y", SNES_OP_16BIT},
{"sbc (0x%02x)", SNES_OP_16BIT},
{"sbc (0x%02x,s),y", SNES_OP_16BIT},
{"pea 0x%04x", SNES_OP_24BIT},
{"sbc 0x%02x,x", SNES_OP_16BIT},
{"inc 0x%02x,x", SNES_OP_16BIT},
{"sbc [0x%02x],y", SNES_OP_16BIT},
{"sed", SNES_OP_8BIT},
{"sbc 0x%04x,y", SNES_OP_24BIT},
{"plx", SNES_OP_8BIT},
{"xce", SNES_OP_8BIT},
{"jsr (0x%04x,x)", SNES_OP_24BIT},
{"sbc 0x%04x,x", SNES_OP_24BIT},
{"inc 0x%04x,x", SNES_OP_24BIT},
{"sbc 0x%06x,x", SNES_OP_32BIT}
{ "brk 0x%02x", SNES_OP_16BIT},
{ "ora (0x%02x,x)", SNES_OP_16BIT},
{ "cop 0x%02x", SNES_OP_16BIT},
{ "ora 0x%02x,s", SNES_OP_16BIT},
{ "tsb 0x%02x", SNES_OP_16BIT},
{ "ora 0x%02x", SNES_OP_16BIT},
{ "asl 0x%02x", SNES_OP_16BIT},
{ "ora [0x%02x]", SNES_OP_16BIT},
{ "php", SNES_OP_8BIT},
{ "ora", SNES_OP_IMM_M},
{ "asl a", SNES_OP_8BIT},
{ "phd", SNES_OP_8BIT},
{ "tsb 0x%04x", SNES_OP_24BIT},
{ "ora 0x%04x", SNES_OP_24BIT},
{ "asl 0x%04x", SNES_OP_24BIT},
{ "ora 0x%06x", SNES_OP_32BIT},
{ "bpl 0x%06x", SNES_OP_16BIT},
{ "ora (0x%02x),y", SNES_OP_16BIT},
{ "ora (0x%02x)", SNES_OP_16BIT},
{ "ora (0x%02x,s),y", SNES_OP_16BIT},
{ "trb 0x%02x", SNES_OP_16BIT},
{ "ora 0x%02x,x", SNES_OP_16BIT},
{ "asl 0x%02x,x", SNES_OP_16BIT},
{ "ora [0x%02x],y", SNES_OP_16BIT},
{ "clc", SNES_OP_8BIT},
{ "ora 0x%04x,y", SNES_OP_24BIT},
{ "inc a", SNES_OP_8BIT},
{ "tas", SNES_OP_8BIT},
{ "trb 0x%04x", SNES_OP_24BIT},
{ "ora 0x%04x,x", SNES_OP_24BIT},
{ "asl 0x%04x,x", SNES_OP_24BIT},
{ "ora 0x%06x,x", SNES_OP_32BIT},
{ "jsr 0x%04x", SNES_OP_24BIT},
{ "and (0x%02x,x)", SNES_OP_16BIT},
{ "jsr 0x%06x", SNES_OP_32BIT},
{ "and 0x%02x,s", SNES_OP_16BIT},
{ "bit 0x%02x", SNES_OP_16BIT},
{ "and 0x%02x", SNES_OP_16BIT},
{ "rol 0x%02x", SNES_OP_16BIT},
{ "and [0x%02x]", SNES_OP_16BIT},
{ "plp", SNES_OP_8BIT},
{ "and", SNES_OP_IMM_M},
{ "rol a", SNES_OP_8BIT},
{ "pld", SNES_OP_8BIT},
{ "bit 0x%04x", SNES_OP_24BIT},
{ "and 0x%04x", SNES_OP_24BIT},
{ "rol 0x%04x", SNES_OP_24BIT},
{ "and 0x%06x", SNES_OP_32BIT},
{ "bmi 0x%06x", SNES_OP_16BIT},
{ "and (0x%02x),y", SNES_OP_16BIT},
{ "and (0x%02x)", SNES_OP_16BIT},
{ "and (0x%02x,s),y", SNES_OP_16BIT},
{ "bit 0x%02x,x", SNES_OP_16BIT},
{ "and 0x%02x,x", SNES_OP_16BIT},
{ "rol 0x%02x,x", SNES_OP_16BIT},
{ "and [0x%02x],y", SNES_OP_16BIT},
{ "sec", SNES_OP_8BIT},
{ "and 0x%04x,y", SNES_OP_24BIT},
{ "dec a", SNES_OP_8BIT},
{ "tsa", SNES_OP_8BIT},
{ "bit 0x%04x,x", SNES_OP_24BIT},
{ "and 0x%04x,x", SNES_OP_24BIT},
{ "rol 0x%04x,x", SNES_OP_24BIT},
{ "and 0x%06x,x", SNES_OP_32BIT},
{ "rti", SNES_OP_8BIT},
{ "eor (0x%02x,x)", SNES_OP_16BIT},
{ "wdm 0x%02X", SNES_OP_16BIT},
{ "eor 0x%02x,s", SNES_OP_16BIT},
{ "mvp 0x%02x,0x%02x", SNES_OP_24BIT},
{ "eor 0x%02x", SNES_OP_16BIT},
{ "lsr 0x%02x", SNES_OP_16BIT},
{ "eor [0x%02x]", SNES_OP_16BIT},
{ "pha", SNES_OP_8BIT},
{ "eor", SNES_OP_IMM_M},
{ "lsr a", SNES_OP_8BIT},
{ "phk", SNES_OP_8BIT},
{ "jmp 0x%04x", SNES_OP_24BIT},
{ "eor 0x%04x", SNES_OP_24BIT},
{ "lsr 0x%04x", SNES_OP_24BIT},
{ "eor 0x%06x", SNES_OP_32BIT},
{ "bvc 0x%06x", SNES_OP_16BIT},
{ "eor (0x%02x),y", SNES_OP_16BIT},
{ "eor (0x%02x)", SNES_OP_16BIT},
{ "eor (0x%02x,s),y", SNES_OP_16BIT},
{ "mvn 0x%02x,0x%02x", SNES_OP_16BIT},
{ "eor 0x%02x,x", SNES_OP_16BIT},
{ "lsr 0x%02x,x", SNES_OP_16BIT},
{ "eor [0x%02x],y", SNES_OP_16BIT},
{ "cli", SNES_OP_8BIT},
{ "eor 0x%04x,y", SNES_OP_24BIT},
{ "phy", SNES_OP_8BIT},
{ "tad", SNES_OP_8BIT},
{ "jmp 0x%06x", SNES_OP_32BIT},
{ "eor 0x%04x,x", SNES_OP_24BIT},
{ "lsr 0x%04x,x", SNES_OP_24BIT},
{ "eor 0x%06x,x", SNES_OP_32BIT},
{ "rts", SNES_OP_8BIT},
{ "adc (0x%02x,x)", SNES_OP_16BIT},
{ "per 0x%04x", SNES_OP_24BIT},
{ "adc 0x%02x,s", SNES_OP_16BIT},
{ "stz 0x%02x", SNES_OP_16BIT},
{ "adc 0x%02x", SNES_OP_16BIT},
{ "ror 0x%02x", SNES_OP_16BIT},
{ "adc [0x%02x]", SNES_OP_16BIT},
{ "pla", SNES_OP_8BIT},
{ "adc", SNES_OP_IMM_M},
{ "ror a", SNES_OP_8BIT},
{ "rtl", SNES_OP_8BIT},
{ "jmp (0x%04x)", SNES_OP_24BIT},
{ "adc 0x%04x", SNES_OP_24BIT},
{ "ror 0x%04x", SNES_OP_24BIT},
{ "adc 0x%06x", SNES_OP_32BIT},
{ "bvs 0x%06x", SNES_OP_16BIT},
{ "adc (0x%02x),y", SNES_OP_16BIT},
{ "adc (0x%02x)", SNES_OP_16BIT},
{ "adc (0x%02x,s),y", SNES_OP_16BIT},
{ "stz 0x%02x,x", SNES_OP_16BIT},
{ "adc 0x%02x,x", SNES_OP_16BIT},
{ "ror 0x%02x,x", SNES_OP_16BIT},
{ "adc [0x%02x],y", SNES_OP_16BIT},
{ "sei", SNES_OP_8BIT},
{ "adc 0x%04x,y", SNES_OP_24BIT},
{ "ply", SNES_OP_8BIT},
{ "tda", SNES_OP_8BIT},
{ "jmp (0x%04x,x)", SNES_OP_24BIT},
{ "adc 0x%04x,x", SNES_OP_24BIT},
{ "ror 0x%04x,x", SNES_OP_24BIT},
{ "adc 0x%06x,x", SNES_OP_32BIT},
{ "bra 0x%06x", SNES_OP_16BIT},
{ "sta (0x%02x,x)", SNES_OP_16BIT},
{ "brl 0x%06x", SNES_OP_24BIT},
{ "sta 0x%02x,s", SNES_OP_16BIT},
{ "sty 0x%02x", SNES_OP_16BIT},
{ "sta 0x%02x", SNES_OP_16BIT},
{ "stx 0x%02x", SNES_OP_16BIT},
{ "sta [0x%02x]", SNES_OP_16BIT},
{ "dey", SNES_OP_8BIT},
{ "bit", SNES_OP_IMM_M},
{ "txa", SNES_OP_8BIT},
{ "phb", SNES_OP_8BIT},
{ "sty 0x%04x", SNES_OP_24BIT},
{ "sta 0x%04x", SNES_OP_24BIT},
{ "stx 0x%04x", SNES_OP_24BIT},
{ "sta 0x%06x", SNES_OP_32BIT},
{ "bcc 0x%06x", SNES_OP_16BIT},
{ "sta (0x%02x),y", SNES_OP_16BIT},
{ "sta (0x%02x)", SNES_OP_16BIT},
{ "sta (0x%02x,s),y", SNES_OP_16BIT},
{ "sty 0x%02x,x", SNES_OP_16BIT},
{ "sta 0x%02x,x", SNES_OP_16BIT},
{ "stx 0x%02x,y", SNES_OP_16BIT},
{ "sta [0x%02x],y", SNES_OP_16BIT},
{ "tya", SNES_OP_8BIT},
{ "sta 0x%04x,y", SNES_OP_24BIT},
{ "txs", SNES_OP_8BIT},
{ "txy", SNES_OP_8BIT},
{ "stz 0x%04x", SNES_OP_24BIT},
{ "sta 0x%04x,x", SNES_OP_24BIT},
{ "stz 0x%04x,x", SNES_OP_24BIT},
{ "sta 0x%06x,x", SNES_OP_32BIT},
{ "ldy", SNES_OP_IMM_X},
{ "lda (0x%02x,x)", SNES_OP_16BIT},
{ "ldx", SNES_OP_IMM_X},
{ "lda 0x%02x,s", SNES_OP_16BIT},
{ "ldy 0x%02x", SNES_OP_16BIT},
{ "lda 0x%02x", SNES_OP_16BIT},
{ "ldx 0x%02x", SNES_OP_16BIT},
{ "lda [0x%02x]", SNES_OP_16BIT},
{ "tay", SNES_OP_8BIT},
{ "lda", SNES_OP_IMM_M},
{ "tax", SNES_OP_8BIT},
{ "plb", SNES_OP_8BIT},
{ "ldy 0x%04x", SNES_OP_24BIT},
{ "lda 0x%04x", SNES_OP_24BIT},
{ "ldx 0x%04x", SNES_OP_24BIT},
{ "lda 0x%06x", SNES_OP_32BIT},
{ "bcs 0x%06x", SNES_OP_16BIT},
{ "lda (0x%02x),y", SNES_OP_16BIT},
{ "lda (0x%02x)", SNES_OP_16BIT},
{ "lda (0x%02x,s),y", SNES_OP_16BIT},
{ "ldy 0x%02x,x", SNES_OP_16BIT},
{ "lda 0x%02x,x", SNES_OP_16BIT},
{ "ldx 0x%02x,y", SNES_OP_16BIT},
{ "lda [0x%02x],y", SNES_OP_16BIT},
{ "clv", SNES_OP_8BIT},
{ "lda 0x%04x,y", SNES_OP_24BIT},
{ "tsx", SNES_OP_8BIT},
{ "tyx", SNES_OP_8BIT},
{ "ldy 0x%04x,x", SNES_OP_24BIT},
{ "lda 0x%04x,x", SNES_OP_24BIT},
{ "ldx 0x%04x,y", SNES_OP_24BIT},
{ "lda 0x%06x,x", SNES_OP_32BIT},
{ "cpy", SNES_OP_IMM_X},
{ "cmp (0x%02x,x)", SNES_OP_16BIT},
{ "rep #0x%02x", SNES_OP_16BIT},
{ "cmp 0x%02x,s", SNES_OP_16BIT},
{ "cpy 0x%02x", SNES_OP_16BIT},
{ "cmp 0x%02x", SNES_OP_16BIT},
{ "dec 0x%02x", SNES_OP_16BIT},
{ "cmp [0x%02x]", SNES_OP_16BIT},
{ "iny", SNES_OP_8BIT},
{ "cmp", SNES_OP_IMM_M},
{ "dex", SNES_OP_8BIT},
{ "wai", SNES_OP_8BIT},
{ "cpy 0x%04x", SNES_OP_24BIT},
{ "cmp 0x%04x", SNES_OP_24BIT},
{ "dec 0x%04x", SNES_OP_24BIT},
{ "cmp 0x%06x", SNES_OP_32BIT},
{ "bne 0x%06x", SNES_OP_16BIT},
{ "cmp (0x%02x),y", SNES_OP_16BIT},
{ "cmp (0x%02x)", SNES_OP_16BIT},
{ "cmp (0x%02x,s),y", SNES_OP_16BIT},
{ "pei (0x%02x)", SNES_OP_16BIT},
{ "cmp 0x%02x,x", SNES_OP_16BIT},
{ "dec 0x%02x,x", SNES_OP_16BIT},
{ "cmp [0x%02x],y", SNES_OP_16BIT},
{ "cld", SNES_OP_8BIT},
{ "cmp 0x%04x,y", SNES_OP_24BIT},
{ "phx", SNES_OP_8BIT},
{ "stp", SNES_OP_8BIT},
{ "jmp [0x%04x]", SNES_OP_24BIT},
{ "cmp 0x%04x,x", SNES_OP_24BIT},
{ "dec 0x%04x,x", SNES_OP_24BIT},
{ "cmp 0x%06x,x", SNES_OP_32BIT},
{ "cpx", SNES_OP_IMM_X},
{ "sbc (0x%02x,x)", SNES_OP_16BIT},
{ "sep #0x%02x", SNES_OP_16BIT},
{ "sbc 0x%02x,s", SNES_OP_16BIT},
{ "cpx 0x%02x", SNES_OP_16BIT},
{ "sbc 0x%02x", SNES_OP_16BIT},
{ "inc 0x%02x", SNES_OP_16BIT},
{ "sbc [0x%02x]", SNES_OP_16BIT},
{ "inx", SNES_OP_8BIT},
{ "sbc", SNES_OP_IMM_M},
{ "nop", SNES_OP_8BIT},
{ "swa", SNES_OP_8BIT},
{ "cpx 0x%04x", SNES_OP_24BIT},
{ "sbc 0x%04x", SNES_OP_24BIT},
{ "inc 0x%04x", SNES_OP_24BIT},
{ "sbc 0x%06x", SNES_OP_32BIT},
{ "beq 0x%06x", SNES_OP_16BIT},
{ "sbc (0x%02x),y", SNES_OP_16BIT},
{ "sbc (0x%02x)", SNES_OP_16BIT},
{ "sbc (0x%02x,s),y", SNES_OP_16BIT},
{ "pea 0x%04x", SNES_OP_24BIT},
{ "sbc 0x%02x,x", SNES_OP_16BIT},
{ "inc 0x%02x,x", SNES_OP_16BIT},
{ "sbc [0x%02x],y", SNES_OP_16BIT},
{ "sed", SNES_OP_8BIT},
{ "sbc 0x%04x,y", SNES_OP_24BIT},
{ "plx", SNES_OP_8BIT},
{ "xce", SNES_OP_8BIT},
{ "jsr (0x%04x,x)", SNES_OP_24BIT},
{ "sbc 0x%04x,x", SNES_OP_24BIT},
{ "inc 0x%04x,x", SNES_OP_24BIT},
{ "sbc 0x%06x,x", SNES_OP_32BIT}
};
#endif

View File

@ -709,14 +709,14 @@ const struct v850_operand v850_operands[] = {
const struct v850_opcode v850_opcodes[] = {
/* Standard instructions. */
{ "add", OP (0x0e), OP_MASK, IF1, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_ADD, "#0,#1,+="},
{ "add", OP (0x0e), OP_MASK, IF1, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_ADD, "#0,#1,+=" },
{ "add", OP (0x12), OP_MASK, IF2, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_ADD, "#0,#1,+=" },
{ "addi", OP (0x30), OP_MASK, IF6, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_ADD, "#0,#1,+,#2,=" },
{ "adf", two (0x07e0, 0x03a0), two (0x07e0, 0x07e1), {CCCC_NOTSA, R1, R2, R3}, 0, V850_CPU_E2_UP },
{ "and", OP (0x0a), OP_MASK, IF1, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_AND, "#0,#1,&,#1,=,0,o,:=,$s,s,:=,$z,z,:=" },
{ "andi", OP (0x36), OP_MASK, IF6U, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_AND, "#0,#1,&,#1,=,0,o,:=,$s,s,:=,$z,z,:=" },
/* Signed integer. */
{ "bge", BOP (0xe), BOP_MASK, IF3, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CJMP, "s,o,^,!,?{,#0,PC,:=,}"},
{ "bge", BOP (0xe), BOP_MASK, IF3, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CJMP, "s,o,^,!,?{,#0,PC,:=,}" },
{ "bgt", BOP (0xf), BOP_MASK, IF3, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CJMP },
{ "ble", BOP (0x7), BOP_MASK, IF3, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CJMP },
{ "blt", BOP (0x6), BOP_MASK, IF3, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CJMP, "s,o,^,?{,#0,PC,:=,}" },
@ -827,7 +827,7 @@ const struct v850_opcode v850_opcodes[] = {
{ "dispose", two (0x0640, 0x0000), two (0xffc0, 0x001f), {IMM5, LIST12}, 0, V850_CPU_NON0, R_ANAL_OP_TYPE_POP, "DISPOSE,#1" },
{ "div", two (0x07e0, 0x02c0), two (0x07e0, 0x07ff), {R1, R2, R3}, 0, V850_CPU_NON0, R_ANAL_OP_TYPE_DIV, "#2,#1,/,#2,=,#2,#1,%,#3,=" },
{ "divh", two (0x07e0, 0x0280), two (0x07e0, 0x07ff), {R1, R2, R3}, 0, V850_CPU_NON0 , R_ANAL_OP_TYPE_DIV, ""},
{ "divh", two (0x07e0, 0x0280), two (0x07e0, 0x07ff), {R1, R2, R3}, 0, V850_CPU_NON0 , R_ANAL_OP_TYPE_DIV, "" },
{ "divh", OP (0x02), OP_MASK, {R1_NOTR0, R2_NOTR0}, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_DIV, "" },
{ "divhn", two (0x07e0, 0x0280), two (0x07e0, 0x07c3), {I5DIV1, R1, R2, R3}, 0, V850_CPU_NON0 | V850_CPU_OPTION_EXTENSION, R_ANAL_OP_TYPE_DIV, "" },
{ "divhu", two (0x07e0, 0x0282), two (0x07e0, 0x07ff), {R1, R2, R3}, 0, V850_CPU_NON0, R_ANAL_OP_TYPE_DIV, "" },
@ -852,9 +852,9 @@ const struct v850_opcode v850_opcodes[] = {
{ "hvcall", two (0xd7e0, 0x4160), two (0xffe0, 0x41ff), {VECTOR8}, 0, V850_CPU_E3V5_UP },
{ "hvtrap", two (0x07e0, 0x0110), two (0xffe0, 0xffff), {VECTOR5}, 0, V850_CPU_E3V5_UP },
{ "jarl", two (0xc7e0, 0x0160), two (0xffe0, 0x07ff), {R1, R3_NOTR0}, 1, V850_CPU_E3V5_UP, R_ANAL_OP_TYPE_CALL, "PC,#1,=,#0,PC,="}, // TODO: Incorrect? PC+4, PC+6 not impl here?
{ "jarl", two (0x0780, 0x0000), two (0x07c0, 0x0001), {D22, R2_NOTR0}, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CALL, "PC,#1,=,#0,PC,="},
{ "jarl", one (0x02e0), one (0xffe0), {D32_31_PCREL, R1_NOTR0}, 0, V850_CPU_E2_UP, R_ANAL_OP_TYPE_CALL, "PC,lp,=,#0,PC,="},
{ "jarl", two (0xc7e0, 0x0160), two (0xffe0, 0x07ff), {R1, R3_NOTR0}, 1, V850_CPU_E3V5_UP, R_ANAL_OP_TYPE_CALL, "PC,#1,=,#0,PC,=" }, // TODO: Incorrect? PC+4, PC+6 not impl here?
{ "jarl", two (0x0780, 0x0000), two (0x07c0, 0x0001), {D22, R2_NOTR0}, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_CALL, "PC,#1,=,#0,PC,=" },
{ "jarl", one (0x02e0), one (0xffe0), {D32_31_PCREL, R1_NOTR0}, 0, V850_CPU_E2_UP, R_ANAL_OP_TYPE_CALL, "PC,lp,=,#0,PC,=" },
/* Gas local alias (not defined in spec). */
{ "jarlr", two (0xc7e0, 0x0160), two (0xffe0, 0x07ff), {R1, R3_NOTR0}, 1, V850_CPU_E3V5_UP | V850_CPU_OPTION_ALIAS, R_ANAL_OP_TYPE_RCALL},
/* Gas local alias of jarl imm22 (not defined in spec). */
@ -1016,7 +1016,7 @@ const struct v850_opcode v850_opcodes[] = {
{ "sld.w", one (0x0500), one (0x0781), {D8_6U, EP, R2}, 2, V850_CPU_ALL, R_ANAL_OP_TYPE_LOAD },
{ "snooze", two (0x0fe0, 0x0120), two (0xffff, 0xffff), {0}, 0, V850_CPU_E3V5_UP },
{ "sst.b", one (0x0380), one (0x0780), {R2, D7U, EP}, 3, V850_CPU_ALL, R_ANAL_OP_TYPE_STORE, "#0,[1],ep,=[1]"},
{ "sst.b", one (0x0380), one (0x0780), {R2, D7U, EP}, 3, V850_CPU_ALL, R_ANAL_OP_TYPE_STORE, "#0,[1],ep,=[1]" },
{ "sst.h", one (0x0480), one (0x0780), {R2, D8_7U, EP}, 3, V850_CPU_ALL, R_ANAL_OP_TYPE_STORE, "#0,[2],ep,=[2]" },
{ "sst.w", one (0x0501), one (0x0781), {R2, D8_6U, EP}, 3, V850_CPU_ALL, R_ANAL_OP_TYPE_STORE, "#0,[4],ep,=[4]" },
{ "stacch", two (0x07e0, 0x0bca), two (0x07ff, 0xffff), {R2}, 0, V850_CPU_E2_UP | V850_CPU_OPTION_EXTENSION },
@ -1043,7 +1043,7 @@ const struct v850_opcode v850_opcodes[] = {
{ "sttc.pc", two (0x07e0, 0xf852), two (0x07e0, 0xffff), {R2}, 0, V850_CPU_E3V5_UP, R_ANAL_OP_TYPE_STORE },
{ "stvc.sr", two (0x07e0, 0x0054), two (0x07e0, 0x07ff), {SR1, R2, SELID}, 0, V850_CPU_E3V5_UP, R_ANAL_OP_TYPE_STORE },
{ "stvc.sr", two (0x07e0, 0x0054), two (0x07e0, 0x07ff), {SR1, R2}, 0, V850_CPU_E3V5_UP, R_ANAL_OP_TYPE_STORE },
{ "sub", OP (0x0d), OP_MASK, IF1, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_SUB, "#0,#1,-,="},
{ "sub", OP (0x0d), OP_MASK, IF1, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_SUB, "#0,#1,-,=" },
{ "subr", OP (0x0c), OP_MASK, IF1, 0, V850_CPU_ALL, R_ANAL_OP_TYPE_SUB, "#1,#0,-,=" },
{ "switch", one (0x0040), one (0xffe0), {R1_NOTR0}, 0, V850_CPU_NON0, R_ANAL_OP_TYPE_RJMP },
{ "sxb", one (0x00a0), one (0xffe0), {R1}, 0, V850_CPU_NON0 },
@ -1058,7 +1058,7 @@ const struct v850_opcode v850_opcodes[] = {
{ "tst1", two (0xc7c0, 0x0000), two (0xc7e0, 0x0000), {B3, D16, R1}, 3, V850_CPU_ALL, R_ANAL_OP_TYPE_CMP },
{ "tst1", two (0x07e0, 0x00e6), two (0x07e0, 0xffff), {R2, R1}, 3, V850_CPU_NON0, R_ANAL_OP_TYPE_CMP },
{ "xor", OP (0x09), OP_MASK, IF1, 0, V850_CPU_ALL , R_ANAL_OP_TYPE_XOR, "#0,#1,^,#1,=" },
{ "xori", OP (0x35), OP_MASK, IF6U, 0, V850_CPU_ALL , R_ANAL_OP_TYPE_XOR, "#0,#1,^,#2,="},
{ "xori", OP (0x35), OP_MASK, IF6U, 0, V850_CPU_ALL , R_ANAL_OP_TYPE_XOR, "#0,#1,^,#2,=" },
{ "zxb", one (0x0080), one (0xffe0), {R1}, 0, V850_CPU_NON0, R_ANAL_OP_TYPE_MOV },
{ "zxh", one (0x00c0), one (0xffe0), {R1}, 0, V850_CPU_NON0, R_ANAL_OP_TYPE_MOV },

View File

@ -43,340 +43,340 @@ struct vot /* vax opcode text */
static const struct vot
votstrs[] =
{
{ "halt", {"", 0x00 } },
{ "nop", {"", 0x01 } },
{ "rei", {"", 0x02 } },
{ "bpt", {"", 0x03 } },
{ "ret", {"", 0x04 } },
{ "rsb", {"", 0x05 } },
{ "ldpctx", {"", 0x06 } },
{ "svpctx", {"", 0x07 } },
{ "cvtps", {"rwabrwab", 0x08 } },
{ "cvtsp", {"rwabrwab", 0x09 } },
{ "index", {"rlrlrlrlrlwl", 0x0a } },
{ "crc", {"abrlrwab", 0x0b } },
{ "prober", {"rbrwab", 0x0c } },
{ "probew", {"rbrwab", 0x0d } },
{ "insque", {"abab", 0x0e } },
{ "remque", {"abwl", 0x0f } },
{ "bsbb", {"bb", 0x10 } },
{ "brb", {"bb", 0x11 } },
{ "bneq", {"bb", 0x12 } },
{ "bnequ", {"bb", 0x12 } },
{ "beql", {"bb", 0x13 } },
{ "beqlu", {"bb", 0x13 } },
{ "bgtr", {"bb", 0x14 } },
{ "bleq", {"bb", 0x15 } },
{ "jsb", {"ab", 0x16 } },
{ "jmp", {"ab", 0x17 } },
{ "bgeq", {"bb", 0x18 } },
{ "blss", {"bb", 0x19 } },
{ "bgtru", {"bb", 0x1a } },
{ "blequ", {"bb", 0x1b } },
{ "bvc", {"bb", 0x1c } },
{ "bvs", {"bb", 0x1d } },
{ "bcc", {"bb", 0x1e } },
{ "bgequ", {"bb", 0x1e } },
{ "blssu", {"bb", 0x1f } },
{ "bcs", {"bb", 0x1f } },
{ "addp4", {"rwabrwab", 0x20 } },
{ "addp6", {"rwabrwabrwab", 0x21 } },
{ "subp4", {"rwabrwab", 0x22 } },
{ "subp6", {"rwabrwabrwab", 0x23 } },
{ "cvtpt", {"rwababrwab", 0x24 } },
{ "mulp", {"rwabrwabrwab", 0x25 } },
{ "cvttp", {"rwababrwab", 0x26 } },
{ "divp", {"rwabrwabrwab", 0x27 } },
{ "movc3", {"rwabab", 0x28 } },
{ "cmpc3", {"rwabab", 0x29 } },
{ "scanc", {"rwababrb", 0x2a } },
{ "spanc", {"rwababrb", 0x2b } },
{ "movc5", {"rwabrbrwab", 0x2c } },
{ "cmpc5", {"rwabrbrwab", 0x2d } },
{ "movtc", {"rwabrbabrwab", 0x2e } },
{ "movtuc", {"rwabrbabrwab", 0x2f } },
{ "bsbw", {"bw", 0x30 } },
{ "brw", {"bw", 0x31 } },
{ "cvtwl", {"rwwl", 0x32 } },
{ "cvtwb", {"rwwb", 0x33 } },
{ "movp", {"rwabab", 0x34 } },
{ "cmpp3", {"rwabab", 0x35 } },
{ "cvtpl", {"rwabwl", 0x36 } },
{ "cmpp4", {"rwabrwab", 0x37 } },
{ "editpc", {"rwababab", 0x38 } },
{ "matchc", {"rwabrwab", 0x39 } },
{ "locc", {"rbrwab", 0x3a } },
{ "skpc", {"rbrwab", 0x3b } },
{ "movzwl", {"rwwl", 0x3c } },
{ "acbw", {"rwrwmwbw", 0x3d } },
{ "movaw", {"awwl", 0x3e } },
{ "pushaw", {"aw", 0x3f } },
{ "addf2", {"rfmf", 0x40 } },
{ "addf3", {"rfrfwf", 0x41 } },
{ "subf2", {"rfmf", 0x42 } },
{ "subf3", {"rfrfwf", 0x43 } },
{ "mulf2", {"rfmf", 0x44 } },
{ "mulf3", {"rfrfwf", 0x45 } },
{ "divf2", {"rfmf", 0x46 } },
{ "divf3", {"rfrfwf", 0x47 } },
{ "cvtfb", {"rfwb", 0x48 } },
{ "cvtfw", {"rfww", 0x49 } },
{ "cvtfl", {"rfwl", 0x4a } },
{ "cvtrfl", {"rfwl", 0x4b } },
{ "cvtbf", {"rbwf", 0x4c } },
{ "cvtwf", {"rwwf", 0x4d } },
{ "cvtlf", {"rlwf", 0x4e } },
{ "acbf", {"rfrfmfbw", 0x4f } },
{ "movf", {"rfwf", 0x50 } },
{ "cmpf", {"rfrf", 0x51 } },
{ "mnegf", {"rfwf", 0x52 } },
{ "tstf", {"rf", 0x53 } },
{ "emodf", {"rfrbrfwlwf", 0x54 } },
{ "polyf", {"rfrwab", 0x55 } },
{ "cvtfd", {"rfwd", 0x56 } },
{ "halt", { "", 0x00 } },
{ "nop", { "", 0x01 } },
{ "rei", { "", 0x02 } },
{ "bpt", { "", 0x03 } },
{ "ret", { "", 0x04 } },
{ "rsb", { "", 0x05 } },
{ "ldpctx", { "", 0x06 } },
{ "svpctx", { "", 0x07 } },
{ "cvtps", { "rwabrwab", 0x08 } },
{ "cvtsp", { "rwabrwab", 0x09 } },
{ "index", { "rlrlrlrlrlwl", 0x0a } },
{ "crc", { "abrlrwab", 0x0b } },
{ "prober", { "rbrwab", 0x0c } },
{ "probew", { "rbrwab", 0x0d } },
{ "insque", { "abab", 0x0e } },
{ "remque", { "abwl", 0x0f } },
{ "bsbb", { "bb", 0x10 } },
{ "brb", { "bb", 0x11 } },
{ "bneq", { "bb", 0x12 } },
{ "bnequ", { "bb", 0x12 } },
{ "beql", { "bb", 0x13 } },
{ "beqlu", { "bb", 0x13 } },
{ "bgtr", { "bb", 0x14 } },
{ "bleq", { "bb", 0x15 } },
{ "jsb", { "ab", 0x16 } },
{ "jmp", { "ab", 0x17 } },
{ "bgeq", { "bb", 0x18 } },
{ "blss", { "bb", 0x19 } },
{ "bgtru", { "bb", 0x1a } },
{ "blequ", { "bb", 0x1b } },
{ "bvc", { "bb", 0x1c } },
{ "bvs", { "bb", 0x1d } },
{ "bcc", { "bb", 0x1e } },
{ "bgequ", { "bb", 0x1e } },
{ "blssu", { "bb", 0x1f } },
{ "bcs", { "bb", 0x1f } },
{ "addp4", { "rwabrwab", 0x20 } },
{ "addp6", { "rwabrwabrwab", 0x21 } },
{ "subp4", { "rwabrwab", 0x22 } },
{ "subp6", { "rwabrwabrwab", 0x23 } },
{ "cvtpt", { "rwababrwab", 0x24 } },
{ "mulp", { "rwabrwabrwab", 0x25 } },
{ "cvttp", { "rwababrwab", 0x26 } },
{ "divp", { "rwabrwabrwab", 0x27 } },
{ "movc3", { "rwabab", 0x28 } },
{ "cmpc3", { "rwabab", 0x29 } },
{ "scanc", { "rwababrb", 0x2a } },
{ "spanc", { "rwababrb", 0x2b } },
{ "movc5", { "rwabrbrwab", 0x2c } },
{ "cmpc5", { "rwabrbrwab", 0x2d } },
{ "movtc", { "rwabrbabrwab", 0x2e } },
{ "movtuc", { "rwabrbabrwab", 0x2f } },
{ "bsbw", { "bw", 0x30 } },
{ "brw", { "bw", 0x31 } },
{ "cvtwl", { "rwwl", 0x32 } },
{ "cvtwb", { "rwwb", 0x33 } },
{ "movp", { "rwabab", 0x34 } },
{ "cmpp3", { "rwabab", 0x35 } },
{ "cvtpl", { "rwabwl", 0x36 } },
{ "cmpp4", { "rwabrwab", 0x37 } },
{ "editpc", { "rwababab", 0x38 } },
{ "matchc", { "rwabrwab", 0x39 } },
{ "locc", { "rbrwab", 0x3a } },
{ "skpc", { "rbrwab", 0x3b } },
{ "movzwl", { "rwwl", 0x3c } },
{ "acbw", { "rwrwmwbw", 0x3d } },
{ "movaw", { "awwl", 0x3e } },
{ "pushaw", { "aw", 0x3f } },
{ "addf2", { "rfmf", 0x40 } },
{ "addf3", { "rfrfwf", 0x41 } },
{ "subf2", { "rfmf", 0x42 } },
{ "subf3", { "rfrfwf", 0x43 } },
{ "mulf2", { "rfmf", 0x44 } },
{ "mulf3", { "rfrfwf", 0x45 } },
{ "divf2", { "rfmf", 0x46 } },
{ "divf3", { "rfrfwf", 0x47 } },
{ "cvtfb", { "rfwb", 0x48 } },
{ "cvtfw", { "rfww", 0x49 } },
{ "cvtfl", { "rfwl", 0x4a } },
{ "cvtrfl", { "rfwl", 0x4b } },
{ "cvtbf", { "rbwf", 0x4c } },
{ "cvtwf", { "rwwf", 0x4d } },
{ "cvtlf", { "rlwf", 0x4e } },
{ "acbf", { "rfrfmfbw", 0x4f } },
{ "movf", { "rfwf", 0x50 } },
{ "cmpf", { "rfrf", 0x51 } },
{ "mnegf", { "rfwf", 0x52 } },
{ "tstf", { "rf", 0x53 } },
{ "emodf", { "rfrbrfwlwf", 0x54 } },
{ "polyf", { "rfrwab", 0x55 } },
{ "cvtfd", { "rfwd", 0x56 } },
/* opcode 57 is not defined yet */
{ "adawi", {"rwmw", 0x58 } },
{ "adawi", { "rwmw", 0x58 } },
/* opcode 59 is not defined yet */
/* opcode 5a is not defined yet */
/* opcode 5b is not defined yet */
{ "insqhi", {"abaq", 0x5c } },
{ "insqti", {"abaq", 0x5d } },
{ "remqhi", {"aqwl", 0x5e } },
{ "remqti", {"aqwl", 0x5f } },
{ "addd2", {"rdmd", 0x60 } },
{ "addd3", {"rdrdwd", 0x61 } },
{ "subd2", {"rdmd", 0x62 } },
{ "subd3", {"rdrdwd", 0x63 } },
{ "muld2", {"rdmd", 0x64 } },
{ "muld3", {"rdrdwd", 0x65 } },
{ "divd2", {"rdmd", 0x66 } },
{ "divd3", {"rdrdwd", 0x67 } },
{ "cvtdb", {"rdwb", 0x68 } },
{ "cvtdw", {"rdww", 0x69 } },
{ "cvtdl", {"rdwl", 0x6a } },
{ "cvtrdl", {"rdwl", 0x6b } },
{ "cvtbd", {"rbwd", 0x6c } },
{ "cvtwd", {"rwwd", 0x6d } },
{ "cvtld", {"rlwd", 0x6e } },
{ "acbd", {"rdrdmdbw", 0x6f } },
{ "movd", {"rdwd", 0x70 } },
{ "cmpd", {"rdrd", 0x71 } },
{ "mnegd", {"rdwd", 0x72 } },
{ "tstd", {"rd", 0x73 } },
{ "emodd", {"rdrbrdwlwd", 0x74 } },
{ "polyd", {"rdrwab", 0x75 } },
{ "cvtdf", {"rdwf", 0x76 } },
{ "insqhi", { "abaq", 0x5c } },
{ "insqti", { "abaq", 0x5d } },
{ "remqhi", { "aqwl", 0x5e } },
{ "remqti", { "aqwl", 0x5f } },
{ "addd2", { "rdmd", 0x60 } },
{ "addd3", { "rdrdwd", 0x61 } },
{ "subd2", { "rdmd", 0x62 } },
{ "subd3", { "rdrdwd", 0x63 } },
{ "muld2", { "rdmd", 0x64 } },
{ "muld3", { "rdrdwd", 0x65 } },
{ "divd2", { "rdmd", 0x66 } },
{ "divd3", { "rdrdwd", 0x67 } },
{ "cvtdb", { "rdwb", 0x68 } },
{ "cvtdw", { "rdww", 0x69 } },
{ "cvtdl", { "rdwl", 0x6a } },
{ "cvtrdl", { "rdwl", 0x6b } },
{ "cvtbd", { "rbwd", 0x6c } },
{ "cvtwd", { "rwwd", 0x6d } },
{ "cvtld", { "rlwd", 0x6e } },
{ "acbd", { "rdrdmdbw", 0x6f } },
{ "movd", { "rdwd", 0x70 } },
{ "cmpd", { "rdrd", 0x71 } },
{ "mnegd", { "rdwd", 0x72 } },
{ "tstd", { "rd", 0x73 } },
{ "emodd", { "rdrbrdwlwd", 0x74 } },
{ "polyd", { "rdrwab", 0x75 } },
{ "cvtdf", { "rdwf", 0x76 } },
/* opcode 77 is not defined yet */
{ "ashl", {"rbrlwl", 0x78 } },
{ "ashq", {"rbrqwq", 0x79 } },
{ "emul", {"rlrlrlwq", 0x7a } },
{ "ediv", {"rlrqwlwl", 0x7b } },
{ "clrd", {"wd", 0x7c } },
{ "clrg", {"wg", 0x7c } },
{ "clrq", {"wd", 0x7c } },
{ "movq", {"rqwq", 0x7d } },
{ "movaq", {"aqwl", 0x7e } },
{ "movad", {"adwl", 0x7e } },
{ "pushaq", {"aq", 0x7f } },
{ "pushad", {"ad", 0x7f } },
{ "addb2", {"rbmb", 0x80 } },
{ "addb3", {"rbrbwb", 0x81 } },
{ "subb2", {"rbmb", 0x82 } },
{ "subb3", {"rbrbwb", 0x83 } },
{ "mulb2", {"rbmb", 0x84 } },
{ "mulb3", {"rbrbwb", 0x85 } },
{ "divb2", {"rbmb", 0x86 } },
{ "divb3", {"rbrbwb", 0x87 } },
{ "bisb2", {"rbmb", 0x88 } },
{ "bisb3", {"rbrbwb", 0x89 } },
{ "bicb2", {"rbmb", 0x8a } },
{ "bicb3", {"rbrbwb", 0x8b } },
{ "xorb2", {"rbmb", 0x8c } },
{ "xorb3", {"rbrbwb", 0x8d } },
{ "mnegb", {"rbwb", 0x8e } },
{ "caseb", {"rbrbrb", 0x8f } },
{ "movb", {"rbwb", 0x90 } },
{ "cmpb", {"rbrb", 0x91 } },
{ "mcomb", {"rbwb", 0x92 } },
{ "bitb", {"rbrb", 0x93 } },
{ "clrb", {"wb", 0x94 } },
{ "tstb", {"rb", 0x95 } },
{ "incb", {"mb", 0x96 } },
{ "decb", {"mb", 0x97 } },
{ "cvtbl", {"rbwl", 0x98 } },
{ "cvtbw", {"rbww", 0x99 } },
{ "movzbl", {"rbwl", 0x9a } },
{ "movzbw", {"rbww", 0x9b } },
{ "rotl", {"rbrlwl", 0x9c } },
{ "acbb", {"rbrbmbbw", 0x9d } },
{ "movab", {"abwl", 0x9e } },
{ "pushab", {"ab", 0x9f } },
{ "addw2", {"rwmw", 0xa0 } },
{ "addw3", {"rwrwww", 0xa1 } },
{ "subw2", {"rwmw", 0xa2 } },
{ "subw3", {"rwrwww", 0xa3 } },
{ "mulw2", {"rwmw", 0xa4 } },
{ "mulw3", {"rwrwww", 0xa5 } },
{ "divw2", {"rwmw", 0xa6 } },
{ "divw3", {"rwrwww", 0xa7 } },
{ "bisw2", {"rwmw", 0xa8 } },
{ "bisw3", {"rwrwww", 0xa9 } },
{ "bicw2", {"rwmw", 0xaa } },
{ "bicw3", {"rwrwww", 0xab } },
{ "xorw2", {"rwmw", 0xac } },
{ "xorw3", {"rwrwww", 0xad } },
{ "mnegw", {"rwww", 0xae } },
{ "casew", {"rwrwrw", 0xaf } },
{ "movw", {"rwww", 0xb0 } },
{ "cmpw", {"rwrw", 0xb1 } },
{ "mcomw", {"rwww", 0xb2 } },
{ "bitw", {"rwrw", 0xb3 } },
{ "clrw", {"ww", 0xb4 } },
{ "tstw", {"rw", 0xb5 } },
{ "incw", {"mw", 0xb6 } },
{ "decw", {"mw", 0xb7 } },
{ "bispsw", {"rw", 0xb8 } },
{ "bicpsw", {"rw", 0xb9 } },
{ "popr", {"rw", 0xba } },
{ "pushr", {"rw", 0xbb } },
{ "chmk", {"rw", 0xbc } },
{ "chme", {"rw", 0xbd } },
{ "chms", {"rw", 0xbe } },
{ "chmu", {"rw", 0xbf } },
{ "addl2", {"rlml", 0xc0 } },
{ "addl3", {"rlrlwl", 0xc1 } },
{ "subl2", {"rlml", 0xc2 } },
{ "subl3", {"rlrlwl", 0xc3 } },
{ "mull2", {"rlml", 0xc4 } },
{ "mull3", {"rlrlwl", 0xc5 } },
{ "divl2", {"rlml", 0xc6 } },
{ "divl3", {"rlrlwl", 0xc7 } },
{ "bisl2", {"rlml", 0xc8 } },
{ "bisl3", {"rlrlwl", 0xc9 } },
{ "bicl2", {"rlml", 0xca } },
{ "bicl3", {"rlrlwl", 0xcb } },
{ "xorl2", {"rlml", 0xcc } },
{ "xorl3", {"rlrlwl", 0xcd } },
{ "mnegl", {"rlwl", 0xce } },
{ "casel", {"rlrlrl", 0xcf } },
{ "movl", {"rlwl", 0xd0 } },
{ "cmpl", {"rlrl", 0xd1 } },
{ "mcoml", {"rlwl", 0xd2 } },
{ "bitl", {"rlrl", 0xd3 } },
{ "clrf", {"wf", 0xd4 } },
{ "clrl", {"wl", 0xd4 } },
{ "tstl", {"rl", 0xd5 } },
{ "incl", {"ml", 0xd6 } },
{ "decl", {"ml", 0xd7 } },
{ "adwc", {"rlml", 0xd8 } },
{ "sbwc", {"rlml", 0xd9 } },
{ "mtpr", {"rlrl", 0xda } },
{ "mfpr", {"rlwl", 0xdb } },
{ "movpsl", {"wl", 0xdc } },
{ "pushl", {"rl", 0xdd } },
{ "moval", {"alwl", 0xde } },
{ "movaf", {"afwl", 0xde } },
{ "pushal", {"al", 0xdf } },
{ "pushaf", {"af", 0xdf } },
{ "bbs", {"rlvbbb", 0xe0 } },
{ "bbc", {"rlvbbb", 0xe1 } },
{ "bbss", {"rlvbbb", 0xe2 } },
{ "bbcs", {"rlvbbb", 0xe3 } },
{ "bbsc", {"rlvbbb", 0xe4 } },
{ "bbcc", {"rlvbbb", 0xe5 } },
{ "bbssi", {"rlvbbb", 0xe6 } },
{ "bbcci", {"rlvbbb", 0xe7 } },
{ "blbs", {"rlbb", 0xe8 } },
{ "blbc", {"rlbb", 0xe9 } },
{ "ffs", {"rlrbvbwl", 0xea } },
{ "ffc", {"rlrbvbwl", 0xeb } },
{ "cmpv", {"rlrbvbrl", 0xec } },
{ "cmpzv", {"rlrbvbrl", 0xed } },
{ "extv", {"rlrbvbwl", 0xee } },
{ "extzv", {"rlrbvbwl", 0xef } },
{ "insv", {"rlrlrbvb", 0xf0 } },
{ "acbl", {"rlrlmlbw", 0xf1 } },
{ "aoblss", {"rlmlbb", 0xf2 } },
{ "aobleq", {"rlmlbb", 0xf3 } },
{ "sobgeq", {"mlbb", 0xf4 } },
{ "sobgtr", {"mlbb", 0xf5 } },
{ "cvtlb", {"rlwb", 0xf6 } },
{ "cvtlw", {"rlww", 0xf7 } },
{ "ashp", {"rbrwabrbrwab", 0xf8 } },
{ "cvtlp", {"rlrwab", 0xf9 } },
{ "callg", {"abab", 0xfa } },
{ "calls", {"rlab", 0xfb } },
{ "xfc", {"", 0xfc } },
{ "ashl", { "rbrlwl", 0x78 } },
{ "ashq", { "rbrqwq", 0x79 } },
{ "emul", { "rlrlrlwq", 0x7a } },
{ "ediv", { "rlrqwlwl", 0x7b } },
{ "clrd", { "wd", 0x7c } },
{ "clrg", { "wg", 0x7c } },
{ "clrq", { "wd", 0x7c } },
{ "movq", { "rqwq", 0x7d } },
{ "movaq", { "aqwl", 0x7e } },
{ "movad", { "adwl", 0x7e } },
{ "pushaq", { "aq", 0x7f } },
{ "pushad", { "ad", 0x7f } },
{ "addb2", { "rbmb", 0x80 } },
{ "addb3", { "rbrbwb", 0x81 } },
{ "subb2", { "rbmb", 0x82 } },
{ "subb3", { "rbrbwb", 0x83 } },
{ "mulb2", { "rbmb", 0x84 } },
{ "mulb3", { "rbrbwb", 0x85 } },
{ "divb2", { "rbmb", 0x86 } },
{ "divb3", { "rbrbwb", 0x87 } },
{ "bisb2", { "rbmb", 0x88 } },
{ "bisb3", { "rbrbwb", 0x89 } },
{ "bicb2", { "rbmb", 0x8a } },
{ "bicb3", { "rbrbwb", 0x8b } },
{ "xorb2", { "rbmb", 0x8c } },
{ "xorb3", { "rbrbwb", 0x8d } },
{ "mnegb", { "rbwb", 0x8e } },
{ "caseb", { "rbrbrb", 0x8f } },
{ "movb", { "rbwb", 0x90 } },
{ "cmpb", { "rbrb", 0x91 } },
{ "mcomb", { "rbwb", 0x92 } },
{ "bitb", { "rbrb", 0x93 } },
{ "clrb", { "wb", 0x94 } },
{ "tstb", { "rb", 0x95 } },
{ "incb", { "mb", 0x96 } },
{ "decb", { "mb", 0x97 } },
{ "cvtbl", { "rbwl", 0x98 } },
{ "cvtbw", { "rbww", 0x99 } },
{ "movzbl", { "rbwl", 0x9a } },
{ "movzbw", { "rbww", 0x9b } },
{ "rotl", { "rbrlwl", 0x9c } },
{ "acbb", { "rbrbmbbw", 0x9d } },
{ "movab", { "abwl", 0x9e } },
{ "pushab", { "ab", 0x9f } },
{ "addw2", { "rwmw", 0xa0 } },
{ "addw3", { "rwrwww", 0xa1 } },
{ "subw2", { "rwmw", 0xa2 } },
{ "subw3", { "rwrwww", 0xa3 } },
{ "mulw2", { "rwmw", 0xa4 } },
{ "mulw3", { "rwrwww", 0xa5 } },
{ "divw2", { "rwmw", 0xa6 } },
{ "divw3", { "rwrwww", 0xa7 } },
{ "bisw2", { "rwmw", 0xa8 } },
{ "bisw3", { "rwrwww", 0xa9 } },
{ "bicw2", { "rwmw", 0xaa } },
{ "bicw3", { "rwrwww", 0xab } },
{ "xorw2", { "rwmw", 0xac } },
{ "xorw3", { "rwrwww", 0xad } },
{ "mnegw", { "rwww", 0xae } },
{ "casew", { "rwrwrw", 0xaf } },
{ "movw", { "rwww", 0xb0 } },
{ "cmpw", { "rwrw", 0xb1 } },
{ "mcomw", { "rwww", 0xb2 } },
{ "bitw", { "rwrw", 0xb3 } },
{ "clrw", { "ww", 0xb4 } },
{ "tstw", { "rw", 0xb5 } },
{ "incw", { "mw", 0xb6 } },
{ "decw", { "mw", 0xb7 } },
{ "bispsw", { "rw", 0xb8 } },
{ "bicpsw", { "rw", 0xb9 } },
{ "popr", { "rw", 0xba } },
{ "pushr", { "rw", 0xbb } },
{ "chmk", { "rw", 0xbc } },
{ "chme", { "rw", 0xbd } },
{ "chms", { "rw", 0xbe } },
{ "chmu", { "rw", 0xbf } },
{ "addl2", { "rlml", 0xc0 } },
{ "addl3", { "rlrlwl", 0xc1 } },
{ "subl2", { "rlml", 0xc2 } },
{ "subl3", { "rlrlwl", 0xc3 } },
{ "mull2", { "rlml", 0xc4 } },
{ "mull3", { "rlrlwl", 0xc5 } },
{ "divl2", { "rlml", 0xc6 } },
{ "divl3", { "rlrlwl", 0xc7 } },
{ "bisl2", { "rlml", 0xc8 } },
{ "bisl3", { "rlrlwl", 0xc9 } },
{ "bicl2", { "rlml", 0xca } },
{ "bicl3", { "rlrlwl", 0xcb } },
{ "xorl2", { "rlml", 0xcc } },
{ "xorl3", { "rlrlwl", 0xcd } },
{ "mnegl", { "rlwl", 0xce } },
{ "casel", { "rlrlrl", 0xcf } },
{ "movl", { "rlwl", 0xd0 } },
{ "cmpl", { "rlrl", 0xd1 } },
{ "mcoml", { "rlwl", 0xd2 } },
{ "bitl", { "rlrl", 0xd3 } },
{ "clrf", { "wf", 0xd4 } },
{ "clrl", { "wl", 0xd4 } },
{ "tstl", { "rl", 0xd5 } },
{ "incl", { "ml", 0xd6 } },
{ "decl", { "ml", 0xd7 } },
{ "adwc", { "rlml", 0xd8 } },
{ "sbwc", { "rlml", 0xd9 } },
{ "mtpr", { "rlrl", 0xda } },
{ "mfpr", { "rlwl", 0xdb } },
{ "movpsl", { "wl", 0xdc } },
{ "pushl", { "rl", 0xdd } },
{ "moval", { "alwl", 0xde } },
{ "movaf", { "afwl", 0xde } },
{ "pushal", { "al", 0xdf } },
{ "pushaf", { "af", 0xdf } },
{ "bbs", { "rlvbbb", 0xe0 } },
{ "bbc", { "rlvbbb", 0xe1 } },
{ "bbss", { "rlvbbb", 0xe2 } },
{ "bbcs", { "rlvbbb", 0xe3 } },
{ "bbsc", { "rlvbbb", 0xe4 } },
{ "bbcc", { "rlvbbb", 0xe5 } },
{ "bbssi", { "rlvbbb", 0xe6 } },
{ "bbcci", { "rlvbbb", 0xe7 } },
{ "blbs", { "rlbb", 0xe8 } },
{ "blbc", { "rlbb", 0xe9 } },
{ "ffs", { "rlrbvbwl", 0xea } },
{ "ffc", { "rlrbvbwl", 0xeb } },
{ "cmpv", { "rlrbvbrl", 0xec } },
{ "cmpzv", { "rlrbvbrl", 0xed } },
{ "extv", { "rlrbvbwl", 0xee } },
{ "extzv", { "rlrbvbwl", 0xef } },
{ "insv", { "rlrlrbvb", 0xf0 } },
{ "acbl", { "rlrlmlbw", 0xf1 } },
{ "aoblss", { "rlmlbb", 0xf2 } },
{ "aobleq", { "rlmlbb", 0xf3 } },
{ "sobgeq", { "mlbb", 0xf4 } },
{ "sobgtr", { "mlbb", 0xf5 } },
{ "cvtlb", { "rlwb", 0xf6 } },
{ "cvtlw", { "rlww", 0xf7 } },
{ "ashp", { "rbrwabrbrwab", 0xf8 } },
{ "cvtlp", { "rlrwab", 0xf9 } },
{ "callg", { "abab", 0xfa } },
{ "calls", { "rlab", 0xfb } },
{ "xfc", { "", 0xfc } },
/* undefined opcodes here */
{ "cvtdh", {"rdwh", 0x32fd } },
{ "cvtgf", {"rgwh", 0x33fd } },
{ "addg2", {"rgmg", 0x40fd } },
{ "addg3", {"rgrgwg", 0x41fd } },
{ "subg2", {"rgmg", 0x42fd } },
{ "subg3", {"rgrgwg", 0x43fd } },
{ "mulg2", {"rgmg", 0x44fd } },
{ "mulg3", {"rgrgwg", 0x45fd } },
{ "divg2", {"rgmg", 0x46fd } },
{ "divg3", {"rgrgwg", 0x47fd } },
{ "cvtgb", {"rgwb", 0x48fd } },
{ "cvtgw", {"rgww", 0x49fd } },
{ "cvtgl", {"rgwl", 0x4afd } },
{ "cvtrgl", {"rgwl", 0x4bfd } },
{ "cvtbg", {"rbwg", 0x4cfd } },
{ "cvtwg", {"rwwg", 0x4dfd } },
{ "cvtlg", {"rlwg", 0x4efd } },
{ "acbg", {"rgrgmgbw", 0x4ffd } },
{ "movg", {"rgwg", 0x50fd } },
{ "cmpg", {"rgrg", 0x51fd } },
{ "mnegg", {"rgwg", 0x52fd } },
{ "tstg", {"rg", 0x53fd } },
{ "emodg", {"rgrwrgwlwg", 0x54fd } },
{ "polyg", {"rgrwab", 0x55fd } },
{ "cvtgh", {"rgwh", 0x56fd } },
{ "cvtdh", { "rdwh", 0x32fd } },
{ "cvtgf", { "rgwh", 0x33fd } },
{ "addg2", { "rgmg", 0x40fd } },
{ "addg3", { "rgrgwg", 0x41fd } },
{ "subg2", { "rgmg", 0x42fd } },
{ "subg3", { "rgrgwg", 0x43fd } },
{ "mulg2", { "rgmg", 0x44fd } },
{ "mulg3", { "rgrgwg", 0x45fd } },
{ "divg2", { "rgmg", 0x46fd } },
{ "divg3", { "rgrgwg", 0x47fd } },
{ "cvtgb", { "rgwb", 0x48fd } },
{ "cvtgw", { "rgww", 0x49fd } },
{ "cvtgl", { "rgwl", 0x4afd } },
{ "cvtrgl", { "rgwl", 0x4bfd } },
{ "cvtbg", { "rbwg", 0x4cfd } },
{ "cvtwg", { "rwwg", 0x4dfd } },
{ "cvtlg", { "rlwg", 0x4efd } },
{ "acbg", { "rgrgmgbw", 0x4ffd } },
{ "movg", { "rgwg", 0x50fd } },
{ "cmpg", { "rgrg", 0x51fd } },
{ "mnegg", { "rgwg", 0x52fd } },
{ "tstg", { "rg", 0x53fd } },
{ "emodg", { "rgrwrgwlwg", 0x54fd } },
{ "polyg", { "rgrwab", 0x55fd } },
{ "cvtgh", { "rgwh", 0x56fd } },
/* undefined opcodes here */
{ "addh2", {"rhmh", 0x60fd } },
{ "addh3", {"rhrhwh", 0x61fd } },
{ "subh2", {"rhmh", 0x62fd } },
{ "subh3", {"rhrhwh", 0x63fd } },
{ "mulh2", {"rhmh", 0x64fd } },
{ "mulh3", {"rhrhwh", 0x65fd } },
{ "divh2", {"rhmh", 0x66fd } },
{ "divh3", {"rhrhwh", 0x67fd } },
{ "cvthb", {"rhwb", 0x68fd } },
{ "cvthw", {"rhww", 0x69fd } },
{ "cvthl", {"rhwl", 0x6afd } },
{ "cvtrhl", {"rhwl", 0x6bfd } },
{ "cvtbh", {"rbwh", 0x6cfd } },
{ "cvtwh", {"rwwh", 0x6dfd } },
{ "cvtlh", {"rlwh", 0x6efd } },
{ "acbh", {"rhrhmhbw", 0x6ffd } },
{ "movh", {"rhwh", 0x70fd } },
{ "cmph", {"rhrh", 0x71fd } },
{ "mnegh", {"rhwh", 0x72fd } },
{ "tsth", {"rh", 0x73fd } },
{ "emodh", {"rhrwrhwlwh", 0x74fd } },
{ "polyh", {"rhrwab", 0x75fd } },
{ "cvthg", {"rhwg", 0x76fd } },
{ "addh2", { "rhmh", 0x60fd } },
{ "addh3", { "rhrhwh", 0x61fd } },
{ "subh2", { "rhmh", 0x62fd } },
{ "subh3", { "rhrhwh", 0x63fd } },
{ "mulh2", { "rhmh", 0x64fd } },
{ "mulh3", { "rhrhwh", 0x65fd } },
{ "divh2", { "rhmh", 0x66fd } },
{ "divh3", { "rhrhwh", 0x67fd } },
{ "cvthb", { "rhwb", 0x68fd } },
{ "cvthw", { "rhww", 0x69fd } },
{ "cvthl", { "rhwl", 0x6afd } },
{ "cvtrhl", { "rhwl", 0x6bfd } },
{ "cvtbh", { "rbwh", 0x6cfd } },
{ "cvtwh", { "rwwh", 0x6dfd } },
{ "cvtlh", { "rlwh", 0x6efd } },
{ "acbh", { "rhrhmhbw", 0x6ffd } },
{ "movh", { "rhwh", 0x70fd } },
{ "cmph", { "rhrh", 0x71fd } },
{ "mnegh", { "rhwh", 0x72fd } },
{ "tsth", { "rh", 0x73fd } },
{ "emodh", { "rhrwrhwlwh", 0x74fd } },
{ "polyh", { "rhrwab", 0x75fd } },
{ "cvthg", { "rhwg", 0x76fd } },
/* undefined opcodes here */
{ "clrh", {"wh", 0x7cfd } },
{ "clro", {"wo", 0x7cfd } },
{ "movo", {"rowo", 0x7dfd } },
{ "movah", {"ahwl", 0x7efd } },
{ "movao", {"aowl", 0x7efd } },
{ "pushah", {"ah", 0x7ffd } },
{ "pushao", {"ao", 0x7ffd } },
{ "clrh", { "wh", 0x7cfd } },
{ "clro", { "wo", 0x7cfd } },
{ "movo", { "rowo", 0x7dfd } },
{ "movah", { "ahwl", 0x7efd } },
{ "movao", { "aowl", 0x7efd } },
{ "pushah", { "ah", 0x7ffd } },
{ "pushao", { "ao", 0x7ffd } },
/* undefined opcodes here */
{ "cvtfh", {"rfwh", 0x98fd } },
{ "cvtfg", {"rfwg", 0x99fd } },
{ "cvtfh", { "rfwh", 0x98fd } },
{ "cvtfg", { "rfwg", 0x99fd } },
/* undefined opcodes here */
{ "cvthf", {"rhwf", 0xf6fd } },
{ "cvthd", {"rhwd", 0xf7fd } },
{ "cvthf", { "rhwf", 0xf6fd } },
{ "cvthd", { "rhwd", 0xf7fd } },
/* undefined opcodes here */
{ "bugl", {"rl", 0xfdff } },
{ "bugw", {"rw", 0xfeff } },
{ "bugl", { "rl", 0xfdff } },
{ "bugw", { "rw", 0xfeff } },
/* undefined opcodes here */
{ "", {"", 0} } /* empty is end sentinel */
{ "", { "", 0} } /* empty is end sentinel */
}; /* votstrs */

View File

@ -71,8 +71,8 @@ static WasmOpDef opcodes[256] = {
[WASM_OP_I32GES] = { "i32.ge_s", 1, 1 },
[WASM_OP_I32GEU] = { "i32.ge_u", 1, 1 },
[WASM_OP_I64EQZ] = { "i64.eqz", 1, 1 },
[WASM_OP_I64EQ] = {" i64.eq", 1, 1 },
[WASM_OP_I64NE] = {" i64.ne", 1, 1 },
[WASM_OP_I64EQ] = { " i64.eq", 1, 1 },
[WASM_OP_I64NE] = { " i64.ne", 1, 1 },
[WASM_OP_I64LTS] = { "i64.lt_s", 1, 1 },
[WASM_OP_I64LTU] = { "i64.lt_u", 1, 1 },
[WASM_OP_I64GTS] = { "i64.gt_s", 1, 1 },
@ -142,7 +142,7 @@ static WasmOpDef opcodes[256] = {
[WASM_OP_F32DIV] = { "f32.div", 1, 1 },
[WASM_OP_F32MIN] = { "f32.min", 1, 1 },
[WASM_OP_F32MAX] = { "f32.max", 1, 1 },
[WASM_OP_F32COPYSIGN] = {" f32.copysign", 1, 1 },
[WASM_OP_F32COPYSIGN] = { " f32.copysign", 1, 1 },
[WASM_OP_F64ABS] = { "f64.abs", 1, 1 },
[WASM_OP_F64NEG] = { "f64.neg", 1, 1 },
[WASM_OP_F64CEIL] = { "f64.ceil", 1, 1 },

View File

@ -841,505 +841,505 @@ static const char *fdcb[]={
static const z80_opcode dd[] = { //dd
{"add ix, bc", Z80_OP16 ,NULL},
{"add ix, de", Z80_OP16 ,NULL},
{"ld ix, 0x%04x", Z80_OP16^Z80_ARG16 ,NULL},
{"ld [0x%04x], ix", Z80_OP16^Z80_ARG16 ,NULL},
{"inc ix", Z80_OP16 ,NULL},
{"inc ixh", Z80_OP16 ,NULL},
{"dec ixh", Z80_OP16 ,NULL},
{"ld ixh, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{"add ix, ix", Z80_OP16 ,NULL},
{"ld ix, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{"dec ix", Z80_OP16 ,NULL},
{"inc ixl", Z80_OP16 ,NULL},
{"dec ixl", Z80_OP16 ,NULL},
{"ld ixl, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{"inc [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"dec [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], 0x%02x",Z80_OP16^Z80_ARG8^Z80_ARG16 ,NULL},
{"add ix, sp", Z80_OP16 ,NULL},
{"ld b, ixh", Z80_OP16 ,NULL},
{"ld b, ixl", Z80_OP16 ,NULL},
{"ld b, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld c, ixh", Z80_OP16 ,NULL},
{"ld c, ixl", Z80_OP16 ,NULL},
{"ld c, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld d, ixh", Z80_OP16 ,NULL},
{"ld d, ixl", Z80_OP16 ,NULL},
{"ld d, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld e, ixh", Z80_OP16 ,NULL},
{"ld e, ixl", Z80_OP16 ,NULL},
{"ld e, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld ixh, b", Z80_OP16 ,NULL},
{"ld ixh, c", Z80_OP16 ,NULL},
{"ld ixh, d", Z80_OP16 ,NULL},
{"ld ixh, e", Z80_OP16 ,NULL},
{"ld ixh, ixh", Z80_OP16 ,NULL},
{"ld ixh, ixl", Z80_OP16 ,NULL},
{"ld h, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld ixh, a", Z80_OP16 ,NULL},
{"ld ixl, b", Z80_OP16 ,NULL},
{"ld ixl, c", Z80_OP16 ,NULL},
{"ld ixl, d", Z80_OP16 ,NULL},
{"ld ixl, e", Z80_OP16 ,NULL},
{"ld ixl, ixh", Z80_OP16 ,NULL},
{"ld ixl, ixl", Z80_OP16 ,NULL},
{"ld l, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld ixl, a", Z80_OP16 ,NULL},
{"ld [ix+0x%02x], b", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], c", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], d", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], e", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], h", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], l", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [ix+0x%02x], a", Z80_OP16^Z80_ARG8 ,NULL},
{"ld a, ixh", Z80_OP16 ,NULL},
{"ld a, ixl", Z80_OP16 ,NULL},
{"ld a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"add a, ixh", Z80_OP16 ,NULL},
{"add a, ixl", Z80_OP16 ,NULL},
{"add a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"adc a, ixh", Z80_OP16 ,NULL},
{"adc a, ixl", Z80_OP16 ,NULL},
{"adc a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"sub a, ixh", Z80_OP16 ,NULL},
{"sub a, ixl", Z80_OP16 ,NULL},
{"sub [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"sbc a, ixh", Z80_OP16 ,NULL},
{"sbc a, ixl", Z80_OP16 ,NULL},
{"sbc a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"and ixh", Z80_OP16 ,NULL},
{"and ixl", Z80_OP16 ,NULL},
{"and [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"xor ixh", Z80_OP16 ,NULL},
{"xor ixl", Z80_OP16 ,NULL},
{"xor [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"or ixh", Z80_OP16 ,NULL},
{"or ixl", Z80_OP16 ,NULL},
{"or [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"cp ixh", Z80_OP16 ,NULL},
{"cp ixl", Z80_OP16 ,NULL},
{"cp [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"", Z80_OP24^Z80_ARG8 ,ddcb},
{"pop ix", Z80_OP16 ,NULL},
{"ex [sp], ix", Z80_OP16 ,NULL},
{"push ix", Z80_OP16 ,NULL},
{"jp [ix]", Z80_OP16 ,NULL},
{"ld sp, ix", Z80_OP16 ,NULL},
{"invalid", Z80_OP16 ,NULL}
{ "add ix, bc", Z80_OP16 ,NULL},
{ "add ix, de", Z80_OP16 ,NULL},
{ "ld ix, 0x%04x", Z80_OP16^Z80_ARG16 ,NULL},
{ "ld [0x%04x], ix", Z80_OP16^Z80_ARG16 ,NULL},
{ "inc ix", Z80_OP16 ,NULL},
{ "inc ixh", Z80_OP16 ,NULL},
{ "dec ixh", Z80_OP16 ,NULL},
{ "ld ixh, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{ "add ix, ix", Z80_OP16 ,NULL},
{ "ld ix, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{ "dec ix", Z80_OP16 ,NULL},
{ "inc ixl", Z80_OP16 ,NULL},
{ "dec ixl", Z80_OP16 ,NULL},
{ "ld ixl, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{ "inc [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "dec [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], 0x%02x",Z80_OP16^Z80_ARG8^Z80_ARG16 ,NULL},
{ "add ix, sp", Z80_OP16 ,NULL},
{ "ld b, ixh", Z80_OP16 ,NULL},
{ "ld b, ixl", Z80_OP16 ,NULL},
{ "ld b, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld c, ixh", Z80_OP16 ,NULL},
{ "ld c, ixl", Z80_OP16 ,NULL},
{ "ld c, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld d, ixh", Z80_OP16 ,NULL},
{ "ld d, ixl", Z80_OP16 ,NULL},
{ "ld d, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld e, ixh", Z80_OP16 ,NULL},
{ "ld e, ixl", Z80_OP16 ,NULL},
{ "ld e, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld ixh, b", Z80_OP16 ,NULL},
{ "ld ixh, c", Z80_OP16 ,NULL},
{ "ld ixh, d", Z80_OP16 ,NULL},
{ "ld ixh, e", Z80_OP16 ,NULL},
{ "ld ixh, ixh", Z80_OP16 ,NULL},
{ "ld ixh, ixl", Z80_OP16 ,NULL},
{ "ld h, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld ixh, a", Z80_OP16 ,NULL},
{ "ld ixl, b", Z80_OP16 ,NULL},
{ "ld ixl, c", Z80_OP16 ,NULL},
{ "ld ixl, d", Z80_OP16 ,NULL},
{ "ld ixl, e", Z80_OP16 ,NULL},
{ "ld ixl, ixh", Z80_OP16 ,NULL},
{ "ld ixl, ixl", Z80_OP16 ,NULL},
{ "ld l, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld ixl, a", Z80_OP16 ,NULL},
{ "ld [ix+0x%02x], b", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], c", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], d", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], e", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], h", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], l", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [ix+0x%02x], a", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld a, ixh", Z80_OP16 ,NULL},
{ "ld a, ixl", Z80_OP16 ,NULL},
{ "ld a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "add a, ixh", Z80_OP16 ,NULL},
{ "add a, ixl", Z80_OP16 ,NULL},
{ "add a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "adc a, ixh", Z80_OP16 ,NULL},
{ "adc a, ixl", Z80_OP16 ,NULL},
{ "adc a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "sub a, ixh", Z80_OP16 ,NULL},
{ "sub a, ixl", Z80_OP16 ,NULL},
{ "sub [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "sbc a, ixh", Z80_OP16 ,NULL},
{ "sbc a, ixl", Z80_OP16 ,NULL},
{ "sbc a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "and ixh", Z80_OP16 ,NULL},
{ "and ixl", Z80_OP16 ,NULL},
{ "and [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "xor ixh", Z80_OP16 ,NULL},
{ "xor ixl", Z80_OP16 ,NULL},
{ "xor [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "or ixh", Z80_OP16 ,NULL},
{ "or ixl", Z80_OP16 ,NULL},
{ "or [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "cp ixh", Z80_OP16 ,NULL},
{ "cp ixl", Z80_OP16 ,NULL},
{ "cp [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "", Z80_OP24^Z80_ARG8 ,ddcb},
{ "pop ix", Z80_OP16 ,NULL},
{ "ex [sp], ix", Z80_OP16 ,NULL},
{ "push ix", Z80_OP16 ,NULL},
{ "jp [ix]", Z80_OP16 ,NULL},
{ "ld sp, ix", Z80_OP16 ,NULL},
{ "invalid", Z80_OP16 ,NULL}
};
static const z80_opcode ed[]={ //ed
{"in b, [c]", Z80_OP16 ,NULL},
{"out [c], b", Z80_OP16 ,NULL},
{"sbc hl, bc", Z80_OP16 ,NULL},
{"ld [0x%04x], bc", Z80_OP16^Z80_ARG16 ,NULL},
{"neg", Z80_OP16 ,NULL},
{"retn", Z80_OP16 ,NULL},
{"im 0", Z80_OP16 ,NULL},
{"ld i, a", Z80_OP16 ,NULL},
{"in c, [c]", Z80_OP16 ,NULL},
{"out [c], c", Z80_OP16 ,NULL},
{"adc hl, bc", Z80_OP16 ,NULL},
{"ld bc, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{"reti", Z80_OP16 ,NULL},
{"ld r, a", Z80_OP16 ,NULL},
{"in d, [c]", Z80_OP16 ,NULL},
{"out [c], d", Z80_OP16 ,NULL},
{"sbc hl, de", Z80_OP16 ,NULL},
{"ld [0x%04x], de", Z80_OP16^Z80_ARG16 ,NULL},
{"im 1", Z80_OP16 ,NULL},
{"ld a, i", Z80_OP16 ,NULL},
{"in e, [c]", Z80_OP16 ,NULL},
{"out [c], e", Z80_OP16 ,NULL},
{"adc hl, de", Z80_OP16 ,NULL},
{"ld de, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{"im 2", Z80_OP16 ,NULL},
{"ld a, r", Z80_OP16 ,NULL},
{"in h, [c]", Z80_OP16 ,NULL},
{"out [c], h", Z80_OP16 ,NULL},
{"sbc hl, hl", Z80_OP16 ,NULL},
{"rrd", Z80_OP16 ,NULL},
{"in l, [c]", Z80_OP16 ,NULL},
{"out [c], l", Z80_OP16 ,NULL},
{"adc hl, hl", Z80_OP16 ,NULL},
{"rld", Z80_OP16 ,NULL},
{"in [c]", Z80_OP16 ,NULL},
{"out [c], 0", Z80_OP16 ,NULL},
{"sbc hl, sp", Z80_OP16 ,NULL},
{"ld [0x%04x], sp", Z80_OP16^Z80_ARG16 ,NULL},
{"in a, [c]", Z80_OP16 ,NULL},
{"out [c], a", Z80_OP16 ,NULL},
{"adc hl, sp", Z80_OP16 ,NULL},
{"ld sp, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{"ldi", Z80_OP16 ,NULL},
{"cpi", Z80_OP16 ,NULL},
{"ini", Z80_OP16 ,NULL},
{"outi", Z80_OP16 ,NULL},
{"ldd", Z80_OP16 ,NULL},
{"cpd", Z80_OP16 ,NULL},
{"ind", Z80_OP16 ,NULL},
{"outd", Z80_OP16 ,NULL},
{"ldir", Z80_OP16 ,NULL},
{"cpir", Z80_OP16 ,NULL},
{"inir", Z80_OP16 ,NULL},
{"otir", Z80_OP16 ,NULL},
{"lddr", Z80_OP16 ,NULL},
{"cpdr", Z80_OP16 ,NULL},
{"indr", Z80_OP16 ,NULL},
{"otdr", Z80_OP16 ,NULL},
{"invalid", Z80_OP16 ,NULL},
{"invalid", Z80_OP16 ,NULL}
{ "in b, [c]", Z80_OP16 ,NULL},
{ "out [c], b", Z80_OP16 ,NULL},
{ "sbc hl, bc", Z80_OP16 ,NULL},
{ "ld [0x%04x], bc", Z80_OP16^Z80_ARG16 ,NULL},
{ "neg", Z80_OP16 ,NULL},
{ "retn", Z80_OP16 ,NULL},
{ "im 0", Z80_OP16 ,NULL},
{ "ld i, a", Z80_OP16 ,NULL},
{ "in c, [c]", Z80_OP16 ,NULL},
{ "out [c], c", Z80_OP16 ,NULL},
{ "adc hl, bc", Z80_OP16 ,NULL},
{ "ld bc, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{ "reti", Z80_OP16 ,NULL},
{ "ld r, a", Z80_OP16 ,NULL},
{ "in d, [c]", Z80_OP16 ,NULL},
{ "out [c], d", Z80_OP16 ,NULL},
{ "sbc hl, de", Z80_OP16 ,NULL},
{ "ld [0x%04x], de", Z80_OP16^Z80_ARG16 ,NULL},
{ "im 1", Z80_OP16 ,NULL},
{ "ld a, i", Z80_OP16 ,NULL},
{ "in e, [c]", Z80_OP16 ,NULL},
{ "out [c], e", Z80_OP16 ,NULL},
{ "adc hl, de", Z80_OP16 ,NULL},
{ "ld de, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{ "im 2", Z80_OP16 ,NULL},
{ "ld a, r", Z80_OP16 ,NULL},
{ "in h, [c]", Z80_OP16 ,NULL},
{ "out [c], h", Z80_OP16 ,NULL},
{ "sbc hl, hl", Z80_OP16 ,NULL},
{ "rrd", Z80_OP16 ,NULL},
{ "in l, [c]", Z80_OP16 ,NULL},
{ "out [c], l", Z80_OP16 ,NULL},
{ "adc hl, hl", Z80_OP16 ,NULL},
{ "rld", Z80_OP16 ,NULL},
{ "in [c]", Z80_OP16 ,NULL},
{ "out [c], 0", Z80_OP16 ,NULL},
{ "sbc hl, sp", Z80_OP16 ,NULL},
{ "ld [0x%04x], sp", Z80_OP16^Z80_ARG16 ,NULL},
{ "in a, [c]", Z80_OP16 ,NULL},
{ "out [c], a", Z80_OP16 ,NULL},
{ "adc hl, sp", Z80_OP16 ,NULL},
{ "ld sp, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{ "ldi", Z80_OP16 ,NULL},
{ "cpi", Z80_OP16 ,NULL},
{ "ini", Z80_OP16 ,NULL},
{ "outi", Z80_OP16 ,NULL},
{ "ldd", Z80_OP16 ,NULL},
{ "cpd", Z80_OP16 ,NULL},
{ "ind", Z80_OP16 ,NULL},
{ "outd", Z80_OP16 ,NULL},
{ "ldir", Z80_OP16 ,NULL},
{ "cpir", Z80_OP16 ,NULL},
{ "inir", Z80_OP16 ,NULL},
{ "otir", Z80_OP16 ,NULL},
{ "lddr", Z80_OP16 ,NULL},
{ "cpdr", Z80_OP16 ,NULL},
{ "indr", Z80_OP16 ,NULL},
{ "otdr", Z80_OP16 ,NULL},
{ "invalid", Z80_OP16 ,NULL},
{ "invalid", Z80_OP16 ,NULL}
};
static const z80_opcode fd[]={ //fd
{"add iy, bc", Z80_OP16 ,NULL},
{"add iy, de", Z80_OP16 ,NULL},
{"ld iy, 0x%04x", Z80_OP16^Z80_ARG16 ,NULL},
{"ld [0x%04x], iy", Z80_OP16^Z80_ARG16 ,NULL},
{"inc iy", Z80_OP16 ,NULL},
{"inc iyh", Z80_OP16 ,NULL},
{"dec iyh", Z80_OP16 ,NULL},
{"ld iyh, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{"add iy, iy", Z80_OP16 ,NULL},
{"ld iy, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{"dec iy", Z80_OP16 ,NULL},
{"inc iyl", Z80_OP16 ,NULL},
{"dec iyl", Z80_OP16 ,NULL},
{"ld iyl, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{"inc [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"dec [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], 0x%02x",Z80_OP16^Z80_ARG8^Z80_ARG16 ,NULL},
{"add iy, sp", Z80_OP16 ,NULL},
{"ld b, iyh", Z80_OP16 ,NULL},
{"ld b, iyl", Z80_OP16 ,NULL},
{"ld b, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld c, iyh", Z80_OP16 ,NULL},
{"ld c, iyl", Z80_OP16 ,NULL},
{"ld c, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld d, iyh", Z80_OP16 ,NULL},
{"ld d, iyl", Z80_OP16 ,NULL},
{"ld d, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld e, iyh", Z80_OP16 ,NULL},
{"ld e, iyl", Z80_OP16 ,NULL},
{"ld e, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld iyh, b", Z80_OP16 ,NULL},
{"ld iyh, c", Z80_OP16 ,NULL},
{"ld iyh, d", Z80_OP16 ,NULL},
{"ld iyh, e", Z80_OP16 ,NULL},
{"ld iyh, iyh", Z80_OP16 ,NULL},
{"ld iyh, iyl", Z80_OP16 ,NULL},
{"ld h, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld iyh, a", Z80_OP16 ,NULL},
{"ld iyl, b", Z80_OP16 ,NULL},
{"ld iyl, c", Z80_OP16 ,NULL},
{"ld iyl, d", Z80_OP16 ,NULL},
{"ld iyl, e", Z80_OP16 ,NULL},
{"ld iyl, iyh", Z80_OP16 ,NULL},
{"ld iyl, iyl", Z80_OP16 ,NULL},
{"ld l, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"ld iyl, a", Z80_OP16 ,NULL},
{"ld [iy+0x%02x], b", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], c", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], d", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], e", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], h", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], l", Z80_OP16^Z80_ARG8 ,NULL},
{"ld [iy+0x%02x], a", Z80_OP16^Z80_ARG8 ,NULL},
{"ld a, iyh", Z80_OP16 ,NULL},
{"ld a, iyl", Z80_OP16 ,NULL},
{"ld a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"add a, iyh", Z80_OP16 ,NULL},
{"add a, iyl", Z80_OP16 ,NULL},
{"add a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"adc a, iyh", Z80_OP16 ,NULL},
{"adc a, iyl", Z80_OP16 ,NULL},
{"adc a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"sub iyh", Z80_OP16 ,NULL},
{"sub iyl", Z80_OP16 ,NULL},
{"sub [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"sbc a, iyh", Z80_OP16 ,NULL},
{"sbc a, iyl", Z80_OP16 ,NULL},
{"sbc a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"and iyh", Z80_OP16 ,NULL},
{"and iyl", Z80_OP16 ,NULL},
{"and [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"xor iyh", Z80_OP16 ,NULL},
{"xor iyl", Z80_OP16 ,NULL},
{"xor [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"or iyh", Z80_OP16 ,NULL},
{"or iyl", Z80_OP16 ,NULL},
{"or [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"cp iyh", Z80_OP16 ,NULL},
{"cp iyl", Z80_OP16 ,NULL},
{"cp [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{"", Z80_OP24^Z80_ARG8 ,fdcb},
{"pop iy", Z80_OP16 ,NULL},
{"ex [sp], iy", Z80_OP16 ,NULL},
{"push iy", Z80_OP16 ,NULL},
{"jp [iy]", Z80_OP16 ,NULL},
{"ld sp, iy", Z80_OP16 ,NULL},
{"invalid", Z80_OP16 ,NULL}
{ "add iy, bc", Z80_OP16 ,NULL},
{ "add iy, de", Z80_OP16 ,NULL},
{ "ld iy, 0x%04x", Z80_OP16^Z80_ARG16 ,NULL},
{ "ld [0x%04x], iy", Z80_OP16^Z80_ARG16 ,NULL},
{ "inc iy", Z80_OP16 ,NULL},
{ "inc iyh", Z80_OP16 ,NULL},
{ "dec iyh", Z80_OP16 ,NULL},
{ "ld iyh, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{ "add iy, iy", Z80_OP16 ,NULL},
{ "ld iy, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
{ "dec iy", Z80_OP16 ,NULL},
{ "inc iyl", Z80_OP16 ,NULL},
{ "dec iyl", Z80_OP16 ,NULL},
{ "ld iyl, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
{ "inc [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "dec [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], 0x%02x",Z80_OP16^Z80_ARG8^Z80_ARG16 ,NULL},
{ "add iy, sp", Z80_OP16 ,NULL},
{ "ld b, iyh", Z80_OP16 ,NULL},
{ "ld b, iyl", Z80_OP16 ,NULL},
{ "ld b, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld c, iyh", Z80_OP16 ,NULL},
{ "ld c, iyl", Z80_OP16 ,NULL},
{ "ld c, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld d, iyh", Z80_OP16 ,NULL},
{ "ld d, iyl", Z80_OP16 ,NULL},
{ "ld d, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld e, iyh", Z80_OP16 ,NULL},
{ "ld e, iyl", Z80_OP16 ,NULL},
{ "ld e, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld iyh, b", Z80_OP16 ,NULL},
{ "ld iyh, c", Z80_OP16 ,NULL},
{ "ld iyh, d", Z80_OP16 ,NULL},
{ "ld iyh, e", Z80_OP16 ,NULL},
{ "ld iyh, iyh", Z80_OP16 ,NULL},
{ "ld iyh, iyl", Z80_OP16 ,NULL},
{ "ld h, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld iyh, a", Z80_OP16 ,NULL},
{ "ld iyl, b", Z80_OP16 ,NULL},
{ "ld iyl, c", Z80_OP16 ,NULL},
{ "ld iyl, d", Z80_OP16 ,NULL},
{ "ld iyl, e", Z80_OP16 ,NULL},
{ "ld iyl, iyh", Z80_OP16 ,NULL},
{ "ld iyl, iyl", Z80_OP16 ,NULL},
{ "ld l, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld iyl, a", Z80_OP16 ,NULL},
{ "ld [iy+0x%02x], b", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], c", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], d", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], e", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], h", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], l", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld [iy+0x%02x], a", Z80_OP16^Z80_ARG8 ,NULL},
{ "ld a, iyh", Z80_OP16 ,NULL},
{ "ld a, iyl", Z80_OP16 ,NULL},
{ "ld a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "add a, iyh", Z80_OP16 ,NULL},
{ "add a, iyl", Z80_OP16 ,NULL},
{ "add a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "adc a, iyh", Z80_OP16 ,NULL},
{ "adc a, iyl", Z80_OP16 ,NULL},
{ "adc a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "sub iyh", Z80_OP16 ,NULL},
{ "sub iyl", Z80_OP16 ,NULL},
{ "sub [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "sbc a, iyh", Z80_OP16 ,NULL},
{ "sbc a, iyl", Z80_OP16 ,NULL},
{ "sbc a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "and iyh", Z80_OP16 ,NULL},
{ "and iyl", Z80_OP16 ,NULL},
{ "and [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "xor iyh", Z80_OP16 ,NULL},
{ "xor iyl", Z80_OP16 ,NULL},
{ "xor [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "or iyh", Z80_OP16 ,NULL},
{ "or iyl", Z80_OP16 ,NULL},
{ "or [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "cp iyh", Z80_OP16 ,NULL},
{ "cp iyl", Z80_OP16 ,NULL},
{ "cp [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
{ "", Z80_OP24^Z80_ARG8 ,fdcb},
{ "pop iy", Z80_OP16 ,NULL},
{ "ex [sp], iy", Z80_OP16 ,NULL},
{ "push iy", Z80_OP16 ,NULL},
{ "jp [iy]", Z80_OP16 ,NULL},
{ "ld sp, iy", Z80_OP16 ,NULL},
{ "invalid", Z80_OP16 ,NULL}
};
static const z80_opcode z80_op[] = {
{"nop", Z80_OP8 ,NULL},
{"ld bc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ld [bc], a", Z80_OP8 ,NULL},
{"inc bc", Z80_OP8 ,NULL},
{"inc b", Z80_OP8 ,NULL},
{"dec b", Z80_OP8 ,NULL},
{"ld b, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rlca", Z80_OP8 ,NULL},
{"ex af, af'", Z80_OP8 ,NULL},
{"add hl, bc", Z80_OP8 ,NULL},
{"ld a, [bc]", Z80_OP8 ,NULL},
{"dec bc", Z80_OP8 ,NULL},
{"inc c", Z80_OP8 ,NULL},
{"dec c", Z80_OP8 ,NULL},
{"ld c, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rrca", Z80_OP8 ,NULL},
{"djnz 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"ld de, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ld [de], a", Z80_OP8 ,NULL},
{"inc de", Z80_OP8 ,NULL},
{"inc d", Z80_OP8 ,NULL},
{"dec d", Z80_OP8 ,NULL},
{"ld d, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rla", Z80_OP8 ,NULL},
{"jr 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"add hl, de", Z80_OP8 ,NULL},
{"ld a, [de]", Z80_OP8 ,NULL},
{"dec de", Z80_OP8 ,NULL},
{"inc e", Z80_OP8 ,NULL},
{"dec e", Z80_OP8 ,NULL},
{"ld e, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rra", Z80_OP8 ,NULL},
{"jr nz, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"ld hl, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ld [0x%04x], hl", Z80_OP8^Z80_ARG16 ,NULL},
{"inc hl", Z80_OP8 ,NULL},
{"inc h", Z80_OP8 ,NULL},
{"dec h", Z80_OP8 ,NULL},
{"ld h, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"daa", Z80_OP8 ,NULL},
{"jr z, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"add hl, hl", Z80_OP8 ,NULL},
{"ld hl, [0x%04x]", Z80_OP8^Z80_ARG16 ,NULL},
{"dec hl", Z80_OP8 ,NULL},
{"inc l", Z80_OP8 ,NULL},
{"dec l", Z80_OP8 ,NULL},
{"ld l, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"cpl", Z80_OP8 ,NULL},
{"jr nc, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"ld sp, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ld [0x%04x], a", Z80_OP8^Z80_ARG16 ,NULL},
{"inc sp", Z80_OP8 ,NULL},
{"inc [hl]", Z80_OP8 ,NULL},
{"dec [hl]", Z80_OP8 ,NULL},
{"ld [hl], 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"scf", Z80_OP8 ,NULL},
{"jr c, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"add hl, sp", Z80_OP8 ,NULL},
{"ld a, [0x%04x]", Z80_OP8^Z80_ARG16 ,NULL},
{"dec sp", Z80_OP8 ,NULL},
{"inc a", Z80_OP8 ,NULL},
{"dec a", Z80_OP8 ,NULL},
{"ld a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"ccf", Z80_OP8 ,NULL},
{"ld b, b", Z80_OP8 ,NULL},
{"ld b, c", Z80_OP8 ,NULL},
{"ld b, d", Z80_OP8 ,NULL},
{"ld b, e", Z80_OP8 ,NULL},
{"ld b, h", Z80_OP8 ,NULL},
{"ld b, l", Z80_OP8 ,NULL},
{"ld b, [hl]", Z80_OP8 ,NULL},
{"ld b, a", Z80_OP8 ,NULL},
{"ld c, b", Z80_OP8 ,NULL},
{"ld c, c", Z80_OP8 ,NULL},
{"ld c, d", Z80_OP8 ,NULL},
{"ld c, e", Z80_OP8 ,NULL},
{"ld c, h", Z80_OP8 ,NULL},
{"ld c, l", Z80_OP8 ,NULL},
{"ld c, [hl]", Z80_OP8 ,NULL},
{"ld c, a", Z80_OP8 ,NULL},
{"ld d, b", Z80_OP8 ,NULL},
{"ld d, c", Z80_OP8 ,NULL},
{"ld d, d", Z80_OP8 ,NULL},
{"ld d, e", Z80_OP8 ,NULL},
{"ld d, h", Z80_OP8 ,NULL},
{"ld d, l", Z80_OP8 ,NULL},
{"ld d, [hl]", Z80_OP8 ,NULL},
{"ld d, a", Z80_OP8 ,NULL},
{"ld e, b", Z80_OP8 ,NULL},
{"ld e, c", Z80_OP8 ,NULL},
{"ld e, d", Z80_OP8 ,NULL},
{"ld e, e", Z80_OP8 ,NULL},
{"ld e, h", Z80_OP8 ,NULL},
{"ld e, l", Z80_OP8 ,NULL},
{"ld e, [hl]", Z80_OP8 ,NULL},
{"ld e, a", Z80_OP8 ,NULL},
{"ld h, b", Z80_OP8 ,NULL},
{"ld h, c", Z80_OP8 ,NULL},
{"ld h, d", Z80_OP8 ,NULL},
{"ld h, e", Z80_OP8 ,NULL},
{"ld h, h", Z80_OP8 ,NULL},
{"ld h, l", Z80_OP8 ,NULL},
{"ld h, [hl]", Z80_OP8 ,NULL},
{"ld h, a", Z80_OP8 ,NULL},
{"ld l, b", Z80_OP8 ,NULL},
{"ld l, c", Z80_OP8 ,NULL},
{"ld l, d", Z80_OP8 ,NULL},
{"ld l, e", Z80_OP8 ,NULL},
{"ld l, h", Z80_OP8 ,NULL},
{"ld l, l", Z80_OP8 ,NULL},
{"ld l, [hl]", Z80_OP8 ,NULL},
{"ld l, a", Z80_OP8 ,NULL},
{"ld [hl], b", Z80_OP8 ,NULL},
{"ld [hl], c", Z80_OP8 ,NULL},
{"ld [hl], d", Z80_OP8 ,NULL},
{"ld [hl], e", Z80_OP8 ,NULL},
{"ld [hl], h", Z80_OP8 ,NULL},
{"ld [hl], l", Z80_OP8 ,NULL},
{"halt", Z80_OP8 ,NULL},
{"ld [hl], a", Z80_OP8 ,NULL},
{"ld a, b", Z80_OP8 ,NULL},
{"ld a, c", Z80_OP8 ,NULL},
{"ld a, d", Z80_OP8 ,NULL},
{"ld a, e", Z80_OP8 ,NULL},
{"ld a, h", Z80_OP8 ,NULL},
{"ld a, l", Z80_OP8 ,NULL},
{"ld a, [hl]", Z80_OP8 ,NULL},
{"ld a, a", Z80_OP8 ,NULL},
{"add a, b", Z80_OP8 ,NULL},
{"add a, c", Z80_OP8 ,NULL},
{"add a, d", Z80_OP8 ,NULL},
{"add a, e", Z80_OP8 ,NULL},
{"add a, h", Z80_OP8 ,NULL},
{"add a, l", Z80_OP8 ,NULL},
{"add a, [hl]", Z80_OP8 ,NULL},
{"add a, a", Z80_OP8 ,NULL},
{"adc a, b", Z80_OP8 ,NULL},
{"adc a, c", Z80_OP8 ,NULL},
{"adc a, d", Z80_OP8 ,NULL},
{"adc a, e", Z80_OP8 ,NULL},
{"adc a, h", Z80_OP8 ,NULL},
{"adc a, l", Z80_OP8 ,NULL},
{"adc a, [hl]", Z80_OP8 ,NULL},
{"adc a, a", Z80_OP8 ,NULL},
{"sub b", Z80_OP8 ,NULL},
{"sub c", Z80_OP8 ,NULL},
{"sub d", Z80_OP8 ,NULL},
{"sub e", Z80_OP8 ,NULL},
{"sub h", Z80_OP8 ,NULL},
{"sub l", Z80_OP8 ,NULL},
{"sub [hl]", Z80_OP8 ,NULL},
{"sub a", Z80_OP8 ,NULL},
{"sbc a, b", Z80_OP8 ,NULL},
{"sbc a, c", Z80_OP8 ,NULL},
{"sbc a, d", Z80_OP8 ,NULL},
{"sbc a, e", Z80_OP8 ,NULL},
{"sbc a, h", Z80_OP8 ,NULL},
{"sbc a, l", Z80_OP8 ,NULL},
{"sbc a, [hl]", Z80_OP8 ,NULL},
{"sbc a, a", Z80_OP8 ,NULL},
{"and b", Z80_OP8 ,NULL},
{"and c", Z80_OP8 ,NULL},
{"and d", Z80_OP8 ,NULL},
{"and e", Z80_OP8 ,NULL},
{"and h", Z80_OP8 ,NULL},
{"and l", Z80_OP8 ,NULL},
{"and [hl]", Z80_OP8 ,NULL},
{"and a", Z80_OP8 ,NULL},
{"xor b", Z80_OP8 ,NULL},
{"xor c", Z80_OP8 ,NULL},
{"xor d", Z80_OP8 ,NULL},
{"xor e", Z80_OP8 ,NULL},
{"xor h", Z80_OP8 ,NULL},
{"xor l", Z80_OP8 ,NULL},
{"xor [hl]", Z80_OP8 ,NULL},
{"xor a", Z80_OP8 ,NULL},
{"or b", Z80_OP8 ,NULL},
{"or c", Z80_OP8 ,NULL},
{"or d", Z80_OP8 ,NULL},
{"or e", Z80_OP8 ,NULL},
{"or h", Z80_OP8 ,NULL},
{"or l", Z80_OP8 ,NULL},
{"or [hl]", Z80_OP8 ,NULL},
{"or a", Z80_OP8 ,NULL},
{"cp b", Z80_OP8 ,NULL},
{"cp c", Z80_OP8 ,NULL},
{"cp d", Z80_OP8 ,NULL},
{"cp e", Z80_OP8 ,NULL},
{"cp h", Z80_OP8 ,NULL},
{"cp l", Z80_OP8 ,NULL},
{"cp [hl]", Z80_OP8 ,NULL},
{"cp a", Z80_OP8 ,NULL},
{"ret nz", Z80_OP8 ,NULL},
{"pop bc", Z80_OP8 ,NULL},
{"jp nz, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"jp 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"call nz, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"push bc", Z80_OP8 ,NULL},
{"add a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x00", Z80_OP8 ,NULL},
{"ret z", Z80_OP8 ,NULL},
{"ret", Z80_OP8 ,NULL},
{"jp z, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"", Z80_OP16 ,cb},
{"call z, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"call 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"adc a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x08", Z80_OP8 ,NULL},
{"ret nc", Z80_OP8 ,NULL},
{"pop de", Z80_OP8 ,NULL},
{"jp nc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"out [0x%02x], a", Z80_OP8^Z80_ARG8 ,NULL},
{"call nc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"push de", Z80_OP8 ,NULL},
{"sub 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x10", Z80_OP8 ,NULL},
{"ret c", Z80_OP8 ,NULL},
{"exx", Z80_OP8 ,NULL},
{"jp c, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"in a, [0x%02x]", Z80_OP8^Z80_ARG8 ,NULL},
{"call c, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"", Z80_OP_UNK^Z80_ENC0 ,dd},
{"sbc a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x18", Z80_OP8 ,NULL},
{"ret po", Z80_OP8 ,NULL},
{"pop hl", Z80_OP8 ,NULL},
{"jp po, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ex [sp], hl", Z80_OP8 ,NULL},
{"call po, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"push hl", Z80_OP8 ,NULL},
{"and 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x20", Z80_OP8 ,NULL},
{"ret pe", Z80_OP8 ,NULL},
{"jp [hl]", Z80_OP8 ,NULL},
{"jp pe, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ex de, hl", Z80_OP8 ,NULL},
{"call pe, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"", Z80_OP_UNK^Z80_ENC1 ,ed},
{"xor 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x28", Z80_OP8 ,NULL},
{"ret p", Z80_OP8 ,NULL},
{"pop af", Z80_OP8 ,NULL},
{"jp p, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"di", Z80_OP8 ,NULL},
{"call p, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"push af", Z80_OP8 ,NULL},
{"or 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x30", Z80_OP8 ,NULL},
{"ret m", Z80_OP8 ,NULL},
{"ld sp, hl", Z80_OP8 ,NULL},
{"jp m, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"ei", Z80_OP8 ,NULL},
{"call m, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{"", Z80_OP_UNK^Z80_ENC0 ,fd},
{"cp 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{"rst 0x38", Z80_OP8 ,NULL},
{ "nop", Z80_OP8 ,NULL},
{ "ld bc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ld [bc], a", Z80_OP8 ,NULL},
{ "inc bc", Z80_OP8 ,NULL},
{ "inc b", Z80_OP8 ,NULL},
{ "dec b", Z80_OP8 ,NULL},
{ "ld b, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rlca", Z80_OP8 ,NULL},
{ "ex af, af'", Z80_OP8 ,NULL},
{ "add hl, bc", Z80_OP8 ,NULL},
{ "ld a, [bc]", Z80_OP8 ,NULL},
{ "dec bc", Z80_OP8 ,NULL},
{ "inc c", Z80_OP8 ,NULL},
{ "dec c", Z80_OP8 ,NULL},
{ "ld c, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rrca", Z80_OP8 ,NULL},
{ "djnz 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "ld de, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ld [de], a", Z80_OP8 ,NULL},
{ "inc de", Z80_OP8 ,NULL},
{ "inc d", Z80_OP8 ,NULL},
{ "dec d", Z80_OP8 ,NULL},
{ "ld d, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rla", Z80_OP8 ,NULL},
{ "jr 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "add hl, de", Z80_OP8 ,NULL},
{ "ld a, [de]", Z80_OP8 ,NULL},
{ "dec de", Z80_OP8 ,NULL},
{ "inc e", Z80_OP8 ,NULL},
{ "dec e", Z80_OP8 ,NULL},
{ "ld e, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rra", Z80_OP8 ,NULL},
{ "jr nz, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "ld hl, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ld [0x%04x], hl", Z80_OP8^Z80_ARG16 ,NULL},
{ "inc hl", Z80_OP8 ,NULL},
{ "inc h", Z80_OP8 ,NULL},
{ "dec h", Z80_OP8 ,NULL},
{ "ld h, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "daa", Z80_OP8 ,NULL},
{ "jr z, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "add hl, hl", Z80_OP8 ,NULL},
{ "ld hl, [0x%04x]", Z80_OP8^Z80_ARG16 ,NULL},
{ "dec hl", Z80_OP8 ,NULL},
{ "inc l", Z80_OP8 ,NULL},
{ "dec l", Z80_OP8 ,NULL},
{ "ld l, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "cpl", Z80_OP8 ,NULL},
{ "jr nc, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "ld sp, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ld [0x%04x], a", Z80_OP8^Z80_ARG16 ,NULL},
{ "inc sp", Z80_OP8 ,NULL},
{ "inc [hl]", Z80_OP8 ,NULL},
{ "dec [hl]", Z80_OP8 ,NULL},
{ "ld [hl], 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "scf", Z80_OP8 ,NULL},
{ "jr c, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "add hl, sp", Z80_OP8 ,NULL},
{ "ld a, [0x%04x]", Z80_OP8^Z80_ARG16 ,NULL},
{ "dec sp", Z80_OP8 ,NULL},
{ "inc a", Z80_OP8 ,NULL},
{ "dec a", Z80_OP8 ,NULL},
{ "ld a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "ccf", Z80_OP8 ,NULL},
{ "ld b, b", Z80_OP8 ,NULL},
{ "ld b, c", Z80_OP8 ,NULL},
{ "ld b, d", Z80_OP8 ,NULL},
{ "ld b, e", Z80_OP8 ,NULL},
{ "ld b, h", Z80_OP8 ,NULL},
{ "ld b, l", Z80_OP8 ,NULL},
{ "ld b, [hl]", Z80_OP8 ,NULL},
{ "ld b, a", Z80_OP8 ,NULL},
{ "ld c, b", Z80_OP8 ,NULL},
{ "ld c, c", Z80_OP8 ,NULL},
{ "ld c, d", Z80_OP8 ,NULL},
{ "ld c, e", Z80_OP8 ,NULL},
{ "ld c, h", Z80_OP8 ,NULL},
{ "ld c, l", Z80_OP8 ,NULL},
{ "ld c, [hl]", Z80_OP8 ,NULL},
{ "ld c, a", Z80_OP8 ,NULL},
{ "ld d, b", Z80_OP8 ,NULL},
{ "ld d, c", Z80_OP8 ,NULL},
{ "ld d, d", Z80_OP8 ,NULL},
{ "ld d, e", Z80_OP8 ,NULL},
{ "ld d, h", Z80_OP8 ,NULL},
{ "ld d, l", Z80_OP8 ,NULL},
{ "ld d, [hl]", Z80_OP8 ,NULL},
{ "ld d, a", Z80_OP8 ,NULL},
{ "ld e, b", Z80_OP8 ,NULL},
{ "ld e, c", Z80_OP8 ,NULL},
{ "ld e, d", Z80_OP8 ,NULL},
{ "ld e, e", Z80_OP8 ,NULL},
{ "ld e, h", Z80_OP8 ,NULL},
{ "ld e, l", Z80_OP8 ,NULL},
{ "ld e, [hl]", Z80_OP8 ,NULL},
{ "ld e, a", Z80_OP8 ,NULL},
{ "ld h, b", Z80_OP8 ,NULL},
{ "ld h, c", Z80_OP8 ,NULL},
{ "ld h, d", Z80_OP8 ,NULL},
{ "ld h, e", Z80_OP8 ,NULL},
{ "ld h, h", Z80_OP8 ,NULL},
{ "ld h, l", Z80_OP8 ,NULL},
{ "ld h, [hl]", Z80_OP8 ,NULL},
{ "ld h, a", Z80_OP8 ,NULL},
{ "ld l, b", Z80_OP8 ,NULL},
{ "ld l, c", Z80_OP8 ,NULL},
{ "ld l, d", Z80_OP8 ,NULL},
{ "ld l, e", Z80_OP8 ,NULL},
{ "ld l, h", Z80_OP8 ,NULL},
{ "ld l, l", Z80_OP8 ,NULL},
{ "ld l, [hl]", Z80_OP8 ,NULL},
{ "ld l, a", Z80_OP8 ,NULL},
{ "ld [hl], b", Z80_OP8 ,NULL},
{ "ld [hl], c", Z80_OP8 ,NULL},
{ "ld [hl], d", Z80_OP8 ,NULL},
{ "ld [hl], e", Z80_OP8 ,NULL},
{ "ld [hl], h", Z80_OP8 ,NULL},
{ "ld [hl], l", Z80_OP8 ,NULL},
{ "halt", Z80_OP8 ,NULL},
{ "ld [hl], a", Z80_OP8 ,NULL},
{ "ld a, b", Z80_OP8 ,NULL},
{ "ld a, c", Z80_OP8 ,NULL},
{ "ld a, d", Z80_OP8 ,NULL},
{ "ld a, e", Z80_OP8 ,NULL},
{ "ld a, h", Z80_OP8 ,NULL},
{ "ld a, l", Z80_OP8 ,NULL},
{ "ld a, [hl]", Z80_OP8 ,NULL},
{ "ld a, a", Z80_OP8 ,NULL},
{ "add a, b", Z80_OP8 ,NULL},
{ "add a, c", Z80_OP8 ,NULL},
{ "add a, d", Z80_OP8 ,NULL},
{ "add a, e", Z80_OP8 ,NULL},
{ "add a, h", Z80_OP8 ,NULL},
{ "add a, l", Z80_OP8 ,NULL},
{ "add a, [hl]", Z80_OP8 ,NULL},
{ "add a, a", Z80_OP8 ,NULL},
{ "adc a, b", Z80_OP8 ,NULL},
{ "adc a, c", Z80_OP8 ,NULL},
{ "adc a, d", Z80_OP8 ,NULL},
{ "adc a, e", Z80_OP8 ,NULL},
{ "adc a, h", Z80_OP8 ,NULL},
{ "adc a, l", Z80_OP8 ,NULL},
{ "adc a, [hl]", Z80_OP8 ,NULL},
{ "adc a, a", Z80_OP8 ,NULL},
{ "sub b", Z80_OP8 ,NULL},
{ "sub c", Z80_OP8 ,NULL},
{ "sub d", Z80_OP8 ,NULL},
{ "sub e", Z80_OP8 ,NULL},
{ "sub h", Z80_OP8 ,NULL},
{ "sub l", Z80_OP8 ,NULL},
{ "sub [hl]", Z80_OP8 ,NULL},
{ "sub a", Z80_OP8 ,NULL},
{ "sbc a, b", Z80_OP8 ,NULL},
{ "sbc a, c", Z80_OP8 ,NULL},
{ "sbc a, d", Z80_OP8 ,NULL},
{ "sbc a, e", Z80_OP8 ,NULL},
{ "sbc a, h", Z80_OP8 ,NULL},
{ "sbc a, l", Z80_OP8 ,NULL},
{ "sbc a, [hl]", Z80_OP8 ,NULL},
{ "sbc a, a", Z80_OP8 ,NULL},
{ "and b", Z80_OP8 ,NULL},
{ "and c", Z80_OP8 ,NULL},
{ "and d", Z80_OP8 ,NULL},
{ "and e", Z80_OP8 ,NULL},
{ "and h", Z80_OP8 ,NULL},
{ "and l", Z80_OP8 ,NULL},
{ "and [hl]", Z80_OP8 ,NULL},
{ "and a", Z80_OP8 ,NULL},
{ "xor b", Z80_OP8 ,NULL},
{ "xor c", Z80_OP8 ,NULL},
{ "xor d", Z80_OP8 ,NULL},
{ "xor e", Z80_OP8 ,NULL},
{ "xor h", Z80_OP8 ,NULL},
{ "xor l", Z80_OP8 ,NULL},
{ "xor [hl]", Z80_OP8 ,NULL},
{ "xor a", Z80_OP8 ,NULL},
{ "or b", Z80_OP8 ,NULL},
{ "or c", Z80_OP8 ,NULL},
{ "or d", Z80_OP8 ,NULL},
{ "or e", Z80_OP8 ,NULL},
{ "or h", Z80_OP8 ,NULL},
{ "or l", Z80_OP8 ,NULL},
{ "or [hl]", Z80_OP8 ,NULL},
{ "or a", Z80_OP8 ,NULL},
{ "cp b", Z80_OP8 ,NULL},
{ "cp c", Z80_OP8 ,NULL},
{ "cp d", Z80_OP8 ,NULL},
{ "cp e", Z80_OP8 ,NULL},
{ "cp h", Z80_OP8 ,NULL},
{ "cp l", Z80_OP8 ,NULL},
{ "cp [hl]", Z80_OP8 ,NULL},
{ "cp a", Z80_OP8 ,NULL},
{ "ret nz", Z80_OP8 ,NULL},
{ "pop bc", Z80_OP8 ,NULL},
{ "jp nz, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "jp 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "call nz, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "push bc", Z80_OP8 ,NULL},
{ "add a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x00", Z80_OP8 ,NULL},
{ "ret z", Z80_OP8 ,NULL},
{ "ret", Z80_OP8 ,NULL},
{ "jp z, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "", Z80_OP16 ,cb},
{ "call z, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "call 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "adc a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x08", Z80_OP8 ,NULL},
{ "ret nc", Z80_OP8 ,NULL},
{ "pop de", Z80_OP8 ,NULL},
{ "jp nc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "out [0x%02x], a", Z80_OP8^Z80_ARG8 ,NULL},
{ "call nc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "push de", Z80_OP8 ,NULL},
{ "sub 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x10", Z80_OP8 ,NULL},
{ "ret c", Z80_OP8 ,NULL},
{ "exx", Z80_OP8 ,NULL},
{ "jp c, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "in a, [0x%02x]", Z80_OP8^Z80_ARG8 ,NULL},
{ "call c, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "", Z80_OP_UNK^Z80_ENC0 ,dd},
{ "sbc a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x18", Z80_OP8 ,NULL},
{ "ret po", Z80_OP8 ,NULL},
{ "pop hl", Z80_OP8 ,NULL},
{ "jp po, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ex [sp], hl", Z80_OP8 ,NULL},
{ "call po, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "push hl", Z80_OP8 ,NULL},
{ "and 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x20", Z80_OP8 ,NULL},
{ "ret pe", Z80_OP8 ,NULL},
{ "jp [hl]", Z80_OP8 ,NULL},
{ "jp pe, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ex de, hl", Z80_OP8 ,NULL},
{ "call pe, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "", Z80_OP_UNK^Z80_ENC1 ,ed},
{ "xor 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x28", Z80_OP8 ,NULL},
{ "ret p", Z80_OP8 ,NULL},
{ "pop af", Z80_OP8 ,NULL},
{ "jp p, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "di", Z80_OP8 ,NULL},
{ "call p, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "push af", Z80_OP8 ,NULL},
{ "or 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x30", Z80_OP8 ,NULL},
{ "ret m", Z80_OP8 ,NULL},
{ "ld sp, hl", Z80_OP8 ,NULL},
{ "jp m, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "ei", Z80_OP8 ,NULL},
{ "call m, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
{ "", Z80_OP_UNK^Z80_ENC0 ,fd},
{ "cp 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
{ "rst 0x38", Z80_OP8 ,NULL},
};
#endif

View File

@ -686,16 +686,16 @@ struct op_family {
int id;
};
static const struct op_family of[] = {
{"cpu", R_ANAL_OP_FAMILY_CPU},
{"fpu", R_ANAL_OP_FAMILY_FPU},
{"mmx", R_ANAL_OP_FAMILY_MMX},
{"sse", R_ANAL_OP_FAMILY_SSE},
{"priv", R_ANAL_OP_FAMILY_PRIV},
{"virt", R_ANAL_OP_FAMILY_VIRT},
{"crpt", R_ANAL_OP_FAMILY_CRYPTO},
{"io", R_ANAL_OP_FAMILY_IO},
{"sec", R_ANAL_OP_FAMILY_SECURITY},
{"thread", R_ANAL_OP_FAMILY_THREAD},
{ "cpu", R_ANAL_OP_FAMILY_CPU},
{ "fpu", R_ANAL_OP_FAMILY_FPU},
{ "mmx", R_ANAL_OP_FAMILY_MMX},
{ "sse", R_ANAL_OP_FAMILY_SSE},
{ "priv", R_ANAL_OP_FAMILY_PRIV},
{ "virt", R_ANAL_OP_FAMILY_VIRT},
{ "crpt", R_ANAL_OP_FAMILY_CRYPTO},
{ "io", R_ANAL_OP_FAMILY_IO},
{ "sec", R_ANAL_OP_FAMILY_SECURITY},
{ "thread", R_ANAL_OP_FAMILY_THREAD},
};
R_API int r_anal_op_family_from_string(const char *f) {

View File

@ -181,36 +181,36 @@ typedef struct {
// custom reg read/write temporarily disabled - see r2 issue #9242
static RI8051Reg registers[] = {
// keep these sorted
{"a", 0xE0, 0x00, 1, 0},
{"b", 0xF0, 0x00, 1, 0},
{"dph", 0x83, 0x00, 1, 0},
{"dpl", 0x82, 0x00, 1, 0},
{"dptr", 0x82, 0x00, 2, 0, 1},
{"ie", 0xA8, 0x00, 1, 0},
{"ip", 0xB8, 0x00, 1, 0},
{"p0", 0x80, 0xFF, 1, 0},
{"p1", 0x90, 0xFF, 1, 0},
{"p2", 0xA0, 0xFF, 1, 0},
{"p3", 0xB0, 0xFF, 1, 0},
{"pcon", 0x87, 0x00, 1, 0},
{"psw", 0xD0, 0x00, 1, 0},
{"r0", 0x00, 0x00, 1, 1},
{"r1", 0x01, 0x00, 1, 1},
{"r2", 0x02, 0x00, 1, 1},
{"r3", 0x03, 0x00, 1, 1},
{"r4", 0x04, 0x00, 1, 1},
{"r5", 0x05, 0x00, 1, 1},
{"r6", 0x06, 0x00, 1, 1},
{"r7", 0x07, 0x00, 1, 1},
{"sbuf", 0x99, 0x00, 1, 0},
{"scon", 0x98, 0x00, 1, 0},
{"sp", 0x81, 0x07, 1, 0},
{"tcon", 0x88, 0x00, 1, 0},
{"th0", 0x8C, 0x00, 1, 0},
{"th1", 0x8D, 0x00, 1, 0},
{"tl0", 0x8A, 0x00, 1, 0},
{"tl1", 0x8B, 0x00, 1, 0},
{"tmod", 0x89, 0x00, 1, 0}
{ "a", 0xE0, 0x00, 1, 0},
{ "b", 0xF0, 0x00, 1, 0},
{ "dph", 0x83, 0x00, 1, 0},
{ "dpl", 0x82, 0x00, 1, 0},
{ "dptr", 0x82, 0x00, 2, 0, 1},
{ "ie", 0xA8, 0x00, 1, 0},
{ "ip", 0xB8, 0x00, 1, 0},
{ "p0", 0x80, 0xFF, 1, 0},
{ "p1", 0x90, 0xFF, 1, 0},
{ "p2", 0xA0, 0xFF, 1, 0},
{ "p3", 0xB0, 0xFF, 1, 0},
{ "pcon", 0x87, 0x00, 1, 0},
{ "psw", 0xD0, 0x00, 1, 0},
{ "r0", 0x00, 0x00, 1, 1},
{ "r1", 0x01, 0x00, 1, 1},
{ "r2", 0x02, 0x00, 1, 1},
{ "r3", 0x03, 0x00, 1, 1},
{ "r4", 0x04, 0x00, 1, 1},
{ "r5", 0x05, 0x00, 1, 1},
{ "r6", 0x06, 0x00, 1, 1},
{ "r7", 0x07, 0x00, 1, 1},
{ "sbuf", 0x99, 0x00, 1, 0},
{ "scon", 0x98, 0x00, 1, 0},
{ "sp", 0x81, 0x07, 1, 0},
{ "tcon", 0x88, 0x00, 1, 0},
{ "th0", 0x8C, 0x00, 1, 0},
{ "th1", 0x8D, 0x00, 1, 0},
{ "tl0", 0x8A, 0x00, 1, 0},
{ "tl1", 0x8B, 0x00, 1, 0},
{ "tmod", 0x89, 0x00, 1, 0}
};
#endif

View File

@ -1,14 +1,9 @@
/* radare - LGPL - Copyright 2012 - pancake<nopcode.org>
2022 - condret
/* radare - LGPL - Copyright 2012 - pancake<nopcode.org> 2022 - condret
this file was based on anal_i8080.c */
#include <string.h>
#include <r_types.h>
#include <r_util.h>
#include <r_asm.h>
#include <r_anal.h>
#include <r_reg.h>
#include "gb/gbdis.c"
#include "gb/gbasm.c"
#include "gb/gb_makros.h"
@ -16,11 +11,11 @@
#include "gb/gb_makros.h"
#include "gb/gb.h"
static const char *regs_1[] = { "Z", "N", "H", "C"};
static const char *regs_8[] = { "b", "c", "d", "e", "h", "l", "a", "a"}; //deprecate this and rename regs_x
static const char *regs_x[] = { "b", "c", "d", "e", "h", "l", "hl", "a"};
static const char *regs_16[] = { "bc", "de", "hl", "sp"};
static const char *regs_16_alt[] = { "bc", "de", "hl", "af" };
static const char * const regs_1[] = { "Z", "N", "H", "C" };
static const char * const regs_8[] = { "b", "c", "d", "e", "h", "l", "a", "a" }; //deprecate this and rename regs_x
static const char * const regs_x[] = { "b", "c", "d", "e", "h", "l", "hl", "a" };
static const char * const regs_16[] = { "bc", "de", "hl", "sp" };
static const char * const regs_16_alt[] = { "bc", "de", "hl", "af" };
static ut8 gb_op_calljump(RAnal *a, RAnalOp *op, const ut8 *data, ut64 addr) {
if (GB_IS_RAM_DST (data[1],data[2])) {
@ -36,11 +31,11 @@ static ut8 gb_op_calljump(RAnal *a, RAnalOp *op, const ut8 *data, ut64 addr) {
return true;
}
#if 0
#if 0
static inline int gb_anal_esil_banksw(RAnalOp *op) {
ut64 base = op->dst->base;
if (op->addr < 0x4000 && 0x1fff < base && base < 0x4000) {
r_strbuf_set (&op->esil, "mbcrom=0,?a%0x20,mbcrom=a-1"); //if a is a multiple of 0x20 mbcrom is 0, else it gets its value from a
r_strbuf_set (&op->esil, "mbcrom=0,?a%0x20,mbcrom=a-1"); //if a is a multiple of 0x20 mbcrom is 0, else it gets its value from a
return true;
}
if (base < 0x6000 && 0x3fff < base) {
@ -470,7 +465,7 @@ static void gb_anal_xoaasc_imm(RReg *reg, RAnalOp *op, const ut8 *data) {
}
}
//load with [hl] as memref
//load with [hl] as memref
static inline void gb_anal_load_hl(RReg *reg, RAnalOp *op, const ut8 data) {
RAnalValue *dst, *src;
dst = r_vector_push (op->dsts, NULL);

View File

@ -199,7 +199,7 @@ static ut64 disarm_8bit_offset(ut64 pc, ut32 offs) {
return (off << 1) + pc + 4;
}
static char *regs[]={"r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","pc"};
static char *regs[]={ "r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","pc" };
static RAnalValue *anal_fill_ai_rg(RAnal *anal, int idx) {
RAnalValue *ret = r_anal_value_new ();

View File

@ -347,7 +347,7 @@ static int cond_x862r2(int id) {
/* reg indices are based on Intel doc for 32-bit ModR/M byte */
static const char *reg32_to_name(ut8 reg) {
const char * const names[] = {"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi"};
const char * const names[] = { "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi" };
return reg < R_ARRAY_SIZE (names) ? names[reg] : "unk";
}

View File

@ -279,16 +279,16 @@ struct op_family {
int id;
};
static const struct op_family of[] = {
{"cpu", R_ARCH_OP_FAMILY_CPU},
{"fpu", R_ARCH_OP_FAMILY_FPU},
{"mmx", R_ARCH_OP_FAMILY_MMX},
{"sse", R_ARCH_OP_FAMILY_SSE},
{"priv", R_ARCH_OP_FAMILY_PRIV},
{"virt", R_ARCH_OP_FAMILY_VIRT},
{"crpt", R_ARCH_OP_FAMILY_CRYPTO},
{"io", R_ARCH_OP_FAMILY_IO},
{"sec", R_ARCH_OP_FAMILY_SECURITY},
{"thread", R_ARCH_OP_FAMILY_THREAD},
{ "cpu", R_ARCH_OP_FAMILY_CPU},
{ "fpu", R_ARCH_OP_FAMILY_FPU},
{ "mmx", R_ARCH_OP_FAMILY_MMX},
{ "sse", R_ARCH_OP_FAMILY_SSE},
{ "priv", R_ARCH_OP_FAMILY_PRIV},
{ "virt", R_ARCH_OP_FAMILY_VIRT},
{ "crpt", R_ARCH_OP_FAMILY_CRYPTO},
{ "io", R_ARCH_OP_FAMILY_IO},
{ "sec", R_ARCH_OP_FAMILY_SECURITY},
{ "thread", R_ARCH_OP_FAMILY_THREAD},
};
R_API int r_arch_op_family_from_string(const char *f) {

View File

@ -24,200 +24,200 @@
const struct aarch64_operand aarch64_operands[] =
{
{AARCH64_OPND_CLASS_NIL, "", 0, {0}, "<none>"},
{AARCH64_OPND_CLASS_INT_REG, "Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rt2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt2}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rs", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rs}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Ra", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Ra}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rt_SYS", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt}, "an integer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rd_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "an integer or stack pointer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rn_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer or stack pointer register"},
{AARCH64_OPND_CLASS_INT_REG, "Rm_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "an integer or stack pointer register"},
{AARCH64_OPND_CLASS_INT_REG, "PAIRREG", OPD_F_HAS_EXTRACTOR, {0}, "the second reg of a pair"},
{AARCH64_OPND_CLASS_MODIFIED_REG, "Rm_EXT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an integer register with optional extension"},
{AARCH64_OPND_CLASS_MODIFIED_REG, "Rm_SFT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an integer register with optional shift"},
{AARCH64_OPND_CLASS_FP_REG, "Fd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a floating-point register"},
{AARCH64_OPND_CLASS_FP_REG, "Fn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a floating-point register"},
{AARCH64_OPND_CLASS_FP_REG, "Fm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a floating-point register"},
{AARCH64_OPND_CLASS_FP_REG, "Fa", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Ra}, "a floating-point register"},
{AARCH64_OPND_CLASS_FP_REG, "Ft", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt}, "a floating-point register"},
{AARCH64_OPND_CLASS_FP_REG, "Ft2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt2}, "a floating-point register"},
{AARCH64_OPND_CLASS_SISD_REG, "Sd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a SIMD scalar register"},
{AARCH64_OPND_CLASS_SISD_REG, "Sn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD scalar register"},
{AARCH64_OPND_CLASS_SISD_REG, "Sm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD scalar register"},
{AARCH64_OPND_CLASS_SIMD_REG, "Va", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Ra}, "a SIMD vector register"},
{AARCH64_OPND_CLASS_SIMD_REG, "Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a SIMD vector register"},
{AARCH64_OPND_CLASS_SIMD_REG, "Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD vector register"},
{AARCH64_OPND_CLASS_SIMD_REG, "Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD vector register"},
{AARCH64_OPND_CLASS_FP_REG, "VdD1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "the top half of a 128-bit FP/SIMD register"},
{AARCH64_OPND_CLASS_FP_REG, "VnD1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "the top half of a 128-bit FP/SIMD register"},
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "Ed", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a SIMD vector element"},
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "En", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD vector element"},
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "Em", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD vector element"},
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "Em16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD vector element limited to V0-V15"},
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LVn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD vector register list"},
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LVt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a SIMD vector register list"},
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LVt_AL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a SIMD vector register list"},
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LEt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a SIMD vector element list"},
{AARCH64_OPND_CLASS_IMMEDIATE, "CRn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRn}, "a 4-bit opcode field named for historical reasons C0 - C15"},
{AARCH64_OPND_CLASS_IMMEDIATE, "CRm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRm}, "a 4-bit opcode field named for historical reasons C0 - C15"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IDX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm4}, "an immediate as the index of the least significant byte"},
{AARCH64_OPND_CLASS_IMMEDIATE, "MASK", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm4_2}, "an immediate as the index of the least significant byte"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_VLSL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a left shift amount for an AdvSIMD register"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_VLSR", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a right shift amount for an AdvSIMD register"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMD_IMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMD_IMM_SFT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an 8-bit unsigned immediate with optional shift"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMD_FPIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an 8-bit floating-point constant"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SHLL_IMM", OPD_F_HAS_EXTRACTOR, {0}, "an immediate shift amount of 8, 16 or 32"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM0", 0, {0}, "0"},
{AARCH64_OPND_CLASS_IMMEDIATE, "FPIMM0", 0, {0}, "0.0"},
{AARCH64_OPND_CLASS_IMMEDIATE, "FPIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm8}, "an 8-bit floating-point constant"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMMR", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_immr}, "the right rotate amount"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMMS", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6}, "the leftmost bit number to be moved from the source"},
{AARCH64_OPND_CLASS_IMMEDIATE, "WIDTH", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6}, "the width of the bit-field"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6}, "an immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6_2}, "an immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM3_OP1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_op1}, "a 3-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM3_OP2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_op2}, "a 3-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM4", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRm}, "a 4-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM7", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRm, FLD_op2}, "a 7-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "BIT_NUM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_b5, FLD_b40}, "the bit number to be tested"},
{AARCH64_OPND_CLASS_IMMEDIATE, "EXCEPTION", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm16}, "a 16-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "CCMP_IMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm5}, "a 5-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMM5", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm5}, "a 5-bit signed immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "NZCV", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_nzcv}, "a flag bit specifier giving an alternative value for each flag"},
{AARCH64_OPND_CLASS_IMMEDIATE, "LIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_N,FLD_immr,FLD_imms}, "Logical immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "AIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_shift,FLD_imm12}, "a 12-bit unsigned immediate with optional left shift of 12 bits"},
{AARCH64_OPND_CLASS_IMMEDIATE, "HALF", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm16}, "a 16-bit immediate with optional left shift"},
{AARCH64_OPND_CLASS_IMMEDIATE, "FBITS", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_scale}, "the number of bits after the binary point in the fixed-point value"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_MOV", 0, {0}, "an immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_ROT1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_rotate1}, "a 2-bit rotation specifier for complex arithmetic operations"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_ROT2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_rotate2}, "a 2-bit rotation specifier for complex arithmetic operations"},
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_ROT3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_rotate3}, "a 1-bit rotation specifier for complex arithmetic operations"},
{AARCH64_OPND_CLASS_COND, "COND", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a condition"},
{AARCH64_OPND_CLASS_COND, "COND1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "one of the standard conditions, excluding AL and NV."},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_ADRP", OPD_F_SEXT | OPD_F_HAS_EXTRACTOR, {FLD_immhi, FLD_immlo}, "21-bit PC-relative address of a 4KB page"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL14", OPD_F_SEXT | OPD_F_SHIFT_BY_2 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm14}, "14-bit PC-relative address"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL19", OPD_F_SEXT | OPD_F_SHIFT_BY_2 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm19}, "19-bit PC-relative address"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL21", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_immhi,FLD_immlo}, "21-bit PC-relative address"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL26", OPD_F_SEXT | OPD_F_SHIFT_BY_2 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm26}, "26-bit PC-relative address"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMPLE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address with base register (no offset)"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_REGOFF", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address with register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM7", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm7,FLD_index2}, "an address with 7-bit signed immediate offset"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM9", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm9,FLD_index}, "an address with 9-bit signed immediate offset"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM9_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm9,FLD_index}, "an address with 9-bit negative or unaligned immediate offset"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM10", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_S_imm10,FLD_imm9,FLD_index}, "an address with 10-bit scaled, signed immediate offset"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_UIMM12", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_imm12}, "an address with scaled, unsigned immediate offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SIMD_ADDR_SIMPLE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address with base register (no offset)"},
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_OFFSET", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_imm9,FLD_index}, "an address with an optional 8-bit signed immediate offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SIMD_ADDR_POST", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a post-indexed address with immediate or register increment"},
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a system register"},
{AARCH64_OPND_CLASS_SYSTEM, "PSTATEFIELD", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a PSTATE field name"},
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_AT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address translation operation specifier"},
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_DC", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a data cache maintenance operation specifier"},
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_IC", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an instruction cache maintenance operation specifier"},
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_TLBI", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a TBL invalidation operation specifier"},
{AARCH64_OPND_CLASS_SYSTEM, "BARRIER", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a barrier option name"},
{AARCH64_OPND_CLASS_SYSTEM, "BARRIER_ISB", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "the ISB option name SY or an optional 4-bit unsigned immediate"},
{AARCH64_OPND_CLASS_SYSTEM, "PRFOP", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a prefetch operation specifier"},
{AARCH64_OPND_CLASS_SYSTEM, "BARRIER_PSB", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "the PSB option name CSYNC"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x16", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 16"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4xVL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by VL"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x2xVL", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 2*VL"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x3xVL", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 3*VL"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x4xVL", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 4*VL"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S6xVL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit signed offset, multiplied by VL"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S9xVL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 9-bit signed offset, multiplied by VL"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6x2", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset, multiplied by 2"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6x4", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset, multiplied by 4"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6x8", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset, multiplied by 8"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_R", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with an optional scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR_LSL1", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR_LSL2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR_LSL3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX", (0 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX_LSL1", (1 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX_LSL2", (2 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX_LSL3", (3 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_LSL1", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_LSL2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_LSL3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW_14", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW_22", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW1_14", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW1_22", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW2_14", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW2_22", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW3_14", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW3_22", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5x2", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset, multiplied by 2"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5x4", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset, multiplied by 4"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5x8", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset, multiplied by 8"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZZ_LSL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZZ_SXTW", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZZ_UXTW", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn,FLD_SVE_Zm_16}, "an address with a vector register offset"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_AIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm9}, "a 9-bit unsigned arithmetic operand"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_ASIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm9}, "a 9-bit signed arithmetic operand"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_FPIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm8}, "an 8-bit floating-point immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_I1_HALF_ONE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i1}, "either 0.5 or 1.0"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_I1_HALF_TWO", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i1}, "either 0.5 or 2.0"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_I1_ZERO_ONE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i1}, "either 0.0 or 1.0"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_IMM_ROT1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_rot1}, "a 1-bit rotation specifier for complex arithmetic operations"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_IMM_ROT2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_rot2}, "a 2-bit rotation specifier for complex arithmetic operations"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_INV_LIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_N,FLD_SVE_immr,FLD_SVE_imms}, "an inverted 13-bit logical immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_LIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_N,FLD_SVE_immr,FLD_SVE_imms}, "a 13-bit logical immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_LIMM_MOV", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_N,FLD_SVE_immr,FLD_SVE_imms}, "a 13-bit logical move immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_PATTERN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_pattern}, "an enumeration value such as POW2"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_PATTERN_SCALED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_pattern}, "an enumeration value such as POW2"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_PRFOP", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_prfop}, "an enumeration value such as PLDL1KEEP"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pd}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg3}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg4_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg4_5}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg4_10", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg4_10}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg4_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg4_16}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pm}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pn}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pt}, "an SVE predicate register"},
{AARCH64_OPND_CLASS_INT_REG, "SVE_Rm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Rm}, "an integer register or zero"},
{AARCH64_OPND_CLASS_INT_REG, "SVE_Rn_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Rn}, "an integer register or SP"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHLIMM_PRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_SVE_imm5}, "a shift-left immediate operand"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHLIMM_UNPRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_imm5}, "a shift-left immediate operand"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHRIMM_PRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_SVE_imm5}, "a shift-right immediate operand"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHRIMM_UNPRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_imm5}, "a shift-right immediate operand"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM5", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm5}, "a 5-bit signed immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM5B", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm5b}, "a 5-bit signed immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM6", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imms}, "a 6-bit signed immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM8", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm8}, "an 8-bit signed immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm3}, "a 3-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM7", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm7}, "a 7-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm8}, "an 8-bit unsigned immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM8_53", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm5,FLD_imm3}, "an 8-bit unsigned immediate"},
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_VZn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a SIMD register"},
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vd}, "a SIMD register"},
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vm}, "a SIMD register"},
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vn}, "a SIMD register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_5}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_16}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zd}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_5}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_22_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i3h, FLD_SVE_Zm_16}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_ZnxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a list of SVE vector registers"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_ZtxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of SVE vector registers"},
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "SM3_IMM2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SM3_imm2}, "an indexed SM3 vector immediate"},
{AARCH64_OPND_CLASS_NIL, "", 0, {0}, "DUMMY"},
{AARCH64_OPND_CLASS_NIL, "", 0, {0}, "<none>" },
{AARCH64_OPND_CLASS_INT_REG, "Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rt2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt2}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rs", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rs}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Ra", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Ra}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rt_SYS", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt}, "an integer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rd_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "an integer or stack pointer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rn_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer or stack pointer register" },
{AARCH64_OPND_CLASS_INT_REG, "Rm_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "an integer or stack pointer register" },
{AARCH64_OPND_CLASS_INT_REG, "PAIRREG", OPD_F_HAS_EXTRACTOR, {0}, "the second reg of a pair" },
{AARCH64_OPND_CLASS_MODIFIED_REG, "Rm_EXT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an integer register with optional extension" },
{AARCH64_OPND_CLASS_MODIFIED_REG, "Rm_SFT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an integer register with optional shift" },
{AARCH64_OPND_CLASS_FP_REG, "Fd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a floating-point register" },
{AARCH64_OPND_CLASS_FP_REG, "Fn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a floating-point register" },
{AARCH64_OPND_CLASS_FP_REG, "Fm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a floating-point register" },
{AARCH64_OPND_CLASS_FP_REG, "Fa", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Ra}, "a floating-point register" },
{AARCH64_OPND_CLASS_FP_REG, "Ft", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt}, "a floating-point register" },
{AARCH64_OPND_CLASS_FP_REG, "Ft2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rt2}, "a floating-point register" },
{AARCH64_OPND_CLASS_SISD_REG, "Sd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a SIMD scalar register" },
{AARCH64_OPND_CLASS_SISD_REG, "Sn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD scalar register" },
{AARCH64_OPND_CLASS_SISD_REG, "Sm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD scalar register" },
{AARCH64_OPND_CLASS_SIMD_REG, "Va", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Ra}, "a SIMD vector register" },
{AARCH64_OPND_CLASS_SIMD_REG, "Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a SIMD vector register" },
{AARCH64_OPND_CLASS_SIMD_REG, "Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD vector register" },
{AARCH64_OPND_CLASS_SIMD_REG, "Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD vector register" },
{AARCH64_OPND_CLASS_FP_REG, "VdD1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "the top half of a 128-bit FP/SIMD register" },
{AARCH64_OPND_CLASS_FP_REG, "VnD1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "the top half of a 128-bit FP/SIMD register" },
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "Ed", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rd}, "a SIMD vector element" },
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "En", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD vector element" },
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "Em", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD vector element" },
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "Em16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rm}, "a SIMD vector element limited to V0-V15" },
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LVn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "a SIMD vector register list" },
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LVt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a SIMD vector register list" },
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LVt_AL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a SIMD vector register list" },
{AARCH64_OPND_CLASS_SIMD_REGLIST, "LEt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a SIMD vector element list" },
{AARCH64_OPND_CLASS_IMMEDIATE, "CRn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRn}, "a 4-bit opcode field named for historical reasons C0 - C15" },
{AARCH64_OPND_CLASS_IMMEDIATE, "CRm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRm}, "a 4-bit opcode field named for historical reasons C0 - C15" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IDX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm4}, "an immediate as the index of the least significant byte" },
{AARCH64_OPND_CLASS_IMMEDIATE, "MASK", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm4_2}, "an immediate as the index of the least significant byte" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_VLSL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a left shift amount for an AdvSIMD register" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_VLSR", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a right shift amount for an AdvSIMD register" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMD_IMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMD_IMM_SFT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an 8-bit unsigned immediate with optional shift" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMD_FPIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an 8-bit floating-point constant" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SHLL_IMM", OPD_F_HAS_EXTRACTOR, {0}, "an immediate shift amount of 8, 16 or 32" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM0", 0, {0}, "0" },
{AARCH64_OPND_CLASS_IMMEDIATE, "FPIMM0", 0, {0}, "0.0" },
{AARCH64_OPND_CLASS_IMMEDIATE, "FPIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm8}, "an 8-bit floating-point constant" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMMR", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_immr}, "the right rotate amount" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMMS", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6}, "the leftmost bit number to be moved from the source" },
{AARCH64_OPND_CLASS_IMMEDIATE, "WIDTH", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6}, "the width of the bit-field" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6}, "an immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm6_2}, "an immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM3_OP1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_op1}, "a 3-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM3_OP2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_op2}, "a 3-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM4", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRm}, "a 4-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "UIMM7", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CRm, FLD_op2}, "a 7-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "BIT_NUM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_b5, FLD_b40}, "the bit number to be tested" },
{AARCH64_OPND_CLASS_IMMEDIATE, "EXCEPTION", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm16}, "a 16-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "CCMP_IMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm5}, "a 5-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SIMM5", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm5}, "a 5-bit signed immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "NZCV", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_nzcv}, "a flag bit specifier giving an alternative value for each flag" },
{AARCH64_OPND_CLASS_IMMEDIATE, "LIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_N,FLD_immr,FLD_imms}, "Logical immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "AIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_shift,FLD_imm12}, "a 12-bit unsigned immediate with optional left shift of 12 bits" },
{AARCH64_OPND_CLASS_IMMEDIATE, "HALF", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm16}, "a 16-bit immediate with optional left shift" },
{AARCH64_OPND_CLASS_IMMEDIATE, "FBITS", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_scale}, "the number of bits after the binary point in the fixed-point value" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_MOV", 0, {0}, "an immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_ROT1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_rotate1}, "a 2-bit rotation specifier for complex arithmetic operations" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_ROT2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_rotate2}, "a 2-bit rotation specifier for complex arithmetic operations" },
{AARCH64_OPND_CLASS_IMMEDIATE, "IMM_ROT3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_rotate3}, "a 1-bit rotation specifier for complex arithmetic operations" },
{AARCH64_OPND_CLASS_COND, "COND", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a condition" },
{AARCH64_OPND_CLASS_COND, "COND1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "one of the standard conditions, excluding AL and NV." },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_ADRP", OPD_F_SEXT | OPD_F_HAS_EXTRACTOR, {FLD_immhi, FLD_immlo}, "21-bit PC-relative address of a 4KB page" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL14", OPD_F_SEXT | OPD_F_SHIFT_BY_2 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm14}, "14-bit PC-relative address" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL19", OPD_F_SEXT | OPD_F_SHIFT_BY_2 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm19}, "19-bit PC-relative address" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL21", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_immhi,FLD_immlo}, "21-bit PC-relative address" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_PCREL26", OPD_F_SEXT | OPD_F_SHIFT_BY_2 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm26}, "26-bit PC-relative address" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMPLE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address with base register (no offset)" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_REGOFF", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address with register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM7", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm7,FLD_index2}, "an address with 7-bit signed immediate offset" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM9", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm9,FLD_index}, "an address with 9-bit signed immediate offset" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM9_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm9,FLD_index}, "an address with 9-bit negative or unaligned immediate offset" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_SIMM10", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_S_imm10,FLD_imm9,FLD_index}, "an address with 10-bit scaled, signed immediate offset" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_UIMM12", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_imm12}, "an address with scaled, unsigned immediate offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SIMD_ADDR_SIMPLE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address with base register (no offset)" },
{AARCH64_OPND_CLASS_ADDRESS, "ADDR_OFFSET", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_imm9,FLD_index}, "an address with an optional 8-bit signed immediate offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SIMD_ADDR_POST", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a post-indexed address with immediate or register increment" },
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a system register" },
{AARCH64_OPND_CLASS_SYSTEM, "PSTATEFIELD", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a PSTATE field name" },
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_AT", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an address translation operation specifier" },
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_DC", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a data cache maintenance operation specifier" },
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_IC", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "an instruction cache maintenance operation specifier" },
{AARCH64_OPND_CLASS_SYSTEM, "SYSREG_TLBI", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a TBL invalidation operation specifier" },
{AARCH64_OPND_CLASS_SYSTEM, "BARRIER", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a barrier option name" },
{AARCH64_OPND_CLASS_SYSTEM, "BARRIER_ISB", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "the ISB option name SY or an optional 4-bit unsigned immediate" },
{AARCH64_OPND_CLASS_SYSTEM, "PRFOP", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "a prefetch operation specifier" },
{AARCH64_OPND_CLASS_SYSTEM, "BARRIER_PSB", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {0}, "the PSB option name CSYNC" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x16", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 16" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4xVL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by VL" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x2xVL", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 2*VL" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x3xVL", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 3*VL" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S4x4xVL", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 4-bit signed offset, multiplied by 4*VL" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S6xVL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit signed offset, multiplied by VL" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_S9xVL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 9-bit signed offset, multiplied by VL" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6x2", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset, multiplied by 2" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6x4", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset, multiplied by 4" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RI_U6x8", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an address with a 6-bit unsigned offset, multiplied by 8" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_R", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with an optional scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR_LSL1", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR_LSL2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RR_LSL3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX", (0 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX_LSL1", (1 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX_LSL2", (2 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RX_LSL3", (3 << OPD_F_OD_LSB) | OPD_F_NO_ZR | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_Rm}, "an address with a scalar register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_LSL1", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_LSL2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_LSL3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW_14", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW_22", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW1_14", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW1_22", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW2_14", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW2_22", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW3_14", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_14}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_RZ_XTW3_22", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn,FLD_SVE_Zm_16,FLD_SVE_xs_22}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5x2", 1 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset, multiplied by 2" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5x4", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset, multiplied by 4" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZI_U5x8", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an address with a 5-bit unsigned offset, multiplied by 8" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZZ_LSL", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZZ_SXTW", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_ADDRESS, "SVE_ADDR_ZZ_UXTW", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn,FLD_SVE_Zm_16}, "an address with a vector register offset" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_AIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm9}, "a 9-bit unsigned arithmetic operand" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_ASIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm9}, "a 9-bit signed arithmetic operand" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_FPIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm8}, "an 8-bit floating-point immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_I1_HALF_ONE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i1}, "either 0.5 or 1.0" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_I1_HALF_TWO", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i1}, "either 0.5 or 2.0" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_I1_ZERO_ONE", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i1}, "either 0.0 or 1.0" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_IMM_ROT1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_rot1}, "a 1-bit rotation specifier for complex arithmetic operations" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_IMM_ROT2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_rot2}, "a 2-bit rotation specifier for complex arithmetic operations" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_INV_LIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_N,FLD_SVE_immr,FLD_SVE_imms}, "an inverted 13-bit logical immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_LIMM", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_N,FLD_SVE_immr,FLD_SVE_imms}, "a 13-bit logical immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_LIMM_MOV", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_N,FLD_SVE_immr,FLD_SVE_imms}, "a 13-bit logical move immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_PATTERN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_pattern}, "an enumeration value such as POW2" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_PATTERN_SCALED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_pattern}, "an enumeration value such as POW2" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_PRFOP", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_prfop}, "an enumeration value such as PLDL1KEEP" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pd}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg3}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg4_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg4_5}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg4_10", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg4_10}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pg4_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pg4_16}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pm}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pn}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_PRED_REG, "SVE_Pt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Pt}, "an SVE predicate register" },
{AARCH64_OPND_CLASS_INT_REG, "SVE_Rm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Rm}, "an integer register or zero" },
{AARCH64_OPND_CLASS_INT_REG, "SVE_Rn_SP", OPD_F_MAYBE_SP | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Rn}, "an integer register or SP" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHLIMM_PRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_SVE_imm5}, "a shift-left immediate operand" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHLIMM_UNPRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_imm5}, "a shift-left immediate operand" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHRIMM_PRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_SVE_imm5}, "a shift-right immediate operand" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SHRIMM_UNPRED", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_tszh,FLD_imm5}, "a shift-right immediate operand" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM5", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm5}, "a 5-bit signed immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM5B", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm5b}, "a 5-bit signed immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM6", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imms}, "a 6-bit signed immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_SIMM8", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm8}, "an 8-bit signed immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM3", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm3}, "a 3-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM7", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm7}, "a 7-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_imm8}, "an 8-bit unsigned immediate" },
{AARCH64_OPND_CLASS_IMMEDIATE, "SVE_UIMM8_53", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm5,FLD_imm3}, "an 8-bit unsigned immediate" },
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_VZn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a SIMD register" },
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vd}, "a SIMD register" },
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vm}, "a SIMD register" },
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vn}, "a SIMD register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_5}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_16}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zd}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_5}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_22_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i3h, FLD_SVE_Zm_16}, "an indexed SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an indexed SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_ZnxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a list of SVE vector registers" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "an SVE vector register" },
{AARCH64_OPND_CLASS_SVE_REG, "SVE_ZtxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of SVE vector registers" },
{AARCH64_OPND_CLASS_SIMD_ELEMENT, "SM3_IMM2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SM3_imm2}, "an indexed SM3 vector immediate" },
{AARCH64_OPND_CLASS_NIL, "", 0, {0}, "DUMMY" },
};
/* Indexed by an enum aarch64_op enumerator, the value is the offset of

View File

@ -344,22 +344,22 @@ aarch64_get_operand_desc (enum aarch64_opnd type)
/* Table of all conditional affixes. */
const aarch64_cond aarch64_conds[16] =
{
{{"eq", "none"}, 0x0},
{{"ne", "any"}, 0x1},
{{"cs", "hs", "nlast"}, 0x2},
{{"cc", "lo", "ul", "last"}, 0x3},
{{"mi", "first"}, 0x4},
{{"pl", "nfrst"}, 0x5},
{{"vs"}, 0x6},
{{"vc"}, 0x7},
{{"hi", "pmore"}, 0x8},
{{"ls", "plast"}, 0x9},
{{"ge", "tcont"}, 0xa},
{{"lt", "tstop"}, 0xb},
{{"gt"}, 0xc},
{{"le"}, 0xd},
{{"al"}, 0xe},
{{"nv"}, 0xf},
{{ "eq", "none" }, 0x0},
{{ "ne", "any" }, 0x1},
{{ "cs", "hs", "nlast" }, 0x2},
{{ "cc", "lo", "ul", "last" }, 0x3},
{{ "mi", "first" }, 0x4},
{{ "pl", "nfrst" }, 0x5},
{{ "vs" }, 0x6},
{{ "vc" }, 0x7},
{{ "hi", "pmore" }, 0x8},
{{ "ls", "plast" }, 0x9},
{{ "ge", "tcont" }, 0xa},
{{ "lt", "tstop" }, 0xb},
{{ "gt" }, 0xc},
{{ "le" }, 0xd},
{{ "al" }, 0xe},
{{ "nv" }, 0xf},
};
const aarch64_cond *
@ -382,22 +382,22 @@ get_inverted_cond (const aarch64_cond *cond)
which enables table-driven encoding/decoding for the modifiers. */
const struct aarch64_name_value_pair aarch64_operand_modifiers [] =
{
{"none", 0x0},
{"msl", 0x0},
{"ror", 0x3},
{"asr", 0x2},
{"lsr", 0x1},
{"lsl", 0x0},
{"uxtb", 0x0},
{"uxth", 0x1},
{"uxtw", 0x2},
{"uxtx", 0x3},
{"sxtb", 0x4},
{"sxth", 0x5},
{"sxtw", 0x6},
{"sxtx", 0x7},
{"mul", 0x0},
{"mul vl", 0x0},
{ "none", 0x0},
{ "msl", 0x0},
{ "ror", 0x3},
{ "asr", 0x2},
{ "lsr", 0x1},
{ "lsl", 0x0},
{ "uxtb", 0x0},
{ "uxth", 0x1},
{ "uxtw", 0x2},
{ "uxtx", 0x3},
{ "sxtb", 0x4},
{ "sxth", 0x5},
{ "sxtw", 0x6},
{ "sxtx", 0x7},
{ "mul", 0x0},
{ "mul vl", 0x0},
{NULL, 0},
};

View File

@ -3070,7 +3070,7 @@ struct aarch64_opcode aarch64_opcode_table[] =
FF16_INSN ("fcvtzu",0x1ef90000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
__FP_INSN ("fmov", 0x9eae0000, 0xfffffc00, float2int, 0, OP2 (Rd, VnD1), QL_XVD1, 0),
__FP_INSN ("fmov", 0x9eaf0000, 0xfffffc00, float2int, 0, OP2 (VdD1, Rn), QL_VD1X, 0),
{"fjcvtzs", 0x1e7e0000, 0xfffffc00, float2int, 0, FP_V8_3, OP2 (Rd, Fn), QL_FP2INT_W_D, 0, 0, NULL },
{ "fjcvtzs", 0x1e7e0000, 0xfffffc00, float2int, 0, FP_V8_3, OP2 (Rd, Fn), QL_FP2INT_W_D, 0, 0, NULL },
/* Floating-point conditional compare. */
__FP_INSN ("fccmp", 0x1e200400, 0xff200c10, floatccmp, 0, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP, F_FPTYPE),
FF16_INSN ("fccmp", 0x1ee00400, 0xff200c10, floatccmp, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP_H, F_FPTYPE),
@ -3250,13 +3250,13 @@ struct aarch64_opcode aarch64_opcode_table[] =
CORE_INSN ("ldp", 0x29400000, 0x7ec00000, ldstpair_off, 0, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
CORE_INSN ("stp", 0x2d000000, 0x3fc00000, ldstpair_off, 0, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
CORE_INSN ("ldp", 0x2d400000, 0x3fc00000, ldstpair_off, 0, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
{"ldpsw", 0x69400000, 0xffc00000, ldstpair_off, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0, 0, VERIFIER (ldpsw)},
{ "ldpsw", 0x69400000, 0xffc00000, ldstpair_off, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0, 0, VERIFIER (ldpsw)},
/* Load/store register pair (indexed). */
CORE_INSN ("stp", 0x28800000, 0x7ec00000, ldstpair_indexed, 0, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
CORE_INSN ("ldp", 0x28c00000, 0x7ec00000, ldstpair_indexed, 0, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
CORE_INSN ("stp", 0x2c800000, 0x3ec00000, ldstpair_indexed, 0, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
CORE_INSN ("ldp", 0x2cc00000, 0x3ec00000, ldstpair_indexed, 0, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
{"ldpsw", 0x68c00000, 0xfec00000, ldstpair_indexed, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0, 0, VERIFIER (ldpsw)},
{ "ldpsw", 0x68c00000, 0xfec00000, ldstpair_indexed, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0, 0, VERIFIER (ldpsw)},
/* Load register (literal). */
CORE_INSN ("ldr", 0x18000000, 0xbf000000, loadlit, OP_LDR_LIT, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_GPRSIZE_IN_Q),
CORE_INSN ("ldr", 0x1c000000, 0x3f000000, loadlit, OP_LDRV_LIT, OP2 (Ft, ADDR_PCREL19), QL_FP_PCREL, 0),
@ -3480,8 +3480,8 @@ struct aarch64_opcode aarch64_opcode_table[] =
V8_3_INSN ("pacib1716", 0xd503215f, 0xffffffff, ic_system, OP0 (), {{0}}, F_ALIAS),
V8_3_INSN ("autia1716", 0xd503219f, 0xffffffff, ic_system, OP0 (), {{0}}, F_ALIAS),
V8_3_INSN ("autib1716", 0xd50321df, 0xffffffff, ic_system, OP0 (), {{0}}, F_ALIAS),
{"esb", 0xd503221f, 0xffffffff, ic_system, 0, RAS, OP0 (), {{0}}, F_ALIAS, 0, NULL},
{"psb", 0xd503223f, 0xffffffff, ic_system, 0, STAT_PROFILE, OP1 (BARRIER_PSB), {{0}}, F_ALIAS, 0, NULL},
{ "esb", 0xd503221f, 0xffffffff, ic_system, 0, RAS, OP0 (), {{0}}, F_ALIAS, 0, NULL},
{ "psb", 0xd503223f, 0xffffffff, ic_system, 0, STAT_PROFILE, OP1 (BARRIER_PSB), {{0}}, F_ALIAS, 0, NULL},
CORE_INSN ("clrex", 0xd503305f, 0xfffff0ff, ic_system, 0, OP1 (UIMM4), {{0}}, F_OPD0_OPT | F_DEFAULT (0xF)),
CORE_INSN ("dsb", 0xd503309f, 0xfffff0ff, ic_system, 0, OP1 (BARRIER), {{0}}, F_HAS_ALIAS),
CORE_INSN ("ssbb", 0xd503309f, 0xffffffff, ic_system, 0, OP0 (), {{0}}, F_ALIAS),

View File

@ -52,7 +52,7 @@ static int strcmpnull(const char *a, const char *b) {
return (a && b) ? strcmp (a, b) : -1;
}
// static const char *const arm_shift[] = {"lsl", "lsr", "asr", "ror"};
// static const char *const arm_shift[] = { "lsl", "lsr", "asr", "ror" };
static ArmOp ops[] = {
{ "adc", 0xa000, TYPE_ARI },
@ -136,18 +136,18 @@ static ArmOp ops[] = {
{ "teq", 0x3001, TYPE_TST },
{ "tst", 0x1001, TYPE_TST },
{"lsr", 0x3000a0e1, TYPE_SHFT},
{"asr", 0x5000a0e1, TYPE_SHFT},
{"lsl", 0x1000a0e1, TYPE_SHFT},
{"ror", 0x7000a0e1, TYPE_SHFT},
{ "lsr", 0x3000a0e1, TYPE_SHFT},
{ "asr", 0x5000a0e1, TYPE_SHFT},
{ "lsl", 0x1000a0e1, TYPE_SHFT},
{ "ror", 0x7000a0e1, TYPE_SHFT},
{"rev16", 0xb00fbf06, TYPE_REV},
{"revsh", 0xb00fff06, TYPE_REV},
{"rev", 0x300fbf06, TYPE_REV},
{"rbit", 0x300fff06, TYPE_REV},
{ "rev16", 0xb00fbf06, TYPE_REV},
{ "revsh", 0xb00fff06, TYPE_REV},
{ "rev", 0x300fbf06, TYPE_REV},
{ "rbit", 0x300fff06, TYPE_REV},
{"mrc", 0x100010ee, TYPE_COPROC},
{"setend", 0x000001f1, TYPE_ENDIAN},
{ "mrc", 0x100010ee, TYPE_COPROC},
{ "setend", 0x000001f1, TYPE_ENDIAN},
{ "clz", 0x000f6f01, TYPE_CLZ},
{ "neg", 0x7000, TYPE_NEG },

View File

@ -87,9 +87,11 @@ typedef struct Opcode_t {
static int get_mem_option(char *token) {
// values 4, 8, 12, are unused. XXX to adjust
const char *options[] = {"sy", "st", "ld", "xxx", "ish", "ishst",
"ishld", "xxx", "nsh", "nshst", "nshld",
"xxx", "osh", "oshst", "oshld", NULL};
const char *options[] = {
"sy", "st", "ld", "xxx", "ish", "ishst",
"ishld", "xxx", "nsh", "nshst", "nshld",
"xxx", "osh", "oshst", "oshld", NULL
};
int i = 0;
while (options[i]) {
if (!r_str_casecmp (token, options[i])) {

File diff suppressed because it is too large Load Diff

View File

@ -35,9 +35,9 @@ static int getnum(const char *s) {
// radare tolower instruction in rasm, so we use 'x' instead of 'X' etc.
specialregs RegsTable[REGS_TABLE] = {
{"-x", OPERAND_XP}, {"x", OPERAND_X}, {"x+", OPERAND_XP},
{"-y", OPERAND_YP}, {"y", OPERAND_Y}, {"y+", OPERAND_YP},
{"-z", OPERAND_ZP}, {"z", OPERAND_Z}, {"z+", OPERAND_ZP},
{ "-x", OPERAND_XP}, { "x", OPERAND_X}, { "x+", OPERAND_XP},
{ "-y", OPERAND_YP}, { "y", OPERAND_Y}, { "y+", OPERAND_YP},
{ "-z", OPERAND_ZP}, { "z", OPERAND_Z}, { "z+", OPERAND_ZP},
};

View File

@ -44,150 +44,150 @@
*/
instructionInfo instructionSet[AVR_TOTAL_INSTRUCTIONS] = {
{"break", 0x9598, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"clc", 0x9488, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"clh", 0x94d8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"cli", 0x94f8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"cln", 0x94a8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"cls", 0x94c8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"clt", 0x94e8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"clv", 0x94b8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"clz", 0x9498, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"eicall", 0x9519, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"eijmp", 0x9419, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"elpm", 0x95d8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"icall", 0x9509, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"ijmp", 0x9409, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"lpm", 0x95c8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"nop", 0x0000, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"ret", 0x9508, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"reti", 0x9518, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"sec", 0x9408, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"seh", 0x9458, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"sei", 0x9478, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"sen", 0x9428, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"ses", 0x9448, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"set", 0x9468, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"sev", 0x9438, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"sez", 0x9418, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"sleep", 0x9588, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"spm", 0x95e8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"spm", 0x95f8, 1, {0x0000, 0x0000}, {OPERAND_ZP, OPERAND_NONE}},
{"wdr", 0x95a8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{"des", 0x940b, 1, {0x00f0, 0x0000}, {OPERAND_DES_ROUND, OPERAND_NONE}},
{"asr", 0x9405, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"bclr", 0x9488, 1, {0x0070, 0x0000}, {OPERAND_BIT, OPERAND_NONE}},
{"brcc", 0xf400, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brcs", 0xf000, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"breq", 0xf001, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brge", 0xf404, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brhc", 0xf405, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brhs", 0xf005, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brid", 0xf407, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brie", 0xf007, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brlo", 0xf000, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brlt", 0xf004, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brmi", 0xf002, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brne", 0xf401, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brpl", 0xf402, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brsh", 0xf400, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brtc", 0xf406, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brts", 0xf006, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brvc", 0xf403, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"brvs", 0xf003, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{"bset", 0x9408, 1, {0x0070, 0x0000}, {OPERAND_BIT, OPERAND_NONE}},
{"call", 0x940e, 1, {0x01f1, 0x0000}, {OPERAND_LONG_ABSOLUTE_ADDRESS, OPERAND_NONE}},
{"clr", 0x2400, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{"com", 0x9400, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"dec", 0x940a, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"inc", 0x9403, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"jmp", 0x940c, 1, {0x01f1, 0x0000}, {OPERAND_LONG_ABSOLUTE_ADDRESS, OPERAND_NONE}},
{"lpm", 0x9004, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Z}},
{"lpm", 0x9005, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_ZP}},
{"lsl", 0x0c00, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{"lsr", 0x9406, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"neg", 0x9401, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"pop", 0x900f, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"xch", 0x9204, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{"las", 0x9205, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{"lac", 0x9206, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{"lat", 0x9207, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{"push", 0x920f, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"rcall", 0xd000, 1, {0x0fff, 0x0000}, {OPERAND_RELATIVE_ADDRESS, OPERAND_NONE}},
{"rjmp", 0xc000, 1, {0x0fff, 0x0000}, {OPERAND_RELATIVE_ADDRESS, OPERAND_NONE}},
{"rol", 0x1c00, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{"ror", 0x9407, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"ser", 0xef0f, 1, {0x00f0, 0x0000}, {OPERAND_REGISTER_STARTR16, OPERAND_NONE}},
{"swap", 0x9402, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{"tst", 0x2000, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{ "break", 0x9598, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "clc", 0x9488, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "clh", 0x94d8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "cli", 0x94f8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "cln", 0x94a8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "cls", 0x94c8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "clt", 0x94e8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "clv", 0x94b8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "clz", 0x9498, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "eicall", 0x9519, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "eijmp", 0x9419, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "elpm", 0x95d8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "icall", 0x9509, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "ijmp", 0x9409, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "lpm", 0x95c8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "nop", 0x0000, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "ret", 0x9508, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "reti", 0x9518, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "sec", 0x9408, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "seh", 0x9458, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "sei", 0x9478, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "sen", 0x9428, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "ses", 0x9448, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "set", 0x9468, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "sev", 0x9438, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "sez", 0x9418, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "sleep", 0x9588, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "spm", 0x95e8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "spm", 0x95f8, 1, {0x0000, 0x0000}, {OPERAND_ZP, OPERAND_NONE}},
{ "wdr", 0x95a8, 0, {0x0000, 0x0000}, {OPERAND_NONE, OPERAND_NONE}},
{ "des", 0x940b, 1, {0x00f0, 0x0000}, {OPERAND_DES_ROUND, OPERAND_NONE}},
{ "asr", 0x9405, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "bclr", 0x9488, 1, {0x0070, 0x0000}, {OPERAND_BIT, OPERAND_NONE}},
{ "brcc", 0xf400, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brcs", 0xf000, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "breq", 0xf001, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brge", 0xf404, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brhc", 0xf405, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brhs", 0xf005, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brid", 0xf407, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brie", 0xf007, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brlo", 0xf000, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brlt", 0xf004, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brmi", 0xf002, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brne", 0xf401, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brpl", 0xf402, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brsh", 0xf400, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brtc", 0xf406, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brts", 0xf006, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brvc", 0xf403, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "brvs", 0xf003, 1, {0x03f8, 0x0000}, {OPERAND_BRANCH_ADDRESS, OPERAND_NONE}},
{ "bset", 0x9408, 1, {0x0070, 0x0000}, {OPERAND_BIT, OPERAND_NONE}},
{ "call", 0x940e, 1, {0x01f1, 0x0000}, {OPERAND_LONG_ABSOLUTE_ADDRESS, OPERAND_NONE}},
{ "clr", 0x2400, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{ "com", 0x9400, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "dec", 0x940a, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "inc", 0x9403, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "jmp", 0x940c, 1, {0x01f1, 0x0000}, {OPERAND_LONG_ABSOLUTE_ADDRESS, OPERAND_NONE}},
{ "lpm", 0x9004, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Z}},
{ "lpm", 0x9005, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_ZP}},
{ "lsl", 0x0c00, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{ "lsr", 0x9406, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "neg", 0x9401, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "pop", 0x900f, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "xch", 0x9204, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{ "las", 0x9205, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{ "lac", 0x9206, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{ "lat", 0x9207, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{ "push", 0x920f, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "rcall", 0xd000, 1, {0x0fff, 0x0000}, {OPERAND_RELATIVE_ADDRESS, OPERAND_NONE}},
{ "rjmp", 0xc000, 1, {0x0fff, 0x0000}, {OPERAND_RELATIVE_ADDRESS, OPERAND_NONE}},
{ "rol", 0x1c00, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{ "ror", 0x9407, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "ser", 0xef0f, 1, {0x00f0, 0x0000}, {OPERAND_REGISTER_STARTR16, OPERAND_NONE}},
{ "swap", 0x9402, 1, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_NONE}},
{ "tst", 0x2000, 1, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER_GHOST}},
{"adc", 0x1c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"add", 0x0c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"adiw", 0x9600, 2, {0x0030, 0x00cf}, {OPERAND_REGISTER_EVEN_PAIR_STARTR24, OPERAND_DATA}},
{"and", 0x2000, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"andi", 0x7000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"bld", 0xf800, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{"brbc", 0xf400, 2, {0x0007, 0x03f8}, {OPERAND_BIT, OPERAND_BRANCH_ADDRESS}},
{"brbs", 0xf000, 2, {0x0007, 0x03f8}, {OPERAND_BIT, OPERAND_BRANCH_ADDRESS}},
{"bst", 0xfa00, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{"cbi", 0x9800, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{"cbr", 0x7000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_COMPLEMENTED_DATA}},
{"cp", 0x1400, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"cpc", 0x0400, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"cpi", 0x3000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"cpse", 0x1000, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"elpm", 0x9006, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Z}},
{"elpm", 0x9007, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_ZP}},
{"eor", 0x2400, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"fmul", 0x0308, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{"fmuls", 0x0380, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{"fmulsu", 0x0388, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{"in", 0xb000, 2, {0x01f0, 0x060f}, {OPERAND_REGISTER, OPERAND_DATA}},
{"ld", 0x900c, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_X}},
{"ld", 0x900d, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_XP}},
{"ld", 0x900e, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_MX}},
{"ld", 0x8008, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Y}},
{"ld", 0x9009, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_YP}},
{"ld", 0x900a, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_MY}},
{"ld", 0x8000, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Z}},
{"ld", 0x9001, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_ZP}},
{"ld", 0x9002, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_MZ}},
{"ldd", 0x8008, 2, {0x01f0, 0x2c07}, {OPERAND_REGISTER, OPERAND_YPQ}},
{"ldd", 0x8000, 2, {0x01f0, 0x2c07}, {OPERAND_REGISTER, OPERAND_ZPQ}},
{"ldi", 0xe000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"std", 0x8208, 2, {0x2c07, 0x01f0}, {OPERAND_YPQ, OPERAND_REGISTER}},
{"std", 0x8200, 2, {0x2c07, 0x01f0}, {OPERAND_ZPQ, OPERAND_REGISTER}},
{"lds", 0x9000, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_LONG_ABSOLUTE_ADDRESS}},
{"lds", 0xA000, 2, {0x00f0, 0x070f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"mov", 0x2c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"movw", 0x0100, 2, {0x00f0, 0x000f}, {OPERAND_REGISTER_EVEN_PAIR, OPERAND_REGISTER_EVEN_PAIR}},
{"mul", 0x9c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"muls", 0x0200, 2, {0x00f0, 0x000f}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{"mulsu", 0x0300, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{"or", 0x2800, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"ori", 0x6000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"out", 0xb800, 2, {0x060f, 0x01f0}, {OPERAND_IO_REGISTER, OPERAND_REGISTER}},
{"sbc", 0x0800, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"sbci", 0x4000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"sbi", 0x9a00, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{"sbic", 0x9900, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{"sbis", 0x9b00, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{"sbiw", 0x9700, 2, {0x0030, 0x00cf}, {OPERAND_REGISTER_EVEN_PAIR_STARTR24, OPERAND_DATA}},
{"sbr", 0x6000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{"sbrc", 0xfc00, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{"sbrs", 0xfe00, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{"st", 0x920c, 2, {0x0000, 0x01f0}, {OPERAND_X, OPERAND_REGISTER}},
{"st", 0x920d, 2, {0x0000, 0x01f0}, {OPERAND_XP, OPERAND_REGISTER}},
{"st", 0x920e, 2, {0x0000, 0x01f0}, {OPERAND_MX, OPERAND_REGISTER}},
{"st", 0x8208, 2, {0x0000, 0x01f0}, {OPERAND_Y, OPERAND_REGISTER}},
{"st", 0x9209, 2, {0x0000, 0x01f0}, {OPERAND_YP, OPERAND_REGISTER}},
{"st", 0x920a, 2, {0x0000, 0x01f0}, {OPERAND_MY, OPERAND_REGISTER}},
{"st", 0x8200, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{"st", 0x9201, 2, {0x0000, 0x01f0}, {OPERAND_ZP, OPERAND_REGISTER}},
{"st", 0x9202, 2, {0x0000, 0x01f0}, {OPERAND_MZ, OPERAND_REGISTER}},
{"sts", 0x9200, 2, {0x0000, 0x01f0}, {OPERAND_LONG_ABSOLUTE_ADDRESS, OPERAND_REGISTER}},
{"sts", 0xA800, 2, {0x00f0, 0x070f}, {OPERAND_DATA, OPERAND_REGISTER_STARTR16}}, // was {OPERAND_REGISTER_STARTR16, OPERAND_DATA}, bug?
{"sub", 0x1800, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{"subi", 0x5000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{".word", 0x0000, 1, {0xFFFF, 0x0000}, {OPERAND_WORD_DATA, OPERAND_NONE}},
{ "adc", 0x1c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "add", 0x0c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "adiw", 0x9600, 2, {0x0030, 0x00cf}, {OPERAND_REGISTER_EVEN_PAIR_STARTR24, OPERAND_DATA}},
{ "and", 0x2000, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "andi", 0x7000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "bld", 0xf800, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{ "brbc", 0xf400, 2, {0x0007, 0x03f8}, {OPERAND_BIT, OPERAND_BRANCH_ADDRESS}},
{ "brbs", 0xf000, 2, {0x0007, 0x03f8}, {OPERAND_BIT, OPERAND_BRANCH_ADDRESS}},
{ "bst", 0xfa00, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{ "cbi", 0x9800, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{ "cbr", 0x7000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_COMPLEMENTED_DATA}},
{ "cp", 0x1400, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "cpc", 0x0400, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "cpi", 0x3000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "cpse", 0x1000, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "elpm", 0x9006, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Z}},
{ "elpm", 0x9007, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_ZP}},
{ "eor", 0x2400, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "fmul", 0x0308, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{ "fmuls", 0x0380, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{ "fmulsu", 0x0388, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{ "in", 0xb000, 2, {0x01f0, 0x060f}, {OPERAND_REGISTER, OPERAND_DATA}},
{ "ld", 0x900c, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_X}},
{ "ld", 0x900d, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_XP}},
{ "ld", 0x900e, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_MX}},
{ "ld", 0x8008, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Y}},
{ "ld", 0x9009, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_YP}},
{ "ld", 0x900a, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_MY}},
{ "ld", 0x8000, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_Z}},
{ "ld", 0x9001, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_ZP}},
{ "ld", 0x9002, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_MZ}},
{ "ldd", 0x8008, 2, {0x01f0, 0x2c07}, {OPERAND_REGISTER, OPERAND_YPQ}},
{ "ldd", 0x8000, 2, {0x01f0, 0x2c07}, {OPERAND_REGISTER, OPERAND_ZPQ}},
{ "ldi", 0xe000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "std", 0x8208, 2, {0x2c07, 0x01f0}, {OPERAND_YPQ, OPERAND_REGISTER}},
{ "std", 0x8200, 2, {0x2c07, 0x01f0}, {OPERAND_ZPQ, OPERAND_REGISTER}},
{ "lds", 0x9000, 2, {0x01f0, 0x0000}, {OPERAND_REGISTER, OPERAND_LONG_ABSOLUTE_ADDRESS}},
{ "lds", 0xA000, 2, {0x00f0, 0x070f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "mov", 0x2c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "movw", 0x0100, 2, {0x00f0, 0x000f}, {OPERAND_REGISTER_EVEN_PAIR, OPERAND_REGISTER_EVEN_PAIR}},
{ "mul", 0x9c00, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "muls", 0x0200, 2, {0x00f0, 0x000f}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{ "mulsu", 0x0300, 2, {0x0070, 0x0007}, {OPERAND_REGISTER_STARTR16, OPERAND_REGISTER_STARTR16}},
{ "or", 0x2800, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "ori", 0x6000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "out", 0xb800, 2, {0x060f, 0x01f0}, {OPERAND_IO_REGISTER, OPERAND_REGISTER}},
{ "sbc", 0x0800, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "sbci", 0x4000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "sbi", 0x9a00, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{ "sbic", 0x9900, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{ "sbis", 0x9b00, 2, {0x00f8, 0x0007}, {OPERAND_IO_REGISTER, OPERAND_BIT}},
{ "sbiw", 0x9700, 2, {0x0030, 0x00cf}, {OPERAND_REGISTER_EVEN_PAIR_STARTR24, OPERAND_DATA}},
{ "sbr", 0x6000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ "sbrc", 0xfc00, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{ "sbrs", 0xfe00, 2, {0x01f0, 0x0007}, {OPERAND_REGISTER, OPERAND_BIT}},
{ "st", 0x920c, 2, {0x0000, 0x01f0}, {OPERAND_X, OPERAND_REGISTER}},
{ "st", 0x920d, 2, {0x0000, 0x01f0}, {OPERAND_XP, OPERAND_REGISTER}},
{ "st", 0x920e, 2, {0x0000, 0x01f0}, {OPERAND_MX, OPERAND_REGISTER}},
{ "st", 0x8208, 2, {0x0000, 0x01f0}, {OPERAND_Y, OPERAND_REGISTER}},
{ "st", 0x9209, 2, {0x0000, 0x01f0}, {OPERAND_YP, OPERAND_REGISTER}},
{ "st", 0x920a, 2, {0x0000, 0x01f0}, {OPERAND_MY, OPERAND_REGISTER}},
{ "st", 0x8200, 2, {0x0000, 0x01f0}, {OPERAND_Z, OPERAND_REGISTER}},
{ "st", 0x9201, 2, {0x0000, 0x01f0}, {OPERAND_ZP, OPERAND_REGISTER}},
{ "st", 0x9202, 2, {0x0000, 0x01f0}, {OPERAND_MZ, OPERAND_REGISTER}},
{ "sts", 0x9200, 2, {0x0000, 0x01f0}, {OPERAND_LONG_ABSOLUTE_ADDRESS, OPERAND_REGISTER}},
{ "sts", 0xA800, 2, {0x00f0, 0x070f}, {OPERAND_DATA, OPERAND_REGISTER_STARTR16}}, // was {OPERAND_REGISTER_STARTR16, OPERAND_DATA}, bug?
{ "sub", 0x1800, 2, {0x01f0, 0x020f}, {OPERAND_REGISTER, OPERAND_REGISTER}},
{ "subi", 0x5000, 2, {0x00f0, 0x0f0f}, {OPERAND_REGISTER_STARTR16, OPERAND_DATA}},
{ ".word", 0x0000, 1, {0xFFFF, 0x0000}, {OPERAND_WORD_DATA, OPERAND_NONE}},
};

File diff suppressed because it is too large Load Diff

View File

@ -112,11 +112,11 @@ static const char *const wide_add_cond_names[] =
static const char *const logical_cond_names[] =
{
"", ",=", ",<", ",<=", 0, 0, 0, ",od",
",tr", ",<>", ",>=", ",>", 0, 0, 0, ",ev"};
",tr", ",<>", ",>=", ",>", 0, 0, 0, ",ev" };
static const char *const logical_cond_64_names[] =
{
",*", ",*=", ",*<", ",*<=", 0, 0, 0, ",*od",
",*tr", ",*<>", ",*>=", ",*>", 0, 0, 0, ",*ev"};
",*tr", ",*<>", ",*>=", ",*>", 0, 0, 0, ",*ev" };
static const char *const unit_cond_names[] =
{
"", ",swz", ",sbz", ",shz", ",sdc", ",swc", ",sbc", ",shc",
@ -139,15 +139,15 @@ static const char *const bb_cond_64_names[] =
{
",*<", ",*>="
};
static const char *const index_compl_names[] = {"", ",m", ",s", ",sm"};
static const char *const short_ldst_compl_names[] = {"", ",ma", "", ",mb"};
static const char *const index_compl_names[] = { "", ",m", ",s", ",sm" };
static const char *const short_ldst_compl_names[] = { "", ",ma", "", ",mb" };
static const char *const short_bytes_compl_names[] =
{
"", ",b,m", ",e", ",e,m"
};
static const char *const float_format_names[] = {",sgl", ",dbl", "", ",quad"};
static const char *const fcnv_fixed_names[] = {",w", ",dw", "", ",qw"};
static const char *const fcnv_ufixed_names[] = {",uw", ",udw", "", ",uqw"};
static const char *const float_format_names[] = { ",sgl", ",dbl", "", ",quad" };
static const char *const fcnv_fixed_names[] = { ",w", ",dw", "", ",qw" };
static const char *const fcnv_ufixed_names[] = { ",uw", ",udw", "", ",uqw" };
static const char *const float_comp_names[] =
{
",false?", ",false", ",?", ",!<=>", ",=", ",=t", ",?=", ",!<>",
@ -155,10 +155,10 @@ static const char *const float_comp_names[] =
",!?<=", ",>", ",?>", ",!<=", ",!?<", ",>=", ",?>=", ",!<",
",!?=", ",<>", ",!=", ",!=t", ",!?", ",<=>", ",true?", ",true"
};
static const char *const signed_unsigned_names[] = {",u", ",s"};
static const char *const mix_half_names[] = {",l", ",r"};
static const char *const saturation_names[] = {",us", ",ss", 0, ""};
static const char *const read_write_names[] = {",r", ",w"};
static const char *const signed_unsigned_names[] = { ",u", ",s" };
static const char *const mix_half_names[] = { ",l", ",r" };
static const char *const saturation_names[] = { ",us", ",ss", 0, "" };
static const char *const read_write_names[] = { ",r", ",w" };
static const char *const add_compl_names[] = { 0, "", ",l", ",tsv" };
/* For a bunch of different instructions form an index into a

View File

@ -718,35 +718,35 @@ print_insn_arg (const char *d,
struct regname { char * name; int value; };
static const struct regname names[] =
{
{"%sfc", 0x000}, {"%dfc", 0x001}, {"%cacr", 0x002},
{"%tc", 0x003}, {"%itt0",0x004}, {"%itt1", 0x005},
{"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008},
{"%rgpiobar", 0x009}, {"%acr4",0x00c},
{"%acr5",0x00d}, {"%acr6",0x00e}, {"%acr7", 0x00f},
{"%usp", 0x800}, {"%vbr", 0x801}, {"%caar", 0x802},
{"%msp", 0x803}, {"%isp", 0x804},
{"%pc", 0x80f},
{ "%sfc", 0x000}, { "%dfc", 0x001}, { "%cacr", 0x002},
{ "%tc", 0x003}, { "%itt0",0x004}, { "%itt1", 0x005},
{ "%dtt0",0x006}, { "%dtt1",0x007}, { "%buscr",0x008},
{ "%rgpiobar", 0x009}, { "%acr4",0x00c},
{ "%acr5",0x00d}, { "%acr6",0x00e}, { "%acr7", 0x00f},
{ "%usp", 0x800}, { "%vbr", 0x801}, { "%caar", 0x802},
{ "%msp", 0x803}, { "%isp", 0x804},
{ "%pc", 0x80f},
/* Reg c04 is sometimes called flashbar or rambar.
Reg c05 is also sometimes called rambar. */
{"%rambar0", 0xc04}, {"%rambar1", 0xc05},
{ "%rambar0", 0xc04}, { "%rambar1", 0xc05},
/* reg c0e is sometimes called mbar2 or secmbar.
reg c0f is sometimes called mbar. */
{"%mbar0", 0xc0e}, {"%mbar1", 0xc0f},
{ "%mbar0", 0xc0e}, { "%mbar1", 0xc0f},
/* Should we be calling this psr like we do in case 'Y'? */
{"%mmusr",0x805},
{ "%mmusr",0x805},
{"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808},
{ "%urp", 0x806}, { "%srp", 0x807}, { "%pcr", 0x808},
/* Fido added these. */
{"%cac", 0xffe}, {"%mbo", 0xfff}
{ "%cac", 0xffe}, { "%mbo", 0xfff}
};
/* Alternate names for v4e (MCF5407/5445x/MCF547x/MCF548x), at least. */
static const struct regname names_v4e[] =
{
{"%asid",0x003}, {"%acr0",0x004}, {"%acr1",0x005},
{"%acr2",0x006}, {"%acr3",0x007}, {"%mmubar",0x008},
{ "%asid",0x003}, { "%acr0",0x004}, { "%acr1",0x005},
{ "%acr2",0x006}, { "%acr3",0x007}, { "%mmubar",0x008},
};
unsigned int arch_mask;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -214,272 +214,272 @@ decode_mips16_operand (char type, bfd_boolean extended_p)
const struct mips_opcode mips16_opcodes[] =
{
/* name, args, match, mask, pinfo, pinfo2, membership, ase, exclusions */
{"nop", "", 0x6500, 0xffff, 0, SH|RD_16|AL, I1, 0, 0 }, /* move $0,$Z */
{"la", "x,A", 0x0800, 0xf800, WR_1, RD_PC|AL, I1, 0, 0 },
{"abs", "x,w", 0, (int) M_ABS, INSN_MACRO, 0, I1, 0, 0 },
{"addiu", "y,x,F", 0x4000, 0xf810, WR_1|RD_2, 0, I1, 0, 0 },
{"addiu", "x,k", 0x4800, 0xf800, MOD_1, 0, I1, 0, 0 },
{"addiu", "S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{"addiu", "S,S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{"addiu", "x,P,V", 0x0800, 0xf800, WR_1, RD_PC, I1, 0, 0 },
{"addiu", "x,S,V", 0x0000, 0xf800, WR_1, SH|RD_SP, 0, E2, 0 },
{"addiu", "x,S,V", 0x0000, 0xf800, WR_1, RD_SP, I1, 0, 0 },
{"addiu", "x,S,V", 0xf0000000, 0xf800f8e0, WR_1, RD_SP, 0, E2, 0 },
{"addiu", "x,G,V", 0xf0000020, 0xf800f8e0, WR_1|RD_2, 0, 0, E2, 0 },
{"addu", "z,v,y", 0xe001, 0xf803, WR_1|RD_2|RD_3, SH, I1, 0, 0 },
{"addu", "y,x,F", 0x4000, 0xf810, WR_1|RD_2, 0, I1, 0, 0 },
{"addu", "x,k", 0x4800, 0xf800, MOD_1, 0, I1, 0, 0 },
{"addu", "S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{"addu", "S,S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{"addu", "x,P,V", 0x0800, 0xf800, WR_1, RD_PC, I1, 0, 0 },
{"addu", "x,S,V", 0x0000, 0xf800, WR_1, SH|RD_SP, 0, E2, 0 },
{"addu", "x,S,V", 0x0000, 0xf800, WR_1, RD_SP, I1, 0, 0 },
{"addu", "x,S,V", 0xf0000000, 0xf800f8e0, WR_1, RD_SP, 0, E2, 0 },
{"addu", "x,G,V", 0xf0000020, 0xf800f8e0, WR_1|RD_2, 0, 0, E2, 0 },
{"and", "x,y", 0xe80c, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"andi", "x,u", 0xf0006860, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{"b", "q", 0x1000, 0xf800, 0, UBR, I1, 0, 0 },
{"beq", "x,y,p", 0, (int) M_BEQ, INSN_MACRO, 0, I1, 0, 0 },
{"beq", "x,I,p", 0, (int) M_BEQ_I, INSN_MACRO, 0, I1, 0, 0 },
{"beqz", "x,p", 0x2000, 0xf800, RD_1, CBR, I1, 0, 0 },
{"bge", "x,y,p", 0, (int) M_BGE, INSN_MACRO, 0, I1, 0, 0 },
{"bge", "x,I,p", 0, (int) M_BGE_I, INSN_MACRO, 0, I1, 0, 0 },
{"bgeu", "x,y,p", 0, (int) M_BGEU, INSN_MACRO, 0, I1, 0, 0 },
{"bgeu", "x,I,p", 0, (int) M_BGEU_I, INSN_MACRO, 0, I1, 0, 0 },
{"bgt", "x,y,p", 0, (int) M_BGT, INSN_MACRO, 0, I1, 0, 0 },
{"bgt", "x,I,p", 0, (int) M_BGT_I, INSN_MACRO, 0, I1, 0, 0 },
{"bgtu", "x,y,p", 0, (int) M_BGTU, INSN_MACRO, 0, I1, 0, 0 },
{"bgtu", "x,I,p", 0, (int) M_BGTU_I, INSN_MACRO, 0, I1, 0, 0 },
{"ble", "x,y,p", 0, (int) M_BLE, INSN_MACRO, 0, I1, 0, 0 },
{"ble", "x,I,p", 0, (int) M_BLE_I, INSN_MACRO, 0, I1, 0, 0 },
{"bleu", "x,y,p", 0, (int) M_BLEU, INSN_MACRO, 0, I1, 0, 0 },
{"bleu", "x,I,p", 0, (int) M_BLEU_I, INSN_MACRO, 0, I1, 0, 0 },
{"blt", "x,y,p", 0, (int) M_BLT, INSN_MACRO, 0, I1, 0, 0 },
{"blt", "x,I,p", 0, (int) M_BLT_I, INSN_MACRO, 0, I1, 0, 0 },
{"bltu", "x,y,p", 0, (int) M_BLTU, INSN_MACRO, 0, I1, 0, 0 },
{"bltu", "x,I,p", 0, (int) M_BLTU_I, INSN_MACRO, 0, I1, 0, 0 },
{"bne", "x,y,p", 0, (int) M_BNE, INSN_MACRO, 0, I1, 0, 0 },
{"bne", "x,I,p", 0, (int) M_BNE_I, INSN_MACRO, 0, I1, 0, 0 },
{"bnez", "x,p", 0x2800, 0xf800, RD_1, CBR, I1, 0, 0 },
{"break", "", 0xe805, 0xffff, TRAP, SH, I1, 0, 0 },
{"break", "6", 0xe805, 0xf81f, TRAP, SH, I1, 0, 0 },
{"bteqz", "p", 0x6000, 0xff00, RD_T, CBR, I1, 0, 0 },
{"btnez", "p", 0x6100, 0xff00, RD_T, CBR, I1, 0, 0 },
{"cache", "T,9(x)", 0xf000d0a0, 0xfe00f8e0, RD_3, 0, 0, E2, 0 },
{"cmpi", "x,U", 0x7000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{"cmp", "x,y", 0xe80a, 0xf81f, RD_1|RD_2|WR_T, SH, I1, 0, 0 },
{"cmp", "x,U", 0x7000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{"dla", "y,E", 0xfe00, 0xff00, WR_1, RD_PC|AL, I3, 0, 0 },
{"daddiu", "y,x,F", 0x4010, 0xf810, WR_1|RD_2, 0, I3, 0, 0 },
{"daddiu", "y,j", 0xfd00, 0xff00, MOD_1, 0, I3, 0, 0 },
{"daddiu", "S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{"daddiu", "S,S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{"daddiu", "y,P,W", 0xfe00, 0xff00, WR_1, RD_PC, I3, 0, 0 },
{"daddiu", "y,S,W", 0xff00, 0xff00, WR_1, RD_SP, I3, 0, 0 },
{"daddu", "z,v,y", 0xe000, 0xf803, WR_1|RD_2|RD_3, SH, I3, 0, 0 },
{"daddu", "y,x,F", 0x4010, 0xf810, WR_1|RD_2, 0, I3, 0, 0 },
{"daddu", "y,j", 0xfd00, 0xff00, MOD_1, 0, I3, 0, 0 },
{"daddu", "S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{"daddu", "S,S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{"daddu", "y,P,W", 0xfe00, 0xff00, WR_1, RD_PC, I3, 0, 0 },
{"daddu", "y,S,W", 0xff00, 0xff00, WR_1, RD_SP, I3, 0, 0 },
{"ddiv", ".,x,y", 0xe81e, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{"ddiv", "z,v,y", 0, (int) M_DDIV_3, INSN_MACRO, 0, I3, 0, 0 },
{"ddivu", ".,x,y", 0xe81f, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{"ddivu", "z,v,y", 0, (int) M_DDIVU_3, INSN_MACRO, 0, I3, 0, 0 },
{"di", "", 0xf006670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{"di", ".", 0xf006670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{"di", "y", 0xf002670c, 0xffffff1f, WR_1|WR_C0, 0, 0, E2, 0 },
{"div", ".,x,y", 0xe81a, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{"div", "z,v,y", 0, (int) M_DIV_3, INSN_MACRO, 0, I1, 0, 0 },
{"divu", ".,x,y", 0xe81b, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{"divu", "z,v,y", 0, (int) M_DIVU_3, INSN_MACRO, 0, I1, 0, 0 },
{"dmul", "z,v,y", 0, (int) M_DMUL, INSN_MACRO, 0, I3, 0, 0 },
{"dmult", "x,y", 0xe81c, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I3, 0, 0 },
{"dmultu", "x,y", 0xe81d, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I3, 0, 0 },
{"drem", ".,x,y", 0xe81e, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{"drem", "z,v,y", 0, (int) M_DREM_3, INSN_MACRO, 0, I3, 0, 0 },
{"dremu", ".,x,y", 0xe81f, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{"dremu", "z,v,y", 0, (int) M_DREMU_3, INSN_MACRO, 0, I3, 0, 0 },
{"dsllv", "y,x", 0xe814, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{"dsll", "x,w,[", 0x3001, 0xf803, WR_1|RD_2, 0, I3, 0, 0 },
{"dsll", "y,x", 0xe814, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{"dsrav", "y,x", 0xe817, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{"dsra", "y,]", 0xe813, 0xf81f, MOD_1, 0, I3, 0, 0 },
{"dsra", "y,x", 0xe817, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{"dsrlv", "y,x", 0xe816, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{"dsrl", "y,]", 0xe808, 0xf81f, MOD_1, 0, I3, 0, 0 },
{"dsrl", "y,x", 0xe816, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{"dsubu", "z,v,y", 0xe002, 0xf803, WR_1|RD_2|RD_3, SH, I3, 0, 0 },
{"dsubu", "y,x,I", 0, (int) M_DSUBU_I, INSN_MACRO, 0, I3, 0, 0 },
{"dsubu", "y,I", 0, (int) M_DSUBU_I_2, INSN_MACRO, 0, I3, 0, 0 },
{"ehb", "", 0xf0c03010, 0xffffffff, 0, 0, 0, E2, 0 },
{"ei", "", 0xf007670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{"ei", ".", 0xf007670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{"ei", "y", 0xf003670c, 0xffffff1f, WR_1|WR_C0, 0, 0, E2, 0 },
{"exit", "L", 0xed09, 0xff1f, TRAP, SH, I1, 0, 0 },
{"exit", "L", 0xee09, 0xff1f, TRAP, SH, I1, 0, 0 },
{"exit", "", 0xef09, 0xffff, TRAP, SH, I1, 0, 0 },
{"exit", "L", 0xef09, 0xff1f, TRAP, SH, I1, 0, 0 },
{"entry", "", 0xe809, 0xffff, TRAP, SH, I1, 0, 0 },
{"entry", "l", 0xe809, 0xf81f, TRAP, SH, I1, 0, 0 },
{"ext", "y,x,b,d", 0xf0203008, 0xf820f81f, WR_1|RD_2, 0, 0, E2, 0 },
{"ins", "y,.,b,c", 0xf0003004, 0xf820ff1f, WR_1, 0, 0, E2, 0 },
{"ins", "y,x,b,c", 0xf0203004, 0xf820f81f, WR_1|RD_2, 0, 0, E2, 0 },
{"jalr", "x", 0xe840, 0xf8ff, RD_1|WR_31|UBD, SH, I1, 0, 0 },
{"jalr", "R,x", 0xe840, 0xf8ff, RD_2|WR_31|UBD, SH, I1, 0, 0 },
{"jal", "x", 0xe840, 0xf8ff, RD_1|WR_31|UBD, SH, I1, 0, 0 },
{"jal", "R,x", 0xe840, 0xf8ff, RD_2|WR_31|UBD, SH, I1, 0, 0 },
{"jal", "a", 0x18000000, 0xfc000000, WR_31|UBD, 0, I1, 0, 0 },
{"jalx", "i", 0x1c000000, 0xfc000000, WR_31|UBD, 0, I1, 0, 0 },
{"jr", "x", 0xe800, 0xf8ff, RD_1|UBD, SH, I1, 0, 0 },
{"jr", "R", 0xe820, 0xffff, UBD, SH|RD_31, I1, 0, 0 },
{"j", "x", 0xe800, 0xf8ff, RD_1|UBD, SH, I1, 0, 0 },
{"j", "R", 0xe820, 0xffff, UBD, SH|RD_31, I1, 0, 0 },
{ "nop", "", 0x6500, 0xffff, 0, SH|RD_16|AL, I1, 0, 0 }, /* move $0,$Z */
{ "la", "x,A", 0x0800, 0xf800, WR_1, RD_PC|AL, I1, 0, 0 },
{ "abs", "x,w", 0, (int) M_ABS, INSN_MACRO, 0, I1, 0, 0 },
{ "addiu", "y,x,F", 0x4000, 0xf810, WR_1|RD_2, 0, I1, 0, 0 },
{ "addiu", "x,k", 0x4800, 0xf800, MOD_1, 0, I1, 0, 0 },
{ "addiu", "S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{ "addiu", "S,S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{ "addiu", "x,P,V", 0x0800, 0xf800, WR_1, RD_PC, I1, 0, 0 },
{ "addiu", "x,S,V", 0x0000, 0xf800, WR_1, SH|RD_SP, 0, E2, 0 },
{ "addiu", "x,S,V", 0x0000, 0xf800, WR_1, RD_SP, I1, 0, 0 },
{ "addiu", "x,S,V", 0xf0000000, 0xf800f8e0, WR_1, RD_SP, 0, E2, 0 },
{ "addiu", "x,G,V", 0xf0000020, 0xf800f8e0, WR_1|RD_2, 0, 0, E2, 0 },
{ "addu", "z,v,y", 0xe001, 0xf803, WR_1|RD_2|RD_3, SH, I1, 0, 0 },
{ "addu", "y,x,F", 0x4000, 0xf810, WR_1|RD_2, 0, I1, 0, 0 },
{ "addu", "x,k", 0x4800, 0xf800, MOD_1, 0, I1, 0, 0 },
{ "addu", "S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{ "addu", "S,S,K", 0x6300, 0xff00, 0, MOD_SP, I1, 0, 0 },
{ "addu", "x,P,V", 0x0800, 0xf800, WR_1, RD_PC, I1, 0, 0 },
{ "addu", "x,S,V", 0x0000, 0xf800, WR_1, SH|RD_SP, 0, E2, 0 },
{ "addu", "x,S,V", 0x0000, 0xf800, WR_1, RD_SP, I1, 0, 0 },
{ "addu", "x,S,V", 0xf0000000, 0xf800f8e0, WR_1, RD_SP, 0, E2, 0 },
{ "addu", "x,G,V", 0xf0000020, 0xf800f8e0, WR_1|RD_2, 0, 0, E2, 0 },
{ "and", "x,y", 0xe80c, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "andi", "x,u", 0xf0006860, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{ "b", "q", 0x1000, 0xf800, 0, UBR, I1, 0, 0 },
{ "beq", "x,y,p", 0, (int) M_BEQ, INSN_MACRO, 0, I1, 0, 0 },
{ "beq", "x,I,p", 0, (int) M_BEQ_I, INSN_MACRO, 0, I1, 0, 0 },
{ "beqz", "x,p", 0x2000, 0xf800, RD_1, CBR, I1, 0, 0 },
{ "bge", "x,y,p", 0, (int) M_BGE, INSN_MACRO, 0, I1, 0, 0 },
{ "bge", "x,I,p", 0, (int) M_BGE_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bgeu", "x,y,p", 0, (int) M_BGEU, INSN_MACRO, 0, I1, 0, 0 },
{ "bgeu", "x,I,p", 0, (int) M_BGEU_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bgt", "x,y,p", 0, (int) M_BGT, INSN_MACRO, 0, I1, 0, 0 },
{ "bgt", "x,I,p", 0, (int) M_BGT_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bgtu", "x,y,p", 0, (int) M_BGTU, INSN_MACRO, 0, I1, 0, 0 },
{ "bgtu", "x,I,p", 0, (int) M_BGTU_I, INSN_MACRO, 0, I1, 0, 0 },
{ "ble", "x,y,p", 0, (int) M_BLE, INSN_MACRO, 0, I1, 0, 0 },
{ "ble", "x,I,p", 0, (int) M_BLE_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bleu", "x,y,p", 0, (int) M_BLEU, INSN_MACRO, 0, I1, 0, 0 },
{ "bleu", "x,I,p", 0, (int) M_BLEU_I, INSN_MACRO, 0, I1, 0, 0 },
{ "blt", "x,y,p", 0, (int) M_BLT, INSN_MACRO, 0, I1, 0, 0 },
{ "blt", "x,I,p", 0, (int) M_BLT_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bltu", "x,y,p", 0, (int) M_BLTU, INSN_MACRO, 0, I1, 0, 0 },
{ "bltu", "x,I,p", 0, (int) M_BLTU_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bne", "x,y,p", 0, (int) M_BNE, INSN_MACRO, 0, I1, 0, 0 },
{ "bne", "x,I,p", 0, (int) M_BNE_I, INSN_MACRO, 0, I1, 0, 0 },
{ "bnez", "x,p", 0x2800, 0xf800, RD_1, CBR, I1, 0, 0 },
{ "break", "", 0xe805, 0xffff, TRAP, SH, I1, 0, 0 },
{ "break", "6", 0xe805, 0xf81f, TRAP, SH, I1, 0, 0 },
{ "bteqz", "p", 0x6000, 0xff00, RD_T, CBR, I1, 0, 0 },
{ "btnez", "p", 0x6100, 0xff00, RD_T, CBR, I1, 0, 0 },
{ "cache", "T,9(x)", 0xf000d0a0, 0xfe00f8e0, RD_3, 0, 0, E2, 0 },
{ "cmpi", "x,U", 0x7000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{ "cmp", "x,y", 0xe80a, 0xf81f, RD_1|RD_2|WR_T, SH, I1, 0, 0 },
{ "cmp", "x,U", 0x7000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{ "dla", "y,E", 0xfe00, 0xff00, WR_1, RD_PC|AL, I3, 0, 0 },
{ "daddiu", "y,x,F", 0x4010, 0xf810, WR_1|RD_2, 0, I3, 0, 0 },
{ "daddiu", "y,j", 0xfd00, 0xff00, MOD_1, 0, I3, 0, 0 },
{ "daddiu", "S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{ "daddiu", "S,S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{ "daddiu", "y,P,W", 0xfe00, 0xff00, WR_1, RD_PC, I3, 0, 0 },
{ "daddiu", "y,S,W", 0xff00, 0xff00, WR_1, RD_SP, I3, 0, 0 },
{ "daddu", "z,v,y", 0xe000, 0xf803, WR_1|RD_2|RD_3, SH, I3, 0, 0 },
{ "daddu", "y,x,F", 0x4010, 0xf810, WR_1|RD_2, 0, I3, 0, 0 },
{ "daddu", "y,j", 0xfd00, 0xff00, MOD_1, 0, I3, 0, 0 },
{ "daddu", "S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{ "daddu", "S,S,K", 0xfb00, 0xff00, 0, MOD_SP, I3, 0, 0 },
{ "daddu", "y,P,W", 0xfe00, 0xff00, WR_1, RD_PC, I3, 0, 0 },
{ "daddu", "y,S,W", 0xff00, 0xff00, WR_1, RD_SP, I3, 0, 0 },
{ "ddiv", ".,x,y", 0xe81e, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{ "ddiv", "z,v,y", 0, (int) M_DDIV_3, INSN_MACRO, 0, I3, 0, 0 },
{ "ddivu", ".,x,y", 0xe81f, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{ "ddivu", "z,v,y", 0, (int) M_DDIVU_3, INSN_MACRO, 0, I3, 0, 0 },
{ "di", "", 0xf006670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{ "di", ".", 0xf006670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{ "di", "y", 0xf002670c, 0xffffff1f, WR_1|WR_C0, 0, 0, E2, 0 },
{ "div", ".,x,y", 0xe81a, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{ "div", "z,v,y", 0, (int) M_DIV_3, INSN_MACRO, 0, I1, 0, 0 },
{ "divu", ".,x,y", 0xe81b, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{ "divu", "z,v,y", 0, (int) M_DIVU_3, INSN_MACRO, 0, I1, 0, 0 },
{ "dmul", "z,v,y", 0, (int) M_DMUL, INSN_MACRO, 0, I3, 0, 0 },
{ "dmult", "x,y", 0xe81c, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I3, 0, 0 },
{ "dmultu", "x,y", 0xe81d, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I3, 0, 0 },
{ "drem", ".,x,y", 0xe81e, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{ "drem", "z,v,y", 0, (int) M_DREM_3, INSN_MACRO, 0, I3, 0, 0 },
{ "dremu", ".,x,y", 0xe81f, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I3, 0, 0 },
{ "dremu", "z,v,y", 0, (int) M_DREMU_3, INSN_MACRO, 0, I3, 0, 0 },
{ "dsllv", "y,x", 0xe814, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{ "dsll", "x,w,[", 0x3001, 0xf803, WR_1|RD_2, 0, I3, 0, 0 },
{ "dsll", "y,x", 0xe814, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{ "dsrav", "y,x", 0xe817, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{ "dsra", "y,]", 0xe813, 0xf81f, MOD_1, 0, I3, 0, 0 },
{ "dsra", "y,x", 0xe817, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{ "dsrlv", "y,x", 0xe816, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{ "dsrl", "y,]", 0xe808, 0xf81f, MOD_1, 0, I3, 0, 0 },
{ "dsrl", "y,x", 0xe816, 0xf81f, MOD_1|RD_2, SH, I3, 0, 0 },
{ "dsubu", "z,v,y", 0xe002, 0xf803, WR_1|RD_2|RD_3, SH, I3, 0, 0 },
{ "dsubu", "y,x,I", 0, (int) M_DSUBU_I, INSN_MACRO, 0, I3, 0, 0 },
{ "dsubu", "y,I", 0, (int) M_DSUBU_I_2, INSN_MACRO, 0, I3, 0, 0 },
{ "ehb", "", 0xf0c03010, 0xffffffff, 0, 0, 0, E2, 0 },
{ "ei", "", 0xf007670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{ "ei", ".", 0xf007670c, 0xffffffff, WR_C0, 0, 0, E2, 0 },
{ "ei", "y", 0xf003670c, 0xffffff1f, WR_1|WR_C0, 0, 0, E2, 0 },
{ "exit", "L", 0xed09, 0xff1f, TRAP, SH, I1, 0, 0 },
{ "exit", "L", 0xee09, 0xff1f, TRAP, SH, I1, 0, 0 },
{ "exit", "", 0xef09, 0xffff, TRAP, SH, I1, 0, 0 },
{ "exit", "L", 0xef09, 0xff1f, TRAP, SH, I1, 0, 0 },
{ "entry", "", 0xe809, 0xffff, TRAP, SH, I1, 0, 0 },
{ "entry", "l", 0xe809, 0xf81f, TRAP, SH, I1, 0, 0 },
{ "ext", "y,x,b,d", 0xf0203008, 0xf820f81f, WR_1|RD_2, 0, 0, E2, 0 },
{ "ins", "y,.,b,c", 0xf0003004, 0xf820ff1f, WR_1, 0, 0, E2, 0 },
{ "ins", "y,x,b,c", 0xf0203004, 0xf820f81f, WR_1|RD_2, 0, 0, E2, 0 },
{ "jalr", "x", 0xe840, 0xf8ff, RD_1|WR_31|UBD, SH, I1, 0, 0 },
{ "jalr", "R,x", 0xe840, 0xf8ff, RD_2|WR_31|UBD, SH, I1, 0, 0 },
{ "jal", "x", 0xe840, 0xf8ff, RD_1|WR_31|UBD, SH, I1, 0, 0 },
{ "jal", "R,x", 0xe840, 0xf8ff, RD_2|WR_31|UBD, SH, I1, 0, 0 },
{ "jal", "a", 0x18000000, 0xfc000000, WR_31|UBD, 0, I1, 0, 0 },
{ "jalx", "i", 0x1c000000, 0xfc000000, WR_31|UBD, 0, I1, 0, 0 },
{ "jr", "x", 0xe800, 0xf8ff, RD_1|UBD, SH, I1, 0, 0 },
{ "jr", "R", 0xe820, 0xffff, UBD, SH|RD_31, I1, 0, 0 },
{ "j", "x", 0xe800, 0xf8ff, RD_1|UBD, SH, I1, 0, 0 },
{ "j", "R", 0xe820, 0xffff, UBD, SH|RD_31, I1, 0, 0 },
/* MIPS16e compact jumps. We keep them near the ordinary jumps
so that we easily find them when converting a normal jump
to a compact one. */
{"jalrc", "x", 0xe8c0, 0xf8ff, RD_1|WR_31|NODS, SH|UBR, I32, 0, 0 },
{"jalrc", "R,x", 0xe8c0, 0xf8ff, RD_2|WR_31|NODS, SH|UBR, I32, 0, 0 },
{"jrc", "x", 0xe880, 0xf8ff, RD_1|NODS, SH|UBR, I32, 0, 0 },
{"jrc", "R", 0xe8a0, 0xffff, NODS, SH|RD_31|UBR, I32, 0, 0 },
{"lb", "y,5(x)", 0x8000, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{"lb", "x,V(G)", 0xf0009060, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"lbu", "y,5(x)", 0xa000, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{"lbu", "x,V(G)", 0xf00090a0, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"ld", "y,D(x)", 0x3800, 0xf800, WR_1|RD_3, 0, I3, 0, 0 },
{"ld", "y,B", 0xfc00, 0xff00, WR_1, RD_PC|AL, I3, 0, 0 },
{"ld", "y,D(P)", 0xfc00, 0xff00, WR_1, RD_PC, I3, 0, 0 },
{"ld", "y,D(S)", 0xf800, 0xff00, WR_1, RD_SP, I3, 0, 0 },
{"lh", "y,H(x)", 0x8800, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{"lh", "x,V(G)", 0xf0009040, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"lhu", "y,H(x)", 0xa800, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{"lhu", "x,V(G)", 0xf0009080, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"li", "x,U", 0x6800, 0xf800, WR_1, SH, 0, E2, 0 },
{"li", "x,U", 0x6800, 0xf800, WR_1, 0, I1, 0, 0 },
{"li", "x,U", 0xf0006800, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{"ll", "x,9(r)", 0xf00090c0, 0xfe18f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"lui", "x,u", 0xf0006820, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{"lw", "y,W(x)", 0x9800, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{"lw", "x,A", 0xb000, 0xf800, WR_1, RD_PC|AL, I1, 0, 0 },
{"lw", "x,V(P)", 0xb000, 0xf800, WR_1, RD_PC, I1, 0, 0 },
{"lw", "x,V(S)", 0x9000, 0xf800, WR_1, SH|RD_SP, 0, E2, 0 },
{"lw", "x,V(S)", 0x9000, 0xf800, WR_1, RD_SP, I1, 0, 0 },
{"lw", "x,V(S)", 0xf0009000, 0xf800f8e0, WR_1, RD_SP, 0, E2, 0 },
{"lw", "x,V(G)", 0xf0009020, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"lwl", "x,9(r)", 0xf00090e0, 0xfe18f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"lwr", "x,9(r)", 0xf01090e0, 0xfe18f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{"lwu", "y,W(x)", 0xb800, 0xf800, WR_1|RD_3, 0, I3, 0, 0 },
{"mfc0", "y,N", 0xf0006700, 0xffffff00, WR_1|RD_C0, 0, 0, E2, 0 },
{"mfc0", "y,N,O", 0xf0006700, 0xff1fff00, WR_1|RD_C0, 0, 0, E2, 0 },
{"mfhi", "x", 0xe810, 0xf8ff, WR_1|RD_HI, SH, I1, 0, 0 },
{"mflo", "x", 0xe812, 0xf8ff, WR_1|RD_LO, SH, I1, 0, 0 },
{"move", "y,X", 0x6700, 0xff00, WR_1|RD_2, SH, I1, 0, 0 },
{"move", "Y,Z", 0x6500, 0xff00, WR_1|RD_2, SH, I1, 0, 0 },
{"movn", "x,.,w", 0xf000300a, 0xfffff81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{"movn", "x,r,w", 0xf020300a, 0xfff8f81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{"movtn", "x,.", 0xf000301a, 0xfffff8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{"movtn", "x,r", 0xf020301a, 0xfff8f8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{"movtz", "x,.", 0xf0003016, 0xfffff8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{"movtz", "x,r", 0xf0203016, 0xfff8f8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{"movz", "x,.,w", 0xf0003006, 0xfffff81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{"movz", "x,r,w", 0xf0203006, 0xfff8f81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{"mtc0", "y,N", 0xf0016700, 0xffffff00, RD_1|WR_C0, 0, 0, E2, 0 },
{"mtc0", "y,N,O", 0xf0016700, 0xff1fff00, RD_1|WR_C0, 0, 0, E2, 0 },
{"mul", "z,v,y", 0, (int) M_MUL, INSN_MACRO, 0, I1, 0, 0 },
{"mult", "x,y", 0xe818, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I1, 0, 0 },
{"multu", "x,y", 0xe819, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I1, 0, 0 },
{"neg", "x,w", 0xe80b, 0xf81f, WR_1|RD_2, SH, I1, 0, 0 },
{"not", "x,w", 0xe80f, 0xf81f, WR_1|RD_2, SH, I1, 0, 0 },
{"or", "x,y", 0xe80d, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"ori", "x,u", 0xf0006840, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{"pause", "", 0xf1403018, 0xffffffff, 0, 0, 0, E2, 0 },
{"pref", "T,9(x)", 0xf000d080, 0xfe00f8e0, RD_3, 0, 0, E2, 0 },
{"rdhwr", "y,Q", 0xf000300c, 0xffe0ff1f, WR_1, 0, 0, E2, 0 },
{"rem", ".,x,y", 0xe81a, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{"rem", "z,v,y", 0, (int) M_REM_3, INSN_MACRO, 0, I1, 0, 0 },
{"remu", ".,x,y", 0xe81b, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{"remu", "z,v,y", 0, (int) M_REMU_3, INSN_MACRO, 0, I1, 0, 0 },
{"sb", "y,5(x)", 0xc000, 0xf800, RD_1|RD_3, 0, I1, 0, 0 },
{"sb", "x,V(G)", 0xf000d060, 0xf800f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{"sc", "x,9(r)", 0xf000d0c0, 0xfe18f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{"sd", "y,D(x)", 0x7800, 0xf800, RD_1|RD_3, 0, I3, 0, 0 },
{"sd", "y,D(S)", 0xf900, 0xff00, RD_1, RD_SP, I3, 0, 0 },
{"sd", "R,C(S)", 0xfa00, 0xff00, 0, RD_31|RD_SP, I3, 0, 0 },
{"sh", "y,H(x)", 0xc800, 0xf800, RD_1|RD_3, 0, I1, 0, 0 },
{"sh", "x,V(G)", 0xf000d040, 0xf800f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{"sllv", "y,x", 0xe804, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"sll", "x,w,<", 0x3000, 0xf803, WR_1|RD_2, SH, 0, E2, 0 },
{"sll", "x,w,<", 0x3000, 0xf803, WR_1|RD_2, 0, I1, 0, 0 },
{"sll", "x,w,<", 0xf0003000, 0xf83ff81f, WR_1|RD_2, 0, 0, E2, 0 },
{"sll", "y,x", 0xe804, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"slti", "x,8", 0x5000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{"slt", "x,y", 0xe802, 0xf81f, RD_1|RD_2|WR_T, SH, I1, 0, 0 },
{"slt", "x,8", 0x5000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{"sltiu", "x,8", 0x5800, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{"sltu", "x,y", 0xe803, 0xf81f, RD_1|RD_2|WR_T, SH, I1, 0, 0 },
{"sltu", "x,8", 0x5800, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{"srav", "y,x", 0xe807, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"sra", "x,w,<", 0x3003, 0xf803, WR_1|RD_2, 0, I1, 0, 0 },
{"sra", "y,x", 0xe807, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"srlv", "y,x", 0xe806, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"srl", "x,w,<", 0x3002, 0xf803, WR_1|RD_2, SH, 0, E2, 0 },
{"srl", "x,w,<", 0x3002, 0xf803, WR_1|RD_2, 0, I1, 0, 0 },
{"srl", "x,w,<", 0xf0003002, 0xf83ff81f, WR_1|RD_2, 0, 0, E2, 0 },
{"srl", "y,x", 0xe806, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"subu", "z,v,y", 0xe003, 0xf803, WR_1|RD_2|RD_3, SH, I1, 0, 0 },
{"subu", "y,x,I", 0, (int) M_SUBU_I, INSN_MACRO, 0, I1, 0, 0 },
{"subu", "x,I", 0, (int) M_SUBU_I_2, INSN_MACRO, 0, I1, 0, 0 },
{"sw", "y,W(x)", 0xd800, 0xf800, RD_1|RD_3, 0, I1, 0, 0 },
{"sw", "x,V(S)", 0xd000, 0xf800, RD_1, SH|RD_SP, 0, E2, 0 },
{"sw", "x,V(S)", 0xd000, 0xf800, RD_1, RD_SP, I1, 0, 0 },
{"sw", "x,V(S)", 0xf000d000, 0xf800f8e0, RD_1, RD_SP, 0, E2, 0 },
{"sw", "R,V(S)", 0x6200, 0xff00, 0, RD_31|RD_SP, I1, 0, 0 },
{"sw", "x,V(G)", 0xf000d020, 0xf800f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{"swl", "x,9(r)", 0xf000d0e0, 0xfe18f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{"swr", "x,9(r)", 0xf010d0e0, 0xfe18f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{"sync_acquire", "", 0xf4403014, 0xffffffff, 0, AL, 0, E2, 0 },
{"sync_mb", "", 0xf4003014, 0xffffffff, 0, AL, 0, E2, 0 },
{"sync_release", "", 0xf4803014, 0xffffffff, 0, AL, 0, E2, 0 },
{"sync_rmb", "", 0xf4c03014, 0xffffffff, 0, AL, 0, E2, 0 },
{"sync_wmb", "", 0xf1003014, 0xffffffff, 0, AL, 0, E2, 0 },
{"sync", "", 0xf0003014, 0xffffffff, 0, 0, 0, E2, 0 },
{"sync", ">", 0xf0003014, 0xf83fffff, 0, 0, 0, E2, 0 },
{"xor", "x,y", 0xe80e, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{"xori", "x,u", 0xf0006880, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{ "jalrc", "x", 0xe8c0, 0xf8ff, RD_1|WR_31|NODS, SH|UBR, I32, 0, 0 },
{ "jalrc", "R,x", 0xe8c0, 0xf8ff, RD_2|WR_31|NODS, SH|UBR, I32, 0, 0 },
{ "jrc", "x", 0xe880, 0xf8ff, RD_1|NODS, SH|UBR, I32, 0, 0 },
{ "jrc", "R", 0xe8a0, 0xffff, NODS, SH|RD_31|UBR, I32, 0, 0 },
{ "lb", "y,5(x)", 0x8000, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{ "lb", "x,V(G)", 0xf0009060, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "lbu", "y,5(x)", 0xa000, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{ "lbu", "x,V(G)", 0xf00090a0, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "ld", "y,D(x)", 0x3800, 0xf800, WR_1|RD_3, 0, I3, 0, 0 },
{ "ld", "y,B", 0xfc00, 0xff00, WR_1, RD_PC|AL, I3, 0, 0 },
{ "ld", "y,D(P)", 0xfc00, 0xff00, WR_1, RD_PC, I3, 0, 0 },
{ "ld", "y,D(S)", 0xf800, 0xff00, WR_1, RD_SP, I3, 0, 0 },
{ "lh", "y,H(x)", 0x8800, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{ "lh", "x,V(G)", 0xf0009040, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "lhu", "y,H(x)", 0xa800, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{ "lhu", "x,V(G)", 0xf0009080, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "li", "x,U", 0x6800, 0xf800, WR_1, SH, 0, E2, 0 },
{ "li", "x,U", 0x6800, 0xf800, WR_1, 0, I1, 0, 0 },
{ "li", "x,U", 0xf0006800, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{ "ll", "x,9(r)", 0xf00090c0, 0xfe18f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "lui", "x,u", 0xf0006820, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{ "lw", "y,W(x)", 0x9800, 0xf800, WR_1|RD_3, 0, I1, 0, 0 },
{ "lw", "x,A", 0xb000, 0xf800, WR_1, RD_PC|AL, I1, 0, 0 },
{ "lw", "x,V(P)", 0xb000, 0xf800, WR_1, RD_PC, I1, 0, 0 },
{ "lw", "x,V(S)", 0x9000, 0xf800, WR_1, SH|RD_SP, 0, E2, 0 },
{ "lw", "x,V(S)", 0x9000, 0xf800, WR_1, RD_SP, I1, 0, 0 },
{ "lw", "x,V(S)", 0xf0009000, 0xf800f8e0, WR_1, RD_SP, 0, E2, 0 },
{ "lw", "x,V(G)", 0xf0009020, 0xf800f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "lwl", "x,9(r)", 0xf00090e0, 0xfe18f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "lwr", "x,9(r)", 0xf01090e0, 0xfe18f8e0, WR_1|RD_3, 0, 0, E2, 0 },
{ "lwu", "y,W(x)", 0xb800, 0xf800, WR_1|RD_3, 0, I3, 0, 0 },
{ "mfc0", "y,N", 0xf0006700, 0xffffff00, WR_1|RD_C0, 0, 0, E2, 0 },
{ "mfc0", "y,N,O", 0xf0006700, 0xff1fff00, WR_1|RD_C0, 0, 0, E2, 0 },
{ "mfhi", "x", 0xe810, 0xf8ff, WR_1|RD_HI, SH, I1, 0, 0 },
{ "mflo", "x", 0xe812, 0xf8ff, WR_1|RD_LO, SH, I1, 0, 0 },
{ "move", "y,X", 0x6700, 0xff00, WR_1|RD_2, SH, I1, 0, 0 },
{ "move", "Y,Z", 0x6500, 0xff00, WR_1|RD_2, SH, I1, 0, 0 },
{ "movn", "x,.,w", 0xf000300a, 0xfffff81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{ "movn", "x,r,w", 0xf020300a, 0xfff8f81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{ "movtn", "x,.", 0xf000301a, 0xfffff8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{ "movtn", "x,r", 0xf020301a, 0xfff8f8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{ "movtz", "x,.", 0xf0003016, 0xfffff8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{ "movtz", "x,r", 0xf0203016, 0xfff8f8ff, WR_1|RD_2|RD_T, 0, 0, E2, 0 },
{ "movz", "x,.,w", 0xf0003006, 0xfffff81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{ "movz", "x,r,w", 0xf0203006, 0xfff8f81f, WR_1|RD_2|RD_3, 0, 0, E2, 0 },
{ "mtc0", "y,N", 0xf0016700, 0xffffff00, RD_1|WR_C0, 0, 0, E2, 0 },
{ "mtc0", "y,N,O", 0xf0016700, 0xff1fff00, RD_1|WR_C0, 0, 0, E2, 0 },
{ "mul", "z,v,y", 0, (int) M_MUL, INSN_MACRO, 0, I1, 0, 0 },
{ "mult", "x,y", 0xe818, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I1, 0, 0 },
{ "multu", "x,y", 0xe819, 0xf81f, RD_1|RD_2|WR_HI|WR_LO, SH, I1, 0, 0 },
{ "neg", "x,w", 0xe80b, 0xf81f, WR_1|RD_2, SH, I1, 0, 0 },
{ "not", "x,w", 0xe80f, 0xf81f, WR_1|RD_2, SH, I1, 0, 0 },
{ "or", "x,y", 0xe80d, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "ori", "x,u", 0xf0006840, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
{ "pause", "", 0xf1403018, 0xffffffff, 0, 0, 0, E2, 0 },
{ "pref", "T,9(x)", 0xf000d080, 0xfe00f8e0, RD_3, 0, 0, E2, 0 },
{ "rdhwr", "y,Q", 0xf000300c, 0xffe0ff1f, WR_1, 0, 0, E2, 0 },
{ "rem", ".,x,y", 0xe81a, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{ "rem", "z,v,y", 0, (int) M_REM_3, INSN_MACRO, 0, I1, 0, 0 },
{ "remu", ".,x,y", 0xe81b, 0xf81f, RD_2|RD_3|WR_HI|WR_LO, SH, I1, 0, 0 },
{ "remu", "z,v,y", 0, (int) M_REMU_3, INSN_MACRO, 0, I1, 0, 0 },
{ "sb", "y,5(x)", 0xc000, 0xf800, RD_1|RD_3, 0, I1, 0, 0 },
{ "sb", "x,V(G)", 0xf000d060, 0xf800f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{ "sc", "x,9(r)", 0xf000d0c0, 0xfe18f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{ "sd", "y,D(x)", 0x7800, 0xf800, RD_1|RD_3, 0, I3, 0, 0 },
{ "sd", "y,D(S)", 0xf900, 0xff00, RD_1, RD_SP, I3, 0, 0 },
{ "sd", "R,C(S)", 0xfa00, 0xff00, 0, RD_31|RD_SP, I3, 0, 0 },
{ "sh", "y,H(x)", 0xc800, 0xf800, RD_1|RD_3, 0, I1, 0, 0 },
{ "sh", "x,V(G)", 0xf000d040, 0xf800f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{ "sllv", "y,x", 0xe804, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "sll", "x,w,<", 0x3000, 0xf803, WR_1|RD_2, SH, 0, E2, 0 },
{ "sll", "x,w,<", 0x3000, 0xf803, WR_1|RD_2, 0, I1, 0, 0 },
{ "sll", "x,w,<", 0xf0003000, 0xf83ff81f, WR_1|RD_2, 0, 0, E2, 0 },
{ "sll", "y,x", 0xe804, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "slti", "x,8", 0x5000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{ "slt", "x,y", 0xe802, 0xf81f, RD_1|RD_2|WR_T, SH, I1, 0, 0 },
{ "slt", "x,8", 0x5000, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{ "sltiu", "x,8", 0x5800, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{ "sltu", "x,y", 0xe803, 0xf81f, RD_1|RD_2|WR_T, SH, I1, 0, 0 },
{ "sltu", "x,8", 0x5800, 0xf800, RD_1|WR_T, 0, I1, 0, 0 },
{ "srav", "y,x", 0xe807, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "sra", "x,w,<", 0x3003, 0xf803, WR_1|RD_2, 0, I1, 0, 0 },
{ "sra", "y,x", 0xe807, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "srlv", "y,x", 0xe806, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "srl", "x,w,<", 0x3002, 0xf803, WR_1|RD_2, SH, 0, E2, 0 },
{ "srl", "x,w,<", 0x3002, 0xf803, WR_1|RD_2, 0, I1, 0, 0 },
{ "srl", "x,w,<", 0xf0003002, 0xf83ff81f, WR_1|RD_2, 0, 0, E2, 0 },
{ "srl", "y,x", 0xe806, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "subu", "z,v,y", 0xe003, 0xf803, WR_1|RD_2|RD_3, SH, I1, 0, 0 },
{ "subu", "y,x,I", 0, (int) M_SUBU_I, INSN_MACRO, 0, I1, 0, 0 },
{ "subu", "x,I", 0, (int) M_SUBU_I_2, INSN_MACRO, 0, I1, 0, 0 },
{ "sw", "y,W(x)", 0xd800, 0xf800, RD_1|RD_3, 0, I1, 0, 0 },
{ "sw", "x,V(S)", 0xd000, 0xf800, RD_1, SH|RD_SP, 0, E2, 0 },
{ "sw", "x,V(S)", 0xd000, 0xf800, RD_1, RD_SP, I1, 0, 0 },
{ "sw", "x,V(S)", 0xf000d000, 0xf800f8e0, RD_1, RD_SP, 0, E2, 0 },
{ "sw", "R,V(S)", 0x6200, 0xff00, 0, RD_31|RD_SP, I1, 0, 0 },
{ "sw", "x,V(G)", 0xf000d020, 0xf800f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{ "swl", "x,9(r)", 0xf000d0e0, 0xfe18f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{ "swr", "x,9(r)", 0xf010d0e0, 0xfe18f8e0, RD_1|RD_3, 0, 0, E2, 0 },
{ "sync_acquire", "", 0xf4403014, 0xffffffff, 0, AL, 0, E2, 0 },
{ "sync_mb", "", 0xf4003014, 0xffffffff, 0, AL, 0, E2, 0 },
{ "sync_release", "", 0xf4803014, 0xffffffff, 0, AL, 0, E2, 0 },
{ "sync_rmb", "", 0xf4c03014, 0xffffffff, 0, AL, 0, E2, 0 },
{ "sync_wmb", "", 0xf1003014, 0xffffffff, 0, AL, 0, E2, 0 },
{ "sync", "", 0xf0003014, 0xffffffff, 0, 0, 0, E2, 0 },
{ "sync", ">", 0xf0003014, 0xf83fffff, 0, 0, 0, E2, 0 },
{ "xor", "x,y", 0xe80e, 0xf81f, MOD_1|RD_2, SH, I1, 0, 0 },
{ "xori", "x,u", 0xf0006880, 0xf800f8e0, WR_1, 0, 0, E2, 0 },
/* MIPS16e additions; see above for compact jumps. */
{"restore", "m", 0x6400, 0xff80, WR_31|NODS, MOD_SP, I32, 0, 0 },
{"save", "m", 0x6480, 0xff80, NODS, RD_31|MOD_SP, I32, 0, 0 },
{"sdbbp", "", 0xe801, 0xffff, TRAP, SH, I32, 0, 0 },
{"sdbbp", "6", 0xe801, 0xf81f, TRAP, SH, I32, 0, 0 },
{"seb", "x", 0xe891, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{"seh", "x", 0xe8b1, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{"sew", "x", 0xe8d1, 0xf8ff, MOD_1, SH, I64, 0, 0 },
{"zeb", "x", 0xe811, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{"zeh", "x", 0xe831, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{"zew", "x", 0xe851, 0xf8ff, MOD_1, SH, I64, 0, 0 },
{ "restore", "m", 0x6400, 0xff80, WR_31|NODS, MOD_SP, I32, 0, 0 },
{ "save", "m", 0x6480, 0xff80, NODS, RD_31|MOD_SP, I32, 0, 0 },
{ "sdbbp", "", 0xe801, 0xffff, TRAP, SH, I32, 0, 0 },
{ "sdbbp", "6", 0xe801, 0xf81f, TRAP, SH, I32, 0, 0 },
{ "seb", "x", 0xe891, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{ "seh", "x", 0xe8b1, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{ "sew", "x", 0xe8d1, 0xf8ff, MOD_1, SH, I64, 0, 0 },
{ "zeb", "x", 0xe811, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{ "zeh", "x", 0xe831, 0xf8ff, MOD_1, SH, I32, 0, 0 },
{ "zew", "x", 0xe851, 0xf8ff, MOD_1, SH, I64, 0, 0 },
/* MIPS16e2 MT ASE instructions. */
{"dmt", "", 0xf0266701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"dmt", ".", 0xf0266701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"dmt", "y", 0xf0226701, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{"dvpe", "", 0xf0266700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"dvpe", ".", 0xf0266700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"dvpe", "y", 0xf0226700, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{"emt", "", 0xf0276701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"emt", ".", 0xf0276701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"emt", "y", 0xf0236701, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{"evpe", "", 0xf0276700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"evpe", ".", 0xf0276700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{"evpe", "y", 0xf0236700, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{ "dmt", "", 0xf0266701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "dmt", ".", 0xf0266701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "dmt", "y", 0xf0226701, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{ "dvpe", "", 0xf0266700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "dvpe", ".", 0xf0266700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "dvpe", "y", 0xf0226700, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{ "emt", "", 0xf0276701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "emt", ".", 0xf0276701, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "emt", "y", 0xf0236701, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
{ "evpe", "", 0xf0276700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "evpe", ".", 0xf0276700, 0xffffffff, WR_C0, 0, 0, E2MT, 0 },
{ "evpe", "y", 0xf0236700, 0xffffff1f, WR_1|WR_C0, 0, 0, E2MT, 0 },
/* interAptiv MR2 instruction extensions. */
{"copyw", "x,y,o,n", 0xf020e000, 0xffe0f81c, RD_1|RD_2|NODS, 0, IAMR2, 0, 0 },
{"ucopyw", "x,y,o,n", 0xf000e000, 0xffe0f81c, RD_1|RD_2|NODS, 0, IAMR2, 0, 0 },
{ "copyw", "x,y,o,n", 0xf020e000, 0xffe0f81c, RD_1|RD_2|NODS, 0, IAMR2, 0, 0 },
{ "ucopyw", "x,y,o,n", 0xf000e000, 0xffe0f81c, RD_1|RD_2|NODS, 0, IAMR2, 0, 0 },
/* Place asmacro at the bottom so that it catches any implementation
specific macros that didn't match anything. */
{"asmacro", "s,0,1,2,3,4", 0xf000e000, 0xf800f800, 0, 0, I32, 0, 0 },
{ "asmacro", "s,0,1,2,3,4", 0xf000e000, 0xf800f800, 0, 0, I32, 0, 0 },
/* Place EXTEND last so that it catches any prefix that didn't match
anything. */
{"extend", "e", 0xf000, 0xf800, NODS, SH, I1, 0, 0 },
{ "extend", "e", 0xf000, 0xf800, NODS, SH, I1, 0, 0 },
};
const int bfd_mips16_num_opcodes =

View File

@ -28,136 +28,136 @@
const struct nios2_reg nios2_builtin_regs[] = {
/* Standard register names. */
{"zero", 0},
{"at", 1}, /* assembler temporary */
{"r2", 2},
{"r3", 3},
{"r4", 4},
{"r5", 5},
{"r6", 6},
{"r7", 7},
{"r8", 8},
{"r9", 9},
{"r10", 10},
{"r11", 11},
{"r12", 12},
{"r13", 13},
{"r14", 14},
{"r15", 15},
{"r16", 16},
{"r17", 17},
{"r18", 18},
{"r19", 19},
{"r20", 20},
{"r21", 21},
{"r22", 22},
{"r23", 23},
{"et", 24},
{"bt", 25},
{"gp", 26}, /* global pointer */
{"sp", 27}, /* stack pointer */
{"fp", 28}, /* frame pointer */
{"ea", 29}, /* exception return address */
{"ba", 30}, /* breakpoint return address */
{"ra", 31}, /* return address */
{ "zero", 0},
{ "at", 1}, /* assembler temporary */
{ "r2", 2},
{ "r3", 3},
{ "r4", 4},
{ "r5", 5},
{ "r6", 6},
{ "r7", 7},
{ "r8", 8},
{ "r9", 9},
{ "r10", 10},
{ "r11", 11},
{ "r12", 12},
{ "r13", 13},
{ "r14", 14},
{ "r15", 15},
{ "r16", 16},
{ "r17", 17},
{ "r18", 18},
{ "r19", 19},
{ "r20", 20},
{ "r21", 21},
{ "r22", 22},
{ "r23", 23},
{ "et", 24},
{ "bt", 25},
{ "gp", 26}, /* global pointer */
{ "sp", 27}, /* stack pointer */
{ "fp", 28}, /* frame pointer */
{ "ea", 29}, /* exception return address */
{ "ba", 30}, /* breakpoint return address */
{ "ra", 31}, /* return address */
/* Alternative names for special registers. */
{"r0", 0},
{"r1", 1},
{"r24", 24},
{"r25", 25},
{"r26", 26},
{"r27", 27},
{"r28", 28},
{"r29", 29},
{"r30", 30},
{"sstatus", 30},
{"r31", 31},
{ "r0", 0},
{ "r1", 1},
{ "r24", 24},
{ "r25", 25},
{ "r26", 26},
{ "r27", 27},
{ "r28", 28},
{ "r29", 29},
{ "r30", 30},
{ "sstatus", 30},
{ "r31", 31},
/* Control register names. */
{"status", 0},
{"estatus", 1},
{"bstatus", 2},
{"ienable", 3},
{"ipending", 4},
{"cpuid", 5},
{"ctl6", 6},
{"exception", 7},
{"pteaddr", 8},
{"tlbacc", 9},
{"tlbmisc", 10},
{"eccinj", 11},
{"badaddr", 12},
{"config", 13},
{"mpubase", 14},
{"mpuacc", 15},
{"ctl16", 16},
{"ctl17", 17},
{"ctl18", 18},
{"ctl19", 19},
{"ctl20", 20},
{"ctl21", 21},
{"ctl22", 22},
{"ctl23", 23},
{"ctl24", 24},
{"ctl25", 25},
{"ctl26", 26},
{"ctl27", 27},
{"ctl28", 28},
{"ctl29", 29},
{"ctl30", 30},
{"ctl31", 31},
{ "status", 0},
{ "estatus", 1},
{ "bstatus", 2},
{ "ienable", 3},
{ "ipending", 4},
{ "cpuid", 5},
{ "ctl6", 6},
{ "exception", 7},
{ "pteaddr", 8},
{ "tlbacc", 9},
{ "tlbmisc", 10},
{ "eccinj", 11},
{ "badaddr", 12},
{ "config", 13},
{ "mpubase", 14},
{ "mpuacc", 15},
{ "ctl16", 16},
{ "ctl17", 17},
{ "ctl18", 18},
{ "ctl19", 19},
{ "ctl20", 20},
{ "ctl21", 21},
{ "ctl22", 22},
{ "ctl23", 23},
{ "ctl24", 24},
{ "ctl25", 25},
{ "ctl26", 26},
{ "ctl27", 27},
{ "ctl28", 28},
{ "ctl29", 29},
{ "ctl30", 30},
{ "ctl31", 31},
/* Alternative names for special control registers. */
{"ctl0", 0},
{"ctl1", 1},
{"ctl2", 2},
{"ctl3", 3},
{"ctl4", 4},
{"ctl5", 5},
{"ctl7", 7},
{"ctl8", 8},
{"ctl9", 9},
{"ctl10", 10},
{"ctl11", 11},
{"ctl12", 12},
{"ctl13", 13},
{"ctl14", 14},
{"ctl15", 15},
{ "ctl0", 0},
{ "ctl1", 1},
{ "ctl2", 2},
{ "ctl3", 3},
{ "ctl4", 4},
{ "ctl5", 5},
{ "ctl7", 7},
{ "ctl8", 8},
{ "ctl9", 9},
{ "ctl10", 10},
{ "ctl11", 11},
{ "ctl12", 12},
{ "ctl13", 13},
{ "ctl14", 14},
{ "ctl15", 15},
/* Coprocessor register names. */
{"c0", 0},
{"c1", 1},
{"c2", 2},
{"c3", 3},
{"c4", 4},
{"c5", 5},
{"c6", 6},
{"c7", 7},
{"c8", 8},
{"c9", 9},
{"c10", 10},
{"c11", 11},
{"c12", 12},
{"c13", 13},
{"c14", 14},
{"c15", 15},
{"c16", 16},
{"c17", 17},
{"c18", 18},
{"c19", 19},
{"c20", 20},
{"c21", 21},
{"c22", 22},
{"c23", 23},
{"c24", 24},
{"c25", 25},
{"c26", 26},
{"c27", 27},
{"c28", 28},
{"c29", 29},
{"c30", 30},
{"c31", 31},
{ "c0", 0},
{ "c1", 1},
{ "c2", 2},
{ "c3", 3},
{ "c4", 4},
{ "c5", 5},
{ "c6", 6},
{ "c7", 7},
{ "c8", 8},
{ "c9", 9},
{ "c10", 10},
{ "c11", 11},
{ "c12", 12},
{ "c13", 13},
{ "c14", 14},
{ "c15", 15},
{ "c16", 16},
{ "c17", 17},
{ "c18", 18},
{ "c19", 19},
{ "c20", 20},
{ "c21", 21},
{ "c22", 22},
{ "c23", 23},
{ "c24", 24},
{ "c25", 25},
{ "c26", 26},
{ "c27", 27},
{ "c28", 28},
{ "c29", 29},
{ "c30", 30},
{ "c31", 31},
};
#define NIOS2_NUM_REGS \
@ -176,230 +176,230 @@ const struct nios2_opcode nios2_builtin_opcodes[] =
{
/* { name, args, args_test, num_args,
match, mask, pinfo, overflow_msg } */
{"add", "d,s,t", "d,s,t,E", 3,
{ "add", "d,s,t", "d,s,t,E", 3,
OP_MATCH_ADD, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"addi", "t,s,i", "t,s,i,E", 3,
{ "addi", "t,s,i", "t,s,i,E", 3,
OP_MATCH_ADDI, OP_MASK_IOP, NIOS2_INSN_ADDI, signed_immed16_overflow},
{"subi", "t,s,i", "t,s,i,E", 3,
{ "subi", "t,s,i", "t,s,i,E", 3,
OP_MATCH_ADDI, OP_MASK_IOP, NIOS2_INSN_MACRO, signed_immed16_overflow},
{"and", "d,s,t", "d,s,t,E", 3,
{ "and", "d,s,t", "d,s,t,E", 3,
OP_MATCH_AND, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"andhi", "t,s,u", "t,s,u,E", 3,
{ "andhi", "t,s,u", "t,s,u,E", 3,
OP_MATCH_ANDHI, OP_MASK_IOP, 0, unsigned_immed16_overflow},
{"andi", "t,s,u", "t,s,u,E", 3,
{ "andi", "t,s,u", "t,s,u,E", 3,
OP_MATCH_ANDI, OP_MASK_IOP, NIOS2_INSN_ANDI, unsigned_immed16_overflow},
{"beq", "s,t,o", "s,t,o,E", 3,
{ "beq", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BEQ, OP_MASK_IOP, NIOS2_INSN_CBRANCH, branch_target_overflow},
{"bge", "s,t,o", "s,t,o,E", 3,
{ "bge", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BGE, OP_MASK_IOP, NIOS2_INSN_CBRANCH, branch_target_overflow},
{"bgeu", "s,t,o", "s,t,o,E", 3,
{ "bgeu", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BGEU, OP_MASK_IOP, NIOS2_INSN_CBRANCH, branch_target_overflow},
{"bgt", "s,t,o", "s,t,o,E", 3,
{ "bgt", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BLT, OP_MASK_IOP, NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,
branch_target_overflow},
{"bgtu", "s,t,o", "s,t,o,E", 3,
{ "bgtu", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BLTU, OP_MASK_IOP, NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,
branch_target_overflow},
{"ble", "s,t,o", "s,t,o,E", 3,
{ "ble", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BGE, OP_MASK_IOP, NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,
branch_target_overflow},
{"bleu", "s,t,o", "s,t,o,E", 3,
{ "bleu", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BGEU, OP_MASK_IOP, NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,
branch_target_overflow},
{"blt", "s,t,o", "s,t,o,E", 3,
{ "blt", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BLT, OP_MASK_IOP, NIOS2_INSN_CBRANCH, branch_target_overflow},
{"bltu", "s,t,o", "s,t,o,E", 3,
{ "bltu", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BLTU, OP_MASK_IOP, NIOS2_INSN_CBRANCH, branch_target_overflow},
{"bne", "s,t,o", "s,t,o,E", 3,
{ "bne", "s,t,o", "s,t,o,E", 3,
OP_MATCH_BNE, OP_MASK_IOP, NIOS2_INSN_CBRANCH, branch_target_overflow},
{"br", "o", "o,E", 1,
{ "br", "o", "o,E", 1,
OP_MATCH_BR, OP_MASK_IOP, NIOS2_INSN_UBRANCH, branch_target_overflow},
{"break", "b", "b,E", 1,
{ "break", "b", "b,E", 1,
OP_MATCH_BREAK, OP_MASK_BREAK, 0, no_overflow},
{"bret", "", "E", 0,
{ "bret", "", "E", 0,
OP_MATCH_BRET, OP_MASK, 0, no_overflow},
{"flushd", "i(s)", "i(s)E", 2,
{ "flushd", "i(s)", "i(s)E", 2,
OP_MATCH_FLUSHD, OP_MASK_IOP, 0, signed_immed16_overflow},
{"flushda", "i(s)", "i(s)E", 2,
{ "flushda", "i(s)", "i(s)E", 2,
OP_MATCH_FLUSHDA, OP_MASK_IOP, 0, signed_immed16_overflow},
{"flushi", "s", "s,E", 1,
{ "flushi", "s", "s,E", 1,
OP_MATCH_FLUSHI, OP_MASK_FLUSHI, 0, no_overflow},
{"flushp", "", "E", 0,
{ "flushp", "", "E", 0,
OP_MATCH_FLUSHP, OP_MASK, 0, no_overflow},
{"initd", "i(s)", "i(s)E", 2,
{ "initd", "i(s)", "i(s)E", 2,
OP_MATCH_INITD, OP_MASK_IOP, 0, signed_immed16_overflow},
{"initda", "i(s)", "i(s)E", 2,
{ "initda", "i(s)", "i(s)E", 2,
OP_MATCH_INITDA, OP_MASK_IOP, 0, signed_immed16_overflow},
{"initi", "s", "s,E", 1,
{ "initi", "s", "s,E", 1,
OP_MATCH_INITI, OP_MASK_INITI, 0, no_overflow},
{"call", "m", "m,E", 1,
{ "call", "m", "m,E", 1,
OP_MATCH_CALL, OP_MASK_IOP, NIOS2_INSN_CALL, call_target_overflow},
{"callr", "s", "s,E", 1,
{ "callr", "s", "s,E", 1,
OP_MATCH_CALLR, OP_MASK_CALLR, 0, no_overflow},
{"cmpeq", "d,s,t", "d,s,t,E", 3,
{ "cmpeq", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPEQ, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"cmpeqi", "t,s,i", "t,s,i,E", 3,
{ "cmpeqi", "t,s,i", "t,s,i,E", 3,
OP_MATCH_CMPEQI, OP_MASK_IOP, 0, signed_immed16_overflow},
{"cmpge", "d,s,t", "d,s,t,E", 3,
{ "cmpge", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPGE, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"cmpgei", "t,s,i", "t,s,i,E", 3,
{ "cmpgei", "t,s,i", "t,s,i,E", 3,
OP_MATCH_CMPGEI, OP_MASK_IOP, 0, signed_immed16_overflow},
{"cmpgeu", "d,s,t", "d,s,t,E", 3,
{ "cmpgeu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPGEU, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"cmpgeui", "t,s,u", "t,s,u,E", 3,
{ "cmpgeui", "t,s,u", "t,s,u,E", 3,
OP_MATCH_CMPGEUI, OP_MASK_IOP, 0, unsigned_immed16_overflow},
{"cmpgt", "d,s,t", "d,s,t,E", 3,
{ "cmpgt", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPLT, OP_MASK_ROPX | OP_MASK_ROP, NIOS2_INSN_MACRO, no_overflow},
{"cmpgti", "t,s,i", "t,s,i,E", 3,
{ "cmpgti", "t,s,i", "t,s,i,E", 3,
OP_MATCH_CMPGEI, OP_MASK_IOP, NIOS2_INSN_MACRO, signed_immed16_overflow},
{"cmpgtu", "d,s,t", "d,s,t,E", 3,
{ "cmpgtu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPLTU, OP_MASK_ROPX | OP_MASK_ROP, NIOS2_INSN_MACRO, no_overflow},
{"cmpgtui", "t,s,u", "t,s,u,E", 3,
{ "cmpgtui", "t,s,u", "t,s,u,E", 3,
OP_MATCH_CMPGEUI, OP_MASK_IOP, NIOS2_INSN_MACRO, unsigned_immed16_overflow},
{"cmple", "d,s,t", "d,s,t,E", 3,
{ "cmple", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPGE, OP_MASK_ROPX | OP_MASK_ROP, NIOS2_INSN_MACRO, no_overflow},
{"cmplei", "t,s,i", "t,s,i,E", 3,
{ "cmplei", "t,s,i", "t,s,i,E", 3,
OP_MATCH_CMPLTI, OP_MASK_IOP, NIOS2_INSN_MACRO, signed_immed16_overflow},
{"cmpleu", "d,s,t", "d,s,t,E", 3,
{ "cmpleu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPGEU, OP_MASK_ROPX | OP_MASK_ROP, NIOS2_INSN_MACRO, no_overflow},
{"cmpleui", "t,s,u", "t,s,u,E", 3,
{ "cmpleui", "t,s,u", "t,s,u,E", 3,
OP_MATCH_CMPLTUI, OP_MASK_IOP, NIOS2_INSN_MACRO, unsigned_immed16_overflow},
{"cmplt", "d,s,t", "d,s,t,E", 3,
{ "cmplt", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPLT, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"cmplti", "t,s,i", "t,s,i,E", 3,
{ "cmplti", "t,s,i", "t,s,i,E", 3,
OP_MATCH_CMPLTI, OP_MASK_IOP, 0, signed_immed16_overflow},
{"cmpltu", "d,s,t", "d,s,t,E", 3,
{ "cmpltu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPLTU, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"cmpltui", "t,s,u", "t,s,u,E", 3,
{ "cmpltui", "t,s,u", "t,s,u,E", 3,
OP_MATCH_CMPLTUI, OP_MASK_IOP, 0, unsigned_immed16_overflow},
{"cmpne", "d,s,t", "d,s,t,E", 3,
{ "cmpne", "d,s,t", "d,s,t,E", 3,
OP_MATCH_CMPNE, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"cmpnei", "t,s,i", "t,s,i,E", 3,
{ "cmpnei", "t,s,i", "t,s,i,E", 3,
OP_MATCH_CMPNEI, OP_MASK_IOP, 0, signed_immed16_overflow},
{"div", "d,s,t", "d,s,t,E", 3,
{ "div", "d,s,t", "d,s,t,E", 3,
OP_MATCH_DIV, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"divu", "d,s,t", "d,s,t,E", 3,
{ "divu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_DIVU, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"jmp", "s", "s,E", 1,
{ "jmp", "s", "s,E", 1,
OP_MATCH_JMP, OP_MASK_JMP, 0, no_overflow},
{"jmpi", "m", "m,E", 1,
{ "jmpi", "m", "m,E", 1,
OP_MATCH_JMPI, OP_MASK_IOP, 0, no_overflow},
{"ldb", "t,i(s)", "t,i(s)E", 3,
{ "ldb", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDB, OP_MASK_IOP, 0, address_offset_overflow},
{"ldbio", "t,i(s)", "t,i(s)E", 3,
{ "ldbio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDBIO, OP_MASK_IOP, 0, address_offset_overflow},
{"ldbu", "t,i(s)", "t,i(s)E", 3,
{ "ldbu", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDBU, OP_MASK_IOP, 0, address_offset_overflow},
{"ldbuio", "t,i(s)", "t,i(s)E", 3,
{ "ldbuio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDBUIO, OP_MASK_IOP, 0, address_offset_overflow},
{"ldh", "t,i(s)", "t,i(s)E", 3,
{ "ldh", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDH, OP_MASK_IOP, 0, address_offset_overflow},
{"ldhio", "t,i(s)", "t,i(s)E", 3,
{ "ldhio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDHIO, OP_MASK_IOP, 0, address_offset_overflow},
{"ldhu", "t,i(s)", "t,i(s)E", 3,
{ "ldhu", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDHU, OP_MASK_IOP, 0, address_offset_overflow},
{"ldhuio", "t,i(s)", "t,i(s)E", 3,
{ "ldhuio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDHUIO, OP_MASK_IOP, 0, address_offset_overflow},
{"ldl", "t,i(s)", "t,i(s)E", 3,
{ "ldl", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDL, OP_MASK_IOP, 0, address_offset_overflow},
{"ldw", "t,i(s)", "t,i(s)E", 3,
{ "ldw", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDW, OP_MASK_IOP, 0, address_offset_overflow},
{"ldwio", "t,i(s)", "t,i(s)E", 3,
{ "ldwio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_LDWIO, OP_MASK_IOP, 0, address_offset_overflow},
{"mov", "d,s", "d,s,E", 2,
{ "mov", "d,s", "d,s,E", 2,
OP_MATCH_ADD, OP_MASK_RRT|OP_MASK_ROPX|OP_MASK_ROP, NIOS2_INSN_MACRO_MOV,
no_overflow},
{"movhi", "t,u", "t,u,E", 2,
{ "movhi", "t,u", "t,u,E", 2,
OP_MATCH_ORHI, OP_MASK_IRS|OP_MASK_IOP, NIOS2_INSN_MACRO_MOVI,
unsigned_immed16_overflow},
{"movui", "t,u", "t,u,E", 2,
{ "movui", "t,u", "t,u,E", 2,
OP_MATCH_ORI, OP_MASK_IRS|OP_MASK_IOP, NIOS2_INSN_MACRO_MOVI,
unsigned_immed16_overflow},
{"movi", "t,i", "t,i,E", 2,
{ "movi", "t,i", "t,i,E", 2,
OP_MATCH_ADDI, OP_MASK_IRS|OP_MASK_IOP, NIOS2_INSN_MACRO_MOVI,
signed_immed16_overflow},
/* movia expands to two instructions so there is no mask or match */
{"movia", "t,o", "t,o,E", 2,
{ "movia", "t,o", "t,o,E", 2,
OP_MATCH_ORHI, OP_MASK_IOP, NIOS2_INSN_MACRO_MOVIA, no_overflow},
{"mul", "d,s,t", "d,s,t,E", 3,
{ "mul", "d,s,t", "d,s,t,E", 3,
OP_MATCH_MUL, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"muli", "t,s,i", "t,s,i,E", 3,
{ "muli", "t,s,i", "t,s,i,E", 3,
OP_MATCH_MULI, OP_MASK_IOP, 0, signed_immed16_overflow},
{"mulxss", "d,s,t", "d,s,t,E", 3,
{ "mulxss", "d,s,t", "d,s,t,E", 3,
OP_MATCH_MULXSS, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"mulxsu", "d,s,t", "d,s,t,E", 3,
{ "mulxsu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_MULXSU, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"mulxuu", "d,s,t", "d,s,t,E", 3,
{ "mulxuu", "d,s,t", "d,s,t,E", 3,
OP_MATCH_MULXUU, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"nextpc", "d", "d,E", 1,
{ "nextpc", "d", "d,E", 1,
OP_MATCH_NEXTPC, OP_MASK_NEXTPC, 0, no_overflow},
{"nop", "", "E", 0,
{ "nop", "", "E", 0,
OP_MATCH_ADD, OP_MASK, NIOS2_INSN_MACRO_MOV, no_overflow},
{"nor", "d,s,t", "d,s,t,E", 3,
{ "nor", "d,s,t", "d,s,t,E", 3,
OP_MATCH_NOR, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"or", "d,s,t", "d,s,t,E", 3,
{ "or", "d,s,t", "d,s,t,E", 3,
OP_MATCH_OR, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"orhi", "t,s,u", "t,s,u,E", 3,
{ "orhi", "t,s,u", "t,s,u,E", 3,
OP_MATCH_ORHI, OP_MASK_IOP, 0, unsigned_immed16_overflow},
{"ori", "t,s,u", "t,s,u,E", 3,
{ "ori", "t,s,u", "t,s,u,E", 3,
OP_MATCH_ORI, OP_MASK_IOP, NIOS2_INSN_ORI, unsigned_immed16_overflow},
{"rdctl", "d,c", "d,c,E", 2,
{ "rdctl", "d,c", "d,c,E", 2,
OP_MATCH_RDCTL, OP_MASK_RDCTL, 0, no_overflow},
{"rdprs", "t,s,i", "t,s,i,E", 3,
{ "rdprs", "t,s,i", "t,s,i,E", 3,
OP_MATCH_RDPRS, OP_MASK_IOP, 0, unsigned_immed16_overflow},
{"ret", "", "E", 0,
{ "ret", "", "E", 0,
OP_MATCH_RET, OP_MASK, 0, no_overflow},
{"rol", "d,s,t", "d,s,t,E", 3,
{ "rol", "d,s,t", "d,s,t,E", 3,
OP_MATCH_ROL, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"roli", "d,s,j", "d,s,j,E", 3,
{ "roli", "d,s,j", "d,s,j,E", 3,
OP_MATCH_ROLI, OP_MASK_ROLI, 0, unsigned_immed5_overflow},
{"ror", "d,s,t", "d,s,t,E", 3,
{ "ror", "d,s,t", "d,s,t,E", 3,
OP_MATCH_ROR, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"sll", "d,s,t", "d,s,t,E", 3,
{ "sll", "d,s,t", "d,s,t,E", 3,
OP_MATCH_SLL, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"slli", "d,s,j", "d,s,j,E", 3,
{ "slli", "d,s,j", "d,s,j,E", 3,
OP_MATCH_SLLI, OP_MASK_SLLI, 0, unsigned_immed5_overflow},
{"sra", "d,s,t", "d,s,t,E", 3,
{ "sra", "d,s,t", "d,s,t,E", 3,
OP_MATCH_SRA, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"srai", "d,s,j", "d,s,j,E", 3,
{ "srai", "d,s,j", "d,s,j,E", 3,
OP_MATCH_SRAI, OP_MASK_SRAI, 0, unsigned_immed5_overflow},
{"srl", "d,s,t", "d,s,t,E", 3,
{ "srl", "d,s,t", "d,s,t,E", 3,
OP_MATCH_SRL, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"srli", "d,s,j", "d,s,j,E", 3,
{ "srli", "d,s,j", "d,s,j,E", 3,
OP_MATCH_SRLI, OP_MASK_SRLI, 0, unsigned_immed5_overflow},
{"stb", "t,i(s)", "t,i(s)E", 3,
{ "stb", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STB, OP_MASK_IOP, 0, address_offset_overflow},
{"stbio", "t,i(s)", "t,i(s)E", 3,
{ "stbio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STBIO, OP_MASK_IOP, 0, address_offset_overflow},
{"stc", "t,i(s)", "t,i(s)E", 3,
{ "stc", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STC, OP_MASK_IOP, 0, address_offset_overflow},
{"sth", "t,i(s)", "t,i(s)E", 3,
{ "sth", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STH, OP_MASK_IOP, 0, address_offset_overflow},
{"sthio", "t,i(s)", "t,i(s)E", 3,
{ "sthio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STHIO, OP_MASK_IOP, 0, address_offset_overflow},
{"stw", "t,i(s)", "t,i(s)E", 3,
{ "stw", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STW, OP_MASK_IOP, 0, address_offset_overflow},
{"stwio", "t,i(s)", "t,i(s)E", 3,
{ "stwio", "t,i(s)", "t,i(s)E", 3,
OP_MATCH_STWIO, OP_MASK_IOP, 0, address_offset_overflow},
{"sub", "d,s,t", "d,s,t,E", 3,
{ "sub", "d,s,t", "d,s,t,E", 3,
OP_MATCH_SUB, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"sync", "", "E", 0,
{ "sync", "", "E", 0,
OP_MATCH_SYNC, OP_MASK_SYNC, 0, no_overflow},
{"trap", "b", "b,E", 1,
{ "trap", "b", "b,E", 1,
OP_MATCH_TRAP, OP_MASK_TRAP, 0, no_overflow},
{"eret", "", "E", 0,
{ "eret", "", "E", 0,
OP_MATCH_ERET, OP_MASK, 0, no_overflow},
{"custom", "l,d,s,t", "l,d,s,t,E", 4,
{ "custom", "l,d,s,t", "l,d,s,t,E", 4,
OP_MATCH_CUSTOM, OP_MASK_ROP, 0, custom_opcode_overflow},
{"wrctl", "c,s", "c,s,E", 2,
{ "wrctl", "c,s", "c,s,E", 2,
OP_MATCH_WRCTL, OP_MASK_WRCTL, 0, no_overflow},
{"wrprs", "d,s", "d,s,E", 2,
{ "wrprs", "d,s", "d,s,E", 2,
OP_MATCH_WRPRS, OP_MASK_RRT|OP_MASK_ROPX|OP_MASK_ROP, 0, no_overflow},
{"xor", "d,s,t", "d,s,t,E", 3,
{ "xor", "d,s,t", "d,s,t,E", 3,
OP_MATCH_XOR, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
{"xorhi", "t,s,u", "t,s,u,E", 3,
{ "xorhi", "t,s,u", "t,s,u,E", 3,
OP_MATCH_XORHI, OP_MASK_IOP, 0, unsigned_immed16_overflow},
{"xori", "t,s,u", "t,s,u,E", 3,
{ "xori", "t,s,u", "t,s,u,E", 3,
OP_MATCH_XORI, OP_MASK_IOP, NIOS2_INSN_XORI, unsigned_immed16_overflow}
};

View File

@ -3,58 +3,58 @@
#include "pic_midrange.h"
static const PicMidrangeOpInfo pic_midrange_op_info[PIC_MIDRANGE_OPCODE_INVALID] = {
{"nop", PIC_MIDRANGE_OP_ARGS_NONE},
{"return", PIC_MIDRANGE_OP_ARGS_NONE},
{"retfie", PIC_MIDRANGE_OP_ARGS_NONE},
{"option", PIC_MIDRANGE_OP_ARGS_NONE},
{"sleep", PIC_MIDRANGE_OP_ARGS_NONE},
{"clrwdt", PIC_MIDRANGE_OP_ARGS_NONE},
{"tris", PIC_MIDRANGE_OP_ARGS_2F},
{"movwf", PIC_MIDRANGE_OP_ARGS_7F},
{"clr", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"subwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"decf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"iorwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"andwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"xorwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"addwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"movf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"comf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"incf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"decfsz", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"rrf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"rlf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"swapf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"incfsz", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"bcf", PIC_MIDRANGE_OP_ARGS_3B_7F},
{"bsf", PIC_MIDRANGE_OP_ARGS_3B_7F},
{"btfsc", PIC_MIDRANGE_OP_ARGS_3B_7F},
{"btfss", PIC_MIDRANGE_OP_ARGS_3B_7F},
{"call", PIC_MIDRANGE_OP_ARGS_11K},
{"goto", PIC_MIDRANGE_OP_ARGS_11K},
{"movlw", PIC_MIDRANGE_OP_ARGS_8K},
{"retlw", PIC_MIDRANGE_OP_ARGS_8K},
{"iorlw", PIC_MIDRANGE_OP_ARGS_8K},
{"andlw", PIC_MIDRANGE_OP_ARGS_8K},
{"xorlw", PIC_MIDRANGE_OP_ARGS_8K},
{"sublw", PIC_MIDRANGE_OP_ARGS_8K},
{"addlw", PIC_MIDRANGE_OP_ARGS_8K},
{"reset", PIC_MIDRANGE_OP_ARGS_NONE},
{"callw", PIC_MIDRANGE_OP_ARGS_NONE},
{"brw", PIC_MIDRANGE_OP_ARGS_NONE},
{"moviw", PIC_MIDRANGE_OP_ARGS_1N_2M},
{"movwi", PIC_MIDRANGE_OP_ARGS_1N_2M},
{"movlb", PIC_MIDRANGE_OP_ARGS_4K},
{"lslf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"lsrf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"asrf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"subwfb", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"addwfc", PIC_MIDRANGE_OP_ARGS_1D_7F},
{"addfsr", PIC_MIDRANGE_OP_ARGS_1N_6K},
{"movlp", PIC_MIDRANGE_OP_ARGS_7F},
{"bra", PIC_MIDRANGE_OP_ARGS_9K},
{"moviw", PIC_MIDRANGE_OP_ARGS_1N_6K},
{"movwi", PIC_MIDRANGE_OP_ARGS_1N_6K}
{ "nop", PIC_MIDRANGE_OP_ARGS_NONE},
{ "return", PIC_MIDRANGE_OP_ARGS_NONE},
{ "retfie", PIC_MIDRANGE_OP_ARGS_NONE},
{ "option", PIC_MIDRANGE_OP_ARGS_NONE},
{ "sleep", PIC_MIDRANGE_OP_ARGS_NONE},
{ "clrwdt", PIC_MIDRANGE_OP_ARGS_NONE},
{ "tris", PIC_MIDRANGE_OP_ARGS_2F},
{ "movwf", PIC_MIDRANGE_OP_ARGS_7F},
{ "clr", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "subwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "decf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "iorwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "andwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "xorwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "addwf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "movf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "comf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "incf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "decfsz", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "rrf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "rlf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "swapf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "incfsz", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "bcf", PIC_MIDRANGE_OP_ARGS_3B_7F},
{ "bsf", PIC_MIDRANGE_OP_ARGS_3B_7F},
{ "btfsc", PIC_MIDRANGE_OP_ARGS_3B_7F},
{ "btfss", PIC_MIDRANGE_OP_ARGS_3B_7F},
{ "call", PIC_MIDRANGE_OP_ARGS_11K},
{ "goto", PIC_MIDRANGE_OP_ARGS_11K},
{ "movlw", PIC_MIDRANGE_OP_ARGS_8K},
{ "retlw", PIC_MIDRANGE_OP_ARGS_8K},
{ "iorlw", PIC_MIDRANGE_OP_ARGS_8K},
{ "andlw", PIC_MIDRANGE_OP_ARGS_8K},
{ "xorlw", PIC_MIDRANGE_OP_ARGS_8K},
{ "sublw", PIC_MIDRANGE_OP_ARGS_8K},
{ "addlw", PIC_MIDRANGE_OP_ARGS_8K},
{ "reset", PIC_MIDRANGE_OP_ARGS_NONE},
{ "callw", PIC_MIDRANGE_OP_ARGS_NONE},
{ "brw", PIC_MIDRANGE_OP_ARGS_NONE},
{ "moviw", PIC_MIDRANGE_OP_ARGS_1N_2M},
{ "movwi", PIC_MIDRANGE_OP_ARGS_1N_2M},
{ "movlb", PIC_MIDRANGE_OP_ARGS_4K},
{ "lslf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "lsrf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "asrf", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "subwfb", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "addwfc", PIC_MIDRANGE_OP_ARGS_1D_7F},
{ "addfsr", PIC_MIDRANGE_OP_ARGS_1N_6K},
{ "movlp", PIC_MIDRANGE_OP_ARGS_7F},
{ "bra", PIC_MIDRANGE_OP_ARGS_9K},
{ "moviw", PIC_MIDRANGE_OP_ARGS_1N_6K},
{ "movwi", PIC_MIDRANGE_OP_ARGS_1N_6K}
};
static const char *PicMidrangeFsrOps[] = {

View File

@ -21,7 +21,7 @@
#define S_T 11
#define LFSR_T 12
static char *fsr[] = {"fsr0", "fsr1", "fsr2", "reserved"};
static char *fsr[] = { "fsr0", "fsr1", "fsr2", "reserved" };
static struct {
ut16 opmin;

View File

@ -361,7 +361,7 @@ print_insn_powerpc (bfd_vma memaddr,
if (operand->bitm == 7) {
(*info->fprintf_func) (info->stream, "cr%ld", value);
} else {
static const char *cbnames[4] = {"lt", "gt", "eq", "so"};
static const char *cbnames[4] = { "lt", "gt", "eq", "so" };
int cr;
int cc;

File diff suppressed because it is too large Load Diff

View File

@ -21,76 +21,76 @@ ps_operand_t ps_operands_array[] = {
ps_opcode_t ps_opcodes_array[] = {
{ psq_lx, "psq_lx", OPM (4, 6), OPM_MASK, { OP_FD, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Load Indexed"},
{ psq_stx, "psq_stx", OPM (4, 7), OPM_MASK, { OP_FS, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Store Indexed"},
{ psq_lux, "psq_lux", OPM (4, 38), OPM_MASK, { OP_FD, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Load with update Indexed"},
{ psq_stux, "psq_stux", OPM (4, 39), OPM_MASK, { OP_FS, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Store with update Indexed"},
{ psq_lx, "psq_lx", OPM (4, 6), OPM_MASK, { OP_FD, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Load Indexed" },
{ psq_stx, "psq_stx", OPM (4, 7), OPM_MASK, { OP_FS, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Store Indexed" },
{ psq_lux, "psq_lux", OPM (4, 38), OPM_MASK, { OP_FD, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Load with update Indexed" },
{ psq_stux, "psq_stux", OPM (4, 39), OPM_MASK, { OP_FS, OP_RA, OP_RB, OP_WC, OP_IC}, "Paired Single Quantized Store with update Indexed" },
{ psq_l, "psq_l", OP (56), OP_MASK, { OP_FD, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Load"},
{ psq_lu, "psq_lu", OP (57), OP_MASK, { OP_FD, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Load with Update"},
{ psq_st, "psq_st", OP (60), OP_MASK, { OP_FS, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Store"},
{ psq_stu, "psq_stu", OP (61), OP_MASK, { OP_FS, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Store with update"},
{ psq_l, "psq_l", OP (56), OP_MASK, { OP_FD, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Load" },
{ psq_lu, "psq_lu", OP (57), OP_MASK, { OP_FD, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Load with Update" },
{ psq_st, "psq_st", OP (60), OP_MASK, { OP_FS, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Store" },
{ psq_stu, "psq_stu", OP (61), OP_MASK, { OP_FS, OP_DRA, OP_WB, OP_IB}, "Paired Single Quantized Store with update" },
{ ps_div, "ps_div", OPSC (4, 18, 0), OPS_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single Divide"},
{ ps_div_dot, "ps_div.", OPSC (4, 18, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single Divide"},
{ ps_sub, "ps_sub", OPSC (4, 20, 0), OPS_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single Subtract"},
{ ps_sub_dot, "ps_sub.", OPSC (4, 20, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single Subtract"},
{ ps_add, "ps_add", OPSC (4, 21, 0), OPS_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single Add"},
{ ps_add_dot, "ps_add.", OPSC (4, 21, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single Add"},
{ ps_sel, "ps_sel", OPSC (4, 23, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Select"},
{ ps_sel_dot, "ps_sel.", OPSC (4, 23, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Select"},
{ ps_res, "ps_res", OPSC (4, 24, 0), OPS_MASK, { OP_FD, OP_FB}, "Paired Single Reciprocal Estimate"},
{ ps_res_dot, "ps_res.", OPSC (4, 24, 1), OPS_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Reciprocal Estimate"},
{ ps_mul, "ps_mul", OPSC (4, 25, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply"},
{ ps_mul_dot, "ps_mul.", OPSC (4, 25, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply"},
{ ps_rsqrte, "ps_rsqrte", OPSC (4, 26, 0), OPS_MASK, { OP_FD, OP_FB}, "Paired Single Reciprocal Square Root Estimate"},
{ ps_rsqrte_dot, "ps_rsqrte.", OPSC (4, 26, 1), OPS_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Reciprocal Square Root Estimate"},
{ ps_msub, "ps_msub", OPSC (4, 28, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Subtract"},
{ ps_msub_dot, "ps_msub.", OPSC (4, 28, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Subtract"},
{ ps_madd, "ps_madd", OPSC (4, 29, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add"},
{ ps_madd_dot, "ps_madd.", OPSC (4, 29, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add"},
{ ps_nmsub, "ps_nmsub", OPSC (4, 30, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Subtract"},
{ ps_nmsub_dot, "ps_nmsub.", OPSC (4, 30, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Subtract"},
{ ps_nmadd, "ps_nmadd", OPSC (4, 31, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Add"},
{ ps_nmadd_dot, "ps_nmadd.", OPSC (4, 31, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Add"},
{ ps_div, "ps_div", OPSC (4, 18, 0), OPS_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single Divide" },
{ ps_div_dot, "ps_div.", OPSC (4, 18, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single Divide" },
{ ps_sub, "ps_sub", OPSC (4, 20, 0), OPS_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single Subtract" },
{ ps_sub_dot, "ps_sub.", OPSC (4, 20, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single Subtract" },
{ ps_add, "ps_add", OPSC (4, 21, 0), OPS_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single Add" },
{ ps_add_dot, "ps_add.", OPSC (4, 21, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single Add" },
{ ps_sel, "ps_sel", OPSC (4, 23, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Select" },
{ ps_sel_dot, "ps_sel.", OPSC (4, 23, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Select" },
{ ps_res, "ps_res", OPSC (4, 24, 0), OPS_MASK, { OP_FD, OP_FB}, "Paired Single Reciprocal Estimate" },
{ ps_res_dot, "ps_res.", OPSC (4, 24, 1), OPS_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Reciprocal Estimate" },
{ ps_mul, "ps_mul", OPSC (4, 25, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply" },
{ ps_mul_dot, "ps_mul.", OPSC (4, 25, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply" },
{ ps_rsqrte, "ps_rsqrte", OPSC (4, 26, 0), OPS_MASK, { OP_FD, OP_FB}, "Paired Single Reciprocal Square Root Estimate" },
{ ps_rsqrte_dot, "ps_rsqrte.", OPSC (4, 26, 1), OPS_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Reciprocal Square Root Estimate" },
{ ps_msub, "ps_msub", OPSC (4, 28, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Subtract" },
{ ps_msub_dot, "ps_msub.", OPSC (4, 28, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Subtract" },
{ ps_madd, "ps_madd", OPSC (4, 29, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add" },
{ ps_madd_dot, "ps_madd.", OPSC (4, 29, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add" },
{ ps_nmsub, "ps_nmsub", OPSC (4, 30, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Subtract" },
{ ps_nmsub_dot, "ps_nmsub.", OPSC (4, 30, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Subtract" },
{ ps_nmadd, "ps_nmadd", OPSC (4, 31, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Add" },
{ ps_nmadd_dot, "ps_nmadd.", OPSC (4, 31, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Negative Multiply-Add" },
{ ps_neg, "ps_neg", OPLC (4, 40, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Negate"},
{ ps_neg_dot, "ps_neg.", OPLC (4, 40, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Negate"},
{ ps_mr, "ps_mr", OPLC (4, 72, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Move Register"},
{ ps_mr_dot, "ps_mr.", OPLC (4, 72, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Move Register"},
{ ps_nabs, "ps_nabs", OPLC (4, 136, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Negative Absolute Value"},
{ ps_nabs_dot, "ps_nabs.", OPLC (4, 136, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Negative Absolute Value"},
{ ps_abs, "ps_abs", OPLC (4, 264, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Absolute Value"},
{ ps_abs_dot, "ps_abs.", OPLC (4, 264, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Absolute Value"},
{ ps_neg, "ps_neg", OPLC (4, 40, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Negate" },
{ ps_neg_dot, "ps_neg.", OPLC (4, 40, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Negate" },
{ ps_mr, "ps_mr", OPLC (4, 72, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Move Register" },
{ ps_mr_dot, "ps_mr.", OPLC (4, 72, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Move Register" },
{ ps_nabs, "ps_nabs", OPLC (4, 136, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Negative Absolute Value" },
{ ps_nabs_dot, "ps_nabs.", OPLC (4, 136, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Negative Absolute Value" },
{ ps_abs, "ps_abs", OPLC (4, 264, 0), OPL_MASK, { OP_FD, OP_FB}, "Paired Single Absolute Value" },
{ ps_abs_dot, "ps_abs.", OPLC (4, 264, 1), OPL_MASK_DOT, { OP_FD, OP_FB}, "Paired Single Absolute Value" },
{ ps_sum0, "ps_sum0", OPSC (4, 10, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM high"},
{ ps_sum0_dot, "ps_sum0.", OPSC (4, 10, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM high"},
{ ps_sum1, "ps_sum1", OPSC (4, 11, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM low"},
{ ps_sum1_dot, "ps_sum1.", OPSC (4, 11, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM low"},
{ ps_muls0, "ps_muls0", OPSC (4, 12, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar high"},
{ ps_muls0_dot, "ps_muls0.", OPSC (4, 12, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar high"},
{ ps_muls1, "ps_muls1", OPSC (4, 13, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar low"},
{ ps_muls1_dot, "ps_muls1.", OPSC (4, 13, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar low"},
{ ps_madds0, "ps_madds0", OPSC (4, 14, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar high"},
{ ps_madds0_dot, "ps_madds0.", OPSC (4, 14, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar high"},
{ ps_madds1, "ps_madds1", OPSC (4, 15, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar low"},
{ ps_madds1_dot, "ps_madds1.", OPSC (4, 15, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar low"},
{ ps_sum0, "ps_sum0", OPSC (4, 10, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM high" },
{ ps_sum0_dot, "ps_sum0.", OPSC (4, 10, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM high" },
{ ps_sum1, "ps_sum1", OPSC (4, 11, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM low" },
{ ps_sum1_dot, "ps_sum1.", OPSC (4, 11, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single vector SUM low" },
{ ps_muls0, "ps_muls0", OPSC (4, 12, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar high" },
{ ps_muls0_dot, "ps_muls0.", OPSC (4, 12, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar high" },
{ ps_muls1, "ps_muls1", OPSC (4, 13, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar low" },
{ ps_muls1_dot, "ps_muls1.", OPSC (4, 13, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC}, "Paired Single Multiply Scalar low" },
{ ps_madds0, "ps_madds0", OPSC (4, 14, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar high" },
{ ps_madds0_dot, "ps_madds0.", OPSC (4, 14, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar high" },
{ ps_madds1, "ps_madds1", OPSC (4, 15, 0), OPS_MASK, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar low" },
{ ps_madds1_dot, "ps_madds1.", OPSC (4, 15, 1), OPS_MASK_DOT, { OP_FD, OP_FA, OP_FC, OP_FB}, "Paired Single Multiply-Add Scalar low" },
{ ps_cmpu0, "ps_cmpu0", OPL (4, 0), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Unordered High"},
{ ps_cmpo0, "ps_cmpo0", OPL (4, 32), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Ordered High"},
{ ps_cmpu1, "ps_cmpu1", OPL (4, 64), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Unordered Low"},
{ ps_cmpo1, "ps_cmpo1", OPL (4, 96), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Ordered Low"},
{ ps_cmpu0, "ps_cmpu0", OPL (4, 0), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Unordered High" },
{ ps_cmpo0, "ps_cmpo0", OPL (4, 32), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Ordered High" },
{ ps_cmpu1, "ps_cmpu1", OPL (4, 64), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Unordered Low" },
{ ps_cmpo1, "ps_cmpo1", OPL (4, 96), OPL_MASK, { OP_crfD, OP_FA, OP_FB}, "Paired Singles Compare Ordered Low" },
{ ps_merge00, "ps_merge00", OPLC (4, 528, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE high"},
{ ps_merge00_dot, "ps_merge00.", OPLC (4, 528, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE high"},
{ ps_merge01, "ps_merge01", OPLC (4, 560, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE direct"},
{ ps_merge01_dot, "ps_merge01.", OPLC (4, 560, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE direct"},
{ ps_merge10, "ps_merge10", OPLC (4, 592, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE swapped"},
{ ps_merge10_dot, "ps_merge10.", OPLC (4, 592, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE swapped"},
{ ps_merge11, "ps_merge11", OPLC (4, 624, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE low"},
{ ps_merge11_dot, "ps_merge11.", OPLC (4, 624, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE low"},
{ ps_merge00, "ps_merge00", OPLC (4, 528, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE high" },
{ ps_merge00_dot, "ps_merge00.", OPLC (4, 528, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE high" },
{ ps_merge01, "ps_merge01", OPLC (4, 560, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE direct" },
{ ps_merge01_dot, "ps_merge01.", OPLC (4, 560, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE direct" },
{ ps_merge10, "ps_merge10", OPLC (4, 592, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE swapped" },
{ ps_merge10_dot, "ps_merge10.", OPLC (4, 592, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE swapped" },
{ ps_merge11, "ps_merge11", OPLC (4, 624, 0), OPL_MASK, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE low" },
{ ps_merge11_dot, "ps_merge11.", OPLC (4, 624, 1), OPL_MASK_DOT, { OP_FD, OP_FA, OP_FB}, "Paired Single MERGE low" },
{ ps_dcbz_l, "dcbz_l", OPL (4, 1014), OPL_MASK, { OP_RA, OP_RB}, "Data Cache Block Set to Zero Locked"},
{ ps_dcbz_l, "dcbz_l", OPL (4, 1014), OPL_MASK, { OP_RA, OP_RB}, "Data Cache Block Set to Zero Locked" },
};

File diff suppressed because it is too large Load Diff

View File

@ -112,461 +112,461 @@ typedef struct {
sh_opcode_info sh_table[] = {
/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM_8}},
/* 0111nnnni8*1.... add #<imm>,<REG_N> */{ "add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM_8}},
/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}},
/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{ "add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}},
/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}},
/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{ "addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}},
/* 0011nnnnmmmm1111 addv <REG_M>,<REG_N>*/{"addv",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_F}},
/* 0011nnnnmmmm1111 addv <REG_M>,<REG_N>*/{ "addv",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_F}},
/* 11001001i8*1.... and #<imm>,R0 */{"and",{A_IMM,A_R0},{HEX_C,HEX_9,IMM_8}},
/* 11001001i8*1.... and #<imm>,R0 */{ "and",{A_IMM,A_R0},{HEX_C,HEX_9,IMM_8}},
/* 0010nnnnmmmm1001 and <REG_M>,<REG_N> */{"and",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_9}},
/* 0010nnnnmmmm1001 and <REG_M>,<REG_N> */{ "and",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_9}},
/* 11001101i8*1.... and.b #<imm>,@(R0,GBR)*/{"and.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_D,IMM_8}},
/* 11001101i8*1.... and.b #<imm>,@(R0,GBR)*/{ "and.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_D,IMM_8}},
/* 1010i12......... bra <bdisp12> */{"bra",{A_BDISP12},{HEX_A,BRANCH_12}},
/* 1010i12......... bra <bdisp12> */{ "bra",{A_BDISP12},{HEX_A,BRANCH_12}},
/* 1011i12......... bsr <bdisp12> */{"bsr",{A_BDISP12},{HEX_B,BRANCH_12}},
/* 1011i12......... bsr <bdisp12> */{ "bsr",{A_BDISP12},{HEX_B,BRANCH_12}},
/* 10001001i8p1.... bt <bdisp8> */{"bt",{A_BDISP8},{HEX_8,HEX_9,BRANCH_8}},
/* 10001001i8p1.... bt <bdisp8> */{ "bt",{A_BDISP8},{HEX_8,HEX_9,BRANCH_8}},
/* 10001011i8p1.... bf <bdisp8> */{"bf",{A_BDISP8},{HEX_8,HEX_B,BRANCH_8}},
/* 10001011i8p1.... bf <bdisp8> */{ "bf",{A_BDISP8},{HEX_8,HEX_B,BRANCH_8}},
/* 10001101i8p1.... bt.s <bdisp8> */{"bt.s",{A_BDISP8},{HEX_8,HEX_D,BRANCH_8}},
/* 10001101i8p1.... bt.s <bdisp8> */{ "bt.s",{A_BDISP8},{HEX_8,HEX_D,BRANCH_8}},
/* 10001101i8p1.... bt/s <bdisp8> */{"bt/s",{A_BDISP8},{HEX_8,HEX_D,BRANCH_8}},
/* 10001101i8p1.... bt/s <bdisp8> */{ "bt/s",{A_BDISP8},{HEX_8,HEX_D,BRANCH_8}},
/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}},
/* 10001111i8p1.... bf.s <bdisp8> */{ "bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}},
/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}},
/* 10001111i8p1.... bf/s <bdisp8> */{ "bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}},
/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}},
/* 0000000000101000 clrmac */{ "clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}},
/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}},
/* 0000000001001000 clrs */{ "clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}},
/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}},
/* 0000000000001000 clrt */{ "clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}},
/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM_8}},
/* 10001000i8*1.... cmp/eq #<imm>,R0 */{ "cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM_8}},
/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}},
/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{ "cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}},
/* 0011nnnnmmmm0011 cmp/ge <REG_M>,<REG_N>*/{"cmp/ge",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_3}},
/* 0011nnnnmmmm0011 cmp/ge <REG_M>,<REG_N>*/{ "cmp/ge",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_3}},
/* 0011nnnnmmmm0111 cmp/gt <REG_M>,<REG_N>*/{"cmp/gt",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_7}},
/* 0011nnnnmmmm0111 cmp/gt <REG_M>,<REG_N>*/{ "cmp/gt",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_7}},
/* 0011nnnnmmmm0110 cmp/hi <REG_M>,<REG_N>*/{"cmp/hi",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_6}},
/* 0011nnnnmmmm0110 cmp/hi <REG_M>,<REG_N>*/{ "cmp/hi",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_6}},
/* 0011nnnnmmmm0010 cmp/hs <REG_M>,<REG_N>*/{"cmp/hs",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_2}},
/* 0011nnnnmmmm0010 cmp/hs <REG_M>,<REG_N>*/{ "cmp/hs",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_2}},
/* 0100nnnn00010101 cmp/pl <REG_N> */{"cmp/pl",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_5}},
/* 0100nnnn00010101 cmp/pl <REG_N> */{ "cmp/pl",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_5}},
/* 0100nnnn00010001 cmp/pz <REG_N> */{"cmp/pz",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_1}},
/* 0100nnnn00010001 cmp/pz <REG_N> */{ "cmp/pz",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_1}},
/* 0010nnnnmmmm1100 cmp/str <REG_M>,<REG_N>*/{"cmp/str",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_C}},
/* 0010nnnnmmmm1100 cmp/str <REG_M>,<REG_N>*/{ "cmp/str",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_C}},
/* 0010nnnnmmmm0111 div0s <REG_M>,<REG_N>*/{"div0s",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_7}},
/* 0010nnnnmmmm0111 div0s <REG_M>,<REG_N>*/{ "div0s",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_7}},
/* 0000000000011001 div0u */{"div0u",{0},{HEX_0,HEX_0,HEX_1,HEX_9}},
/* 0000000000011001 div0u */{ "div0u",{0},{HEX_0,HEX_0,HEX_1,HEX_9}},
/* 0011nnnnmmmm0100 div1 <REG_M>,<REG_N>*/{"div1",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_4}},
/* 0011nnnnmmmm0100 div1 <REG_M>,<REG_N>*/{ "div1",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_4}},
/* 0110nnnnmmmm1110 exts.b <REG_M>,<REG_N>*/{"exts.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_E}},
/* 0110nnnnmmmm1110 exts.b <REG_M>,<REG_N>*/{ "exts.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_E}},
/* 0110nnnnmmmm1111 exts.w <REG_M>,<REG_N>*/{"exts.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_F}},
/* 0110nnnnmmmm1111 exts.w <REG_M>,<REG_N>*/{ "exts.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_F}},
/* 0110nnnnmmmm1100 extu.b <REG_M>,<REG_N>*/{"extu.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_C}},
/* 0110nnnnmmmm1100 extu.b <REG_M>,<REG_N>*/{ "extu.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_C}},
/* 0110nnnnmmmm1101 extu.w <REG_M>,<REG_N>*/{"extu.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_D}},
/* 0110nnnnmmmm1101 extu.w <REG_M>,<REG_N>*/{ "extu.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_D}},
/* 0100nnnn00101011 jmp @<REG_N> */{"jmp",{A_IND_N},{HEX_4,REG_N,HEX_2,HEX_B}},
/* 0100nnnn00101011 jmp @<REG_N> */{ "jmp",{A_IND_N},{HEX_4,REG_N,HEX_2,HEX_B}},
/* 0100nnnn00001011 jsr @<REG_N> */{"jsr",{A_IND_N},{HEX_4,REG_N,HEX_0,HEX_B}},
/* 0100nnnn00001011 jsr @<REG_N> */{ "jsr",{A_IND_N},{HEX_4,REG_N,HEX_0,HEX_B}},
/* 0100nnnn00001110 ldc <REG_N>,SR */{"ldc",{A_REG_N,A_SR},{HEX_4,REG_N,HEX_0,HEX_E}},
/* 0100nnnn00001110 ldc <REG_N>,SR */{ "ldc",{A_REG_N,A_SR},{HEX_4,REG_N,HEX_0,HEX_E}},
/* 0100nnnn00011110 ldc <REG_N>,GBR */{"ldc",{A_REG_N,A_GBR},{HEX_4,REG_N,HEX_1,HEX_E}},
/* 0100nnnn00011110 ldc <REG_N>,GBR */{ "ldc",{A_REG_N,A_GBR},{HEX_4,REG_N,HEX_1,HEX_E}},
/* 0100nnnn00101110 ldc <REG_N>,VBR */{"ldc",{A_REG_N,A_VBR},{HEX_4,REG_N,HEX_2,HEX_E}},
/* 0100nnnn00101110 ldc <REG_N>,VBR */{ "ldc",{A_REG_N,A_VBR},{HEX_4,REG_N,HEX_2,HEX_E}},
/* 0100nnnn00111110 ldc <REG_N>,SSR */{"ldc",{A_REG_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_E}},
/* 0100nnnn00111110 ldc <REG_N>,SSR */{ "ldc",{A_REG_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_E}},
/* 0100nnnn01001110 ldc <REG_N>,SPC */{"ldc",{A_REG_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_E}},
/* 0100nnnn01001110 ldc <REG_N>,SPC */{ "ldc",{A_REG_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_E}},
/* 0100nnnn01111110 ldc <REG_N>,DBR */{"ldc",{A_REG_N,A_DBR},{HEX_4,REG_N,HEX_7,HEX_E}},
/* 0100nnnn01111110 ldc <REG_N>,DBR */{ "ldc",{A_REG_N,A_DBR},{HEX_4,REG_N,HEX_7,HEX_E}},
/* 0100nnnn1xxx1110 ldc <REG_N>,Rn_BANK */{"ldc",{A_REG_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_E}},
/* 0100nnnn1xxx1110 ldc <REG_N>,Rn_BANK */{ "ldc",{A_REG_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_E}},
/* 0100nnnn00000111 ldc.l @<REG_N>+,SR */{"ldc.l",{A_INC_N,A_SR},{HEX_4,REG_N,HEX_0,HEX_7}},
/* 0100nnnn00000111 ldc.l @<REG_N>+,SR */{ "ldc.l",{A_INC_N,A_SR},{HEX_4,REG_N,HEX_0,HEX_7}},
/* 0100nnnn00010111 ldc.l @<REG_N>+,GBR */{"ldc.l",{A_INC_N,A_GBR},{HEX_4,REG_N,HEX_1,HEX_7}},
/* 0100nnnn00010111 ldc.l @<REG_N>+,GBR */{ "ldc.l",{A_INC_N,A_GBR},{HEX_4,REG_N,HEX_1,HEX_7}},
/* 0100nnnn00100111 ldc.l @<REG_N>+,VBR */{"ldc.l",{A_INC_N,A_VBR},{HEX_4,REG_N,HEX_2,HEX_7}},
/* 0100nnnn00100111 ldc.l @<REG_N>+,VBR */{ "ldc.l",{A_INC_N,A_VBR},{HEX_4,REG_N,HEX_2,HEX_7}},
/* 0100nnnn00110111 ldc.l @<REG_N>+,SSR */{"ldc.l",{A_INC_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_7}},
/* 0100nnnn00110111 ldc.l @<REG_N>+,SSR */{ "ldc.l",{A_INC_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_7}},
/* 0100nnnn01000111 ldc.l @<REG_N>+,SPC */{"ldc.l",{A_INC_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_7}},
/* 0100nnnn01000111 ldc.l @<REG_N>+,SPC */{ "ldc.l",{A_INC_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_7}},
/* 0100nnnn01110111 ldc.l @<REG_N>+,DBR */{"ldc.l",{A_INC_N,A_DBR},{HEX_4,REG_N,HEX_7,HEX_7}},
/* 0100nnnn01110111 ldc.l @<REG_N>+,DBR */{ "ldc.l",{A_INC_N,A_DBR},{HEX_4,REG_N,HEX_7,HEX_7}},
/* 0100nnnn1xxx0111 ldc.l <REG_N>,Rn_BANK */{"ldc.l",{A_INC_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_7}},
/* 0100nnnn1xxx0111 ldc.l <REG_N>,Rn_BANK */{ "ldc.l",{A_INC_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_7}},
/* 0100nnnn00001010 lds <REG_N>,MACH */{"lds",{A_REG_N,A_MACH},{HEX_4,REG_N,HEX_0,HEX_A}},
/* 0100nnnn00001010 lds <REG_N>,MACH */{ "lds",{A_REG_N,A_MACH},{HEX_4,REG_N,HEX_0,HEX_A}},
/* 0100nnnn00011010 lds <REG_N>,MACL */{"lds",{A_REG_N,A_MACL},{HEX_4,REG_N,HEX_1,HEX_A}},
/* 0100nnnn00011010 lds <REG_N>,MACL */{ "lds",{A_REG_N,A_MACL},{HEX_4,REG_N,HEX_1,HEX_A}},
/* 0100nnnn00101010 lds <REG_N>,PR */{"lds",{A_REG_N,A_PR},{HEX_4,REG_N,HEX_2,HEX_A}},
/* 0100nnnn00101010 lds <REG_N>,PR */{ "lds",{A_REG_N,A_PR},{HEX_4,REG_N,HEX_2,HEX_A}},
/* 0100nnnn01011010 lds <REG_N>,FPUL */{"lds",{A_REG_M,FPUL_N},{HEX_4,REG_M,HEX_5,HEX_A}},
/* 0100nnnn01011010 lds <REG_N>,FPUL */{ "lds",{A_REG_M,FPUL_N},{HEX_4,REG_M,HEX_5,HEX_A}},
/* 0100nnnn01101010 lds <REG_M>,FPSCR */{"lds",{A_REG_M,FPSCR_N},{HEX_4,REG_M,HEX_6,HEX_A}},
/* 0100nnnn01101010 lds <REG_M>,FPSCR */{ "lds",{A_REG_M,FPSCR_N},{HEX_4,REG_M,HEX_6,HEX_A}},
/* 0100nnnn00000110 lds.l @<REG_N>+,MACH*/{"lds.l",{A_INC_N,A_MACH},{HEX_4,REG_N,HEX_0,HEX_6}},
/* 0100nnnn00000110 lds.l @<REG_N>+,MACH*/{ "lds.l",{A_INC_N,A_MACH},{HEX_4,REG_N,HEX_0,HEX_6}},
/* 0100nnnn00010110 lds.l @<REG_N>+,MACL*/{"lds.l",{A_INC_N,A_MACL},{HEX_4,REG_N,HEX_1,HEX_6}},
/* 0100nnnn00010110 lds.l @<REG_N>+,MACL*/{ "lds.l",{A_INC_N,A_MACL},{HEX_4,REG_N,HEX_1,HEX_6}},
/* 0100nnnn00100110 lds.l @<REG_N>+,PR */{"lds.l",{A_INC_N,A_PR},{HEX_4,REG_N,HEX_2,HEX_6}},
/* 0100nnnn00100110 lds.l @<REG_N>+,PR */{ "lds.l",{A_INC_N,A_PR},{HEX_4,REG_N,HEX_2,HEX_6}},
/* 0100nnnn01010110 lds.l @<REG_M>+,FPUL*/{"lds.l",{A_INC_M,FPUL_N},{HEX_4,REG_M,HEX_5,HEX_6}},
/* 0100nnnn01010110 lds.l @<REG_M>+,FPUL*/{ "lds.l",{A_INC_M,FPUL_N},{HEX_4,REG_M,HEX_5,HEX_6}},
/* 0100nnnn01100110 lds.l @<REG_M>+,FPSCR*/{"lds.l",{A_INC_M,FPSCR_N},{HEX_4,REG_M,HEX_6,HEX_6}},
/* 0100nnnn01100110 lds.l @<REG_M>+,FPSCR*/{ "lds.l",{A_INC_M,FPSCR_N},{HEX_4,REG_M,HEX_6,HEX_6}},
/* 0000000000111000 ldtlb */{"ldtlb",{0},{HEX_0,HEX_0,HEX_3,HEX_8}},
/* 0000000000111000 ldtlb */{ "ldtlb",{0},{HEX_0,HEX_0,HEX_3,HEX_8}},
/* 0100nnnnmmmm1111 mac.w @<REG_M>+,@<REG_N>+*/{"mac.w",{A_INC_M,A_INC_N},{HEX_4,REG_N,REG_M,HEX_F}},
/* 0100nnnnmmmm1111 mac.w @<REG_M>+,@<REG_N>+*/{ "mac.w",{A_INC_M,A_INC_N},{HEX_4,REG_N,REG_M,HEX_F}},
/* 1110nnnni8*1.... mov #<imm>,<REG_N> */{"mov",{A_IMM,A_REG_N},{HEX_E,REG_N,IMM_8}},
/* 1110nnnni8*1.... mov #<imm>,<REG_N> */{ "mov",{A_IMM,A_REG_N},{HEX_E,REG_N,IMM_8}},
/* 0110nnnnmmmm0011 mov <REG_M>,<REG_N> */{"mov",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_3}},
/* 0110nnnnmmmm0011 mov <REG_M>,<REG_N> */{ "mov",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_3}},
/* 0000nnnnmmmm0100 mov.b <REG_M>,@(R0,<REG_N>)*/{"mov.b",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_4}},
/* 0000nnnnmmmm0100 mov.b <REG_M>,@(R0,<REG_N>)*/{ "mov.b",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_4}},
/* 0010nnnnmmmm0100 mov.b <REG_M>,@-<REG_N>*/{"mov.b",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_4}},
/* 0010nnnnmmmm0100 mov.b <REG_M>,@-<REG_N>*/{ "mov.b",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_4}},
/* 0010nnnnmmmm0000 mov.b <REG_M>,@<REG_N>*/{"mov.b",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_0}},
/* 0010nnnnmmmm0000 mov.b <REG_M>,@<REG_N>*/{ "mov.b",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_0}},
/* 10000100mmmmi4*1 mov.b @(<disp>,<REG_M>),R0*/{"mov.b",{A_DISP_REG_M,A_R0},{HEX_8,HEX_4,REG_M,IMM_4}},
/* 10000100mmmmi4*1 mov.b @(<disp>,<REG_M>),R0*/{ "mov.b",{A_DISP_REG_M,A_R0},{HEX_8,HEX_4,REG_M,IMM_4}},
/* 11000100i8*1.... mov.b @(<disp>,GBR),R0*/{"mov.b",{A_DISP_GBR,A_R0},{HEX_C,HEX_4,IMM_8}},
/* 11000100i8*1.... mov.b @(<disp>,GBR),R0*/{ "mov.b",{A_DISP_GBR,A_R0},{HEX_C,HEX_4,IMM_8}},
/* 0000nnnnmmmm1100 mov.b @(R0,<REG_M>),<REG_N>*/{"mov.b",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_C}},
/* 0000nnnnmmmm1100 mov.b @(R0,<REG_M>),<REG_N>*/{ "mov.b",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_C}},
/* 0110nnnnmmmm0100 mov.b @<REG_M>+,<REG_N>*/{"mov.b",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_4}},
/* 0110nnnnmmmm0100 mov.b @<REG_M>+,<REG_N>*/{ "mov.b",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_4}},
/* 0110nnnnmmmm0000 mov.b @<REG_M>,<REG_N>*/{"mov.b",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_0}},
/* 0110nnnnmmmm0000 mov.b @<REG_M>,<REG_N>*/{ "mov.b",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_0}},
/* 10000000mmmmi4*1 mov.b R0,@(<disp>,<REG_M>)*/{"mov.b",{A_R0,A_DISP_REG_M},{HEX_8,HEX_0,REG_M,IMM_4}},
/* 10000000mmmmi4*1 mov.b R0,@(<disp>,<REG_M>)*/{ "mov.b",{A_R0,A_DISP_REG_M},{HEX_8,HEX_0,REG_M,IMM_4}},
/* 11000000i8*1.... mov.b R0,@(<disp>,GBR)*/{"mov.b",{A_R0,A_DISP_GBR},{HEX_C,HEX_0,IMM_8}},
/* 11000000i8*1.... mov.b R0,@(<disp>,GBR)*/{ "mov.b",{A_R0,A_DISP_GBR},{HEX_C,HEX_0,IMM_8}},
/* 0001nnnnmmmmi4*4 mov.l <REG_M>,@(<disp>,<REG_N>)*/{"mov.l",{ A_REG_M,A_DISP_REG_N},{HEX_1,REG_N,REG_M,IMM_4BY4}},
/* 0001nnnnmmmmi4*4 mov.l <REG_M>,@(<disp>,<REG_N>)*/{ "mov.l",{ A_REG_M,A_DISP_REG_N},{HEX_1,REG_N,REG_M,IMM_4BY4}},
/* 0000nnnnmmmm0110 mov.l <REG_M>,@(R0,<REG_N>)*/{"mov.l",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_6}},
/* 0000nnnnmmmm0110 mov.l <REG_M>,@(R0,<REG_N>)*/{ "mov.l",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_6}},
/* 0010nnnnmmmm0110 mov.l <REG_M>,@-<REG_N>*/{"mov.l",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_6}},
/* 0010nnnnmmmm0110 mov.l <REG_M>,@-<REG_N>*/{ "mov.l",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_6}},
/* 0010nnnnmmmm0010 mov.l <REG_M>,@<REG_N>*/{"mov.l",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_2}},
/* 0010nnnnmmmm0010 mov.l <REG_M>,@<REG_N>*/{ "mov.l",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_2}},
/* 0101nnnnmmmmi4*4 mov.l @(<disp>,<REG_M>),<REG_N>*/{"mov.l",{A_DISP_REG_M,A_REG_N},{HEX_5,REG_N,REG_M,IMM_4BY4}},
/* 0101nnnnmmmmi4*4 mov.l @(<disp>,<REG_M>),<REG_N>*/{ "mov.l",{A_DISP_REG_M,A_REG_N},{HEX_5,REG_N,REG_M,IMM_4BY4}},
/* 11000110i8*4.... mov.l @(<disp>,GBR),R0*/{"mov.l",{A_DISP_GBR,A_R0},{HEX_C,HEX_6,IMM_8BY4}},
/* 11000110i8*4.... mov.l @(<disp>,GBR),R0*/{ "mov.l",{A_DISP_GBR,A_R0},{HEX_C,HEX_6,IMM_8BY4}},
/* 1101nnnni8p4.... mov.l @(<disp>,PC),<REG_N>*/{"mov.l",{A_DISP_PC,A_REG_N},{HEX_D,REG_N,PCRELIMM_8BY4}},
/* 1101nnnni8p4.... mov.l @(<disp>,PC),<REG_N>*/{ "mov.l",{A_DISP_PC,A_REG_N},{HEX_D,REG_N,PCRELIMM_8BY4}},
/* 0000nnnnmmmm1110 mov.l @(R0,<REG_M>),<REG_N>*/{"mov.l",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_E}},
/* 0000nnnnmmmm1110 mov.l @(R0,<REG_M>),<REG_N>*/{ "mov.l",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_E}},
/* 0110nnnnmmmm0110 mov.l @<REG_M>+,<REG_N>*/{"mov.l",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_6}},
/* 0110nnnnmmmm0110 mov.l @<REG_M>+,<REG_N>*/{ "mov.l",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_6}},
/* 0110nnnnmmmm0010 mov.l @<REG_M>,<REG_N>*/{"mov.l",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_2}},
/* 0110nnnnmmmm0010 mov.l @<REG_M>,<REG_N>*/{ "mov.l",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_2}},
/* 11000010i8*4.... mov.l R0,@(<disp>,GBR)*/{"mov.l",{A_R0,A_DISP_GBR},{HEX_C,HEX_2,IMM_8BY4}},
/* 11000010i8*4.... mov.l R0,@(<disp>,GBR)*/{ "mov.l",{A_R0,A_DISP_GBR},{HEX_C,HEX_2,IMM_8BY4}},
/* 0000nnnnmmmm0101 mov.w <REG_M>,@(R0,<REG_N>)*/{"mov.w",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_5}},
/* 0000nnnnmmmm0101 mov.w <REG_M>,@(R0,<REG_N>)*/{ "mov.w",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_5}},
/* 0010nnnnmmmm0101 mov.w <REG_M>,@-<REG_N>*/{"mov.w",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_5}},
/* 0010nnnnmmmm0101 mov.w <REG_M>,@-<REG_N>*/{ "mov.w",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_5}},
/* 0010nnnnmmmm0001 mov.w <REG_M>,@<REG_N>*/{"mov.w",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_1}},
/* 0010nnnnmmmm0001 mov.w <REG_M>,@<REG_N>*/{ "mov.w",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_1}},
/* 10000101mmmmi4*2 mov.w @(<disp>,<REG_M>),R0*/{"mov.w",{A_DISP_REG_M,A_R0},{HEX_8,HEX_5,REG_M,IMM_4BY2}},
/* 10000101mmmmi4*2 mov.w @(<disp>,<REG_M>),R0*/{ "mov.w",{A_DISP_REG_M,A_R0},{HEX_8,HEX_5,REG_M,IMM_4BY2}},
/* 11000101i8*2.... mov.w @(<disp>,GBR),R0*/{"mov.w",{A_DISP_GBR,A_R0},{HEX_C,HEX_5,IMM_8BY2}},
/* 11000101i8*2.... mov.w @(<disp>,GBR),R0*/{ "mov.w",{A_DISP_GBR,A_R0},{HEX_C,HEX_5,IMM_8BY2}},
/* 1001nnnni8p2.... mov.w @(<disp>,PC),<REG_N>*/{"mov.w",{A_DISP_PC,A_REG_N},{HEX_9,REG_N,PCRELIMM_8BY2}},
/* 1001nnnni8p2.... mov.w @(<disp>,PC),<REG_N>*/{ "mov.w",{A_DISP_PC,A_REG_N},{HEX_9,REG_N,PCRELIMM_8BY2}},
/* 0000nnnnmmmm1101 mov.w @(R0,<REG_M>),<REG_N>*/{"mov.w",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_D}},
/* 0000nnnnmmmm1101 mov.w @(R0,<REG_M>),<REG_N>*/{ "mov.w",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_D}},
/* 0110nnnnmmmm0101 mov.w @<REG_M>+,<REG_N>*/{"mov.w",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_5}},
/* 0110nnnnmmmm0101 mov.w @<REG_M>+,<REG_N>*/{ "mov.w",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_5}},
/* 0110nnnnmmmm0001 mov.w @<REG_M>,<REG_N>*/{"mov.w",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_1}},
/* 0110nnnnmmmm0001 mov.w @<REG_M>,<REG_N>*/{ "mov.w",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_1}},
/* 10000001mmmmi4*2 mov.w R0,@(<disp>,<REG_M>)*/{"mov.w",{A_R0,A_DISP_REG_M},{HEX_8,HEX_1,REG_M,IMM_4BY2}},
/* 10000001mmmmi4*2 mov.w R0,@(<disp>,<REG_M>)*/{ "mov.w",{A_R0,A_DISP_REG_M},{HEX_8,HEX_1,REG_M,IMM_4BY2}},
/* 11000001i8*2.... mov.w R0,@(<disp>,GBR)*/{"mov.w",{A_R0,A_DISP_GBR},{HEX_C,HEX_1,IMM_8BY2}},
/* 11000001i8*2.... mov.w R0,@(<disp>,GBR)*/{ "mov.w",{A_R0,A_DISP_GBR},{HEX_C,HEX_1,IMM_8BY2}},
/* 11000111i8p4.... mova @(<disp>,PC),R0*/{"mova",{A_DISP_PC,A_R0},{HEX_C,HEX_7,PCRELIMM_8BY4}},
/* 0000nnnn11000011 movca.l R0,@<REG_N> */{"movca.l",{A_R0,A_IND_N},{HEX_0,REG_N,HEX_C,HEX_3}},
/* 11000111i8p4.... mova @(<disp>,PC),R0*/{ "mova",{A_DISP_PC,A_R0},{HEX_C,HEX_7,PCRELIMM_8BY4}},
/* 0000nnnn11000011 movca.l R0,@<REG_N> */{ "movca.l",{A_R0,A_IND_N},{HEX_0,REG_N,HEX_C,HEX_3}},
/* 0000nnnn00101001 movt <REG_N> */{"movt",{A_REG_N},{HEX_0,REG_N,HEX_2,HEX_9}},
/* 0000nnnn00101001 movt <REG_N> */{ "movt",{A_REG_N},{HEX_0,REG_N,HEX_2,HEX_9}},
/* 0010nnnnmmmm1111 muls <REG_M>,<REG_N>*/{"muls.w",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_F}},
/* 0010nnnnmmmm1111 muls <REG_M>,<REG_N>*/{ "muls.w",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_F}},
/* 0000nnnnmmmm0111 mul.l <REG_M>,<REG_N>*/{"mul.l",{ A_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_7}},
/* 0000nnnnmmmm0111 mul.l <REG_M>,<REG_N>*/{ "mul.l",{ A_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_7}},
/* 0010nnnnmmmm1110 mulu <REG_M>,<REG_N>*/{"mulu.w",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_E}},
/* 0010nnnnmmmm1110 mulu <REG_M>,<REG_N>*/{ "mulu.w",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_E}},
/* 0110nnnnmmmm1011 neg <REG_M>,<REG_N> */{"neg",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_B}},
/* 0110nnnnmmmm1011 neg <REG_M>,<REG_N> */{ "neg",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_B}},
/* 0110nnnnmmmm1010 negc <REG_M>,<REG_N>*/{"negc",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_A}},
/* 0110nnnnmmmm1010 negc <REG_M>,<REG_N>*/{ "negc",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_A}},
/* 0000000000001001 nop */{"nop",{0},{HEX_0,HEX_0,HEX_0,HEX_9}},
/* 0000000000001001 nop */{ "nop",{0},{HEX_0,HEX_0,HEX_0,HEX_9}},
/* 0110nnnnmmmm0111 not <REG_M>,<REG_N> */{"not",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_7}},
/* 0000nnnn10010011 ocbi @<REG_N> */{"ocbi",{A_IND_N},{HEX_0,REG_N,HEX_9,HEX_3}},
/* 0110nnnnmmmm0111 not <REG_M>,<REG_N> */{ "not",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_7}},
/* 0000nnnn10010011 ocbi @<REG_N> */{ "ocbi",{A_IND_N},{HEX_0,REG_N,HEX_9,HEX_3}},
/* 0000nnnn10100011 ocbp @<REG_N> */{"ocbp",{A_IND_N},{HEX_0,REG_N,HEX_A,HEX_3}},
/* 0000nnnn10100011 ocbp @<REG_N> */{ "ocbp",{A_IND_N},{HEX_0,REG_N,HEX_A,HEX_3}},
/* 0000nnnn10110011 ocbwb @<REG_N> */{"ocbwb",{A_IND_N},{HEX_0,REG_N,HEX_B,HEX_3}},
/* 0000nnnn10110011 ocbwb @<REG_N> */{ "ocbwb",{A_IND_N},{HEX_0,REG_N,HEX_B,HEX_3}},
/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM_8}},
/* 11001011i8*1.... or #<imm>,R0 */{ "or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM_8}},
/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}},
/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{ "or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}},
/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM_8}},
/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{ "or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM_8}},
/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}},
/* 0000nnnn10000011 pref @<REG_N> */{ "pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}},
/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}},
/* 0100nnnn00100100 rotcl <REG_N> */{ "rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}},
/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}},
/* 0100nnnn00100101 rotcr <REG_N> */{ "rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}},
/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}},
/* 0100nnnn00000100 rotl <REG_N> */{ "rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}},
/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}},
/* 0100nnnn00000101 rotr <REG_N> */{ "rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}},
/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}},
/* 0000000000101011 rte */{ "rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}},
/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}},
/* 0000000000001011 rts */{ "rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}},
/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}},
/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}},
/* 0000000001011000 sets */{ "sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}},
/* 0000000000011000 sett */{ "sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}},
/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}},
/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{ "shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}},
/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}},
/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{ "shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}},
/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}},
/* 0100nnnn00100000 shal <REG_N> */{ "shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}},
/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}},
/* 0100nnnn00100001 shar <REG_N> */{ "shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}},
/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}},
/* 0100nnnn00000000 shll <REG_N> */{ "shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}},
/* 0100nnnn00101000 shll16 <REG_N> */{"shll16",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_8}},
/* 0100nnnn00101000 shll16 <REG_N> */{ "shll16",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_8}},
/* 0100nnnn00001000 shll2 <REG_N> */{"shll2",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_8}},
/* 0100nnnn00001000 shll2 <REG_N> */{ "shll2",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_8}},
/* 0100nnnn00011000 shll8 <REG_N> */{"shll8",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_8}},
/* 0100nnnn00011000 shll8 <REG_N> */{ "shll8",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_8}},
/* 0100nnnn00000001 shlr <REG_N> */{"shlr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_1}},
/* 0100nnnn00000001 shlr <REG_N> */{ "shlr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_1}},
/* 0100nnnn00101001 shlr16 <REG_N> */{"shlr16",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_9}},
/* 0100nnnn00101001 shlr16 <REG_N> */{ "shlr16",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_9}},
/* 0100nnnn00001001 shlr2 <REG_N> */{"shlr2",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_9}},
/* 0100nnnn00001001 shlr2 <REG_N> */{ "shlr2",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_9}},
/* 0100nnnn00011001 shlr8 <REG_N> */{"shlr8",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_9}},
/* 0100nnnn00011001 shlr8 <REG_N> */{ "shlr8",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_9}},
/* 0000000000011011 sleep */{"sleep",{0},{HEX_0,HEX_0,HEX_1,HEX_B}},
/* 0000000000011011 sleep */{ "sleep",{0},{HEX_0,HEX_0,HEX_1,HEX_B}},
/* 0000nnnn00000010 stc SR,<REG_N> */{"stc",{A_SR,A_REG_N},{HEX_0,REG_N,HEX_0,HEX_2}},
/* 0000nnnn00000010 stc SR,<REG_N> */{ "stc",{A_SR,A_REG_N},{HEX_0,REG_N,HEX_0,HEX_2}},
/* 0000nnnn00010010 stc GBR,<REG_N> */{"stc",{A_GBR,A_REG_N},{HEX_0,REG_N,HEX_1,HEX_2}},
/* 0000nnnn00010010 stc GBR,<REG_N> */{ "stc",{A_GBR,A_REG_N},{HEX_0,REG_N,HEX_1,HEX_2}},
/* 0000nnnn00100010 stc VBR,<REG_N> */{"stc",{A_VBR,A_REG_N},{HEX_0,REG_N,HEX_2,HEX_2}},
/* 0000nnnn00100010 stc VBR,<REG_N> */{ "stc",{A_VBR,A_REG_N},{HEX_0,REG_N,HEX_2,HEX_2}},
/* 0000nnnn00110010 stc SSR,<REG_N> */{"stc",{A_SSR,A_REG_N},{HEX_0,REG_N,HEX_3,HEX_2}},
/* 0000nnnn00110010 stc SSR,<REG_N> */{ "stc",{A_SSR,A_REG_N},{HEX_0,REG_N,HEX_3,HEX_2}},
/* 0000nnnn01000010 stc SPC,<REG_N> */{"stc",{A_SPC,A_REG_N},{HEX_0,REG_N,HEX_4,HEX_2}},
/* 0000nnnn01000010 stc SPC,<REG_N> */{ "stc",{A_SPC,A_REG_N},{HEX_0,REG_N,HEX_4,HEX_2}},
/* 0000nnnn01100010 stc SGR,<REG_N> */{"stc",{A_SGR,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_2}},
/* 0000nnnn01100010 stc SGR,<REG_N> */{ "stc",{A_SGR,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_2}},
/* 0000nnnn01110010 stc DBR,<REG_N> */{"stc",{A_DBR,A_REG_N},{HEX_0,REG_N,HEX_7,HEX_2}},
/* 0000nnnn01110010 stc DBR,<REG_N> */{ "stc",{A_DBR,A_REG_N},{HEX_0,REG_N,HEX_7,HEX_2}},
/* 0000nnnn1xxx0012 stc Rn_BANK,<REG_N> */{"stc",{A_REG_B,A_REG_N},{HEX_0,REG_N,REG_B,HEX_2}},
/* 0000nnnn1xxx0012 stc Rn_BANK,<REG_N> */{ "stc",{A_REG_B,A_REG_N},{HEX_0,REG_N,REG_B,HEX_2}},
/* 0100nnnn00000011 stc.l SR,@-<REG_N> */{"stc.l",{A_SR,A_DEC_N},{HEX_4,REG_N,HEX_0,HEX_3}},
/* 0100nnnn00000011 stc.l SR,@-<REG_N> */{ "stc.l",{A_SR,A_DEC_N},{HEX_4,REG_N,HEX_0,HEX_3}},
/* 0100nnnn00010011 stc.l GBR,@-<REG_N> */{"stc.l",{A_GBR,A_DEC_N},{HEX_4,REG_N,HEX_1,HEX_3}},
/* 0100nnnn00010011 stc.l GBR,@-<REG_N> */{ "stc.l",{A_GBR,A_DEC_N},{HEX_4,REG_N,HEX_1,HEX_3}},
/* 0100nnnn00100011 stc.l VBR,@-<REG_N> */{"stc.l",{A_VBR,A_DEC_N},{HEX_4,REG_N,HEX_2,HEX_3}},
/* 0100nnnn00100011 stc.l VBR,@-<REG_N> */{ "stc.l",{A_VBR,A_DEC_N},{HEX_4,REG_N,HEX_2,HEX_3}},
/* 0100nnnn00110011 stc.l SSR,@-<REG_N> */{"stc.l",{A_SSR,A_DEC_N},{HEX_4,REG_N,HEX_3,HEX_3}},
/* 0100nnnn00110011 stc.l SSR,@-<REG_N> */{ "stc.l",{A_SSR,A_DEC_N},{HEX_4,REG_N,HEX_3,HEX_3}},
/* 0100nnnn01000011 stc.l SPC,@-<REG_N> */{"stc.l",{A_SPC,A_DEC_N},{HEX_4,REG_N,HEX_4,HEX_3}},
/* 0100nnnn01000011 stc.l SPC,@-<REG_N> */{ "stc.l",{A_SPC,A_DEC_N},{HEX_4,REG_N,HEX_4,HEX_3}},
/* 0100nnnn01100011 stc.l SGR,@-<REG_N> */{"stc.l",{A_SGR,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_3}},
/* 0100nnnn01100011 stc.l SGR,@-<REG_N> */{ "stc.l",{A_SGR,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_3}},
/* 0100nnnn01110011 stc.l DBR,@-<REG_N> */{"stc.l",{A_DBR,A_DEC_N},{HEX_4,REG_N,HEX_7,HEX_3}},
/* 0100nnnn01110011 stc.l DBR,@-<REG_N> */{ "stc.l",{A_DBR,A_DEC_N},{HEX_4,REG_N,HEX_7,HEX_3}},
/* 0100nnnn1xxx0012 stc.l Rn_BANK,@-<REG_N> */{"stc.l",{A_REG_B,A_DEC_N},{HEX_4,REG_N,REG_B,HEX_3}},
/* 0100nnnn1xxx0012 stc.l Rn_BANK,@-<REG_N> */{ "stc.l",{A_REG_B,A_DEC_N},{HEX_4,REG_N,REG_B,HEX_3}},
/* 0000nnnn00001010 sts MACH,<REG_N> */{"sts",{A_MACH,A_REG_N},{HEX_0,REG_N,HEX_0,HEX_A}},
/* 0000nnnn00001010 sts MACH,<REG_N> */{ "sts",{A_MACH,A_REG_N},{HEX_0,REG_N,HEX_0,HEX_A}},
/* 0000nnnn00011010 sts MACL,<REG_N> */{"sts",{A_MACL,A_REG_N},{HEX_0,REG_N,HEX_1,HEX_A}},
/* 0000nnnn00011010 sts MACL,<REG_N> */{ "sts",{A_MACL,A_REG_N},{HEX_0,REG_N,HEX_1,HEX_A}},
/* 0000nnnn00101010 sts PR,<REG_N> */{"sts",{A_PR,A_REG_N},{HEX_0,REG_N,HEX_2,HEX_A}},
/* 0000nnnn00101010 sts PR,<REG_N> */{ "sts",{A_PR,A_REG_N},{HEX_0,REG_N,HEX_2,HEX_A}},
/* 0000nnnn01011010 sts FPUL,<REG_N> */{"sts",{FPUL_M,A_REG_N},{HEX_0,REG_N,HEX_5,HEX_A}},
/* 0000nnnn01011010 sts FPUL,<REG_N> */{ "sts",{FPUL_M,A_REG_N},{HEX_0,REG_N,HEX_5,HEX_A}},
/* 0000nnnn01101010 sts FPSCR,<REG_N> */{"sts",{FPSCR_M,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_A}},
/* 0000nnnn01101010 sts FPSCR,<REG_N> */{ "sts",{FPSCR_M,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_A}},
/* 0100nnnn00000010 sts.l MACH,@-<REG_N>*/{"sts.l",{A_MACH,A_DEC_N},{HEX_4,REG_N,HEX_0,HEX_2}},
/* 0100nnnn00000010 sts.l MACH,@-<REG_N>*/{ "sts.l",{A_MACH,A_DEC_N},{HEX_4,REG_N,HEX_0,HEX_2}},
/* 0100nnnn00010010 sts.l MACL,@-<REG_N>*/{"sts.l",{A_MACL,A_DEC_N},{HEX_4,REG_N,HEX_1,HEX_2}},
/* 0100nnnn00010010 sts.l MACL,@-<REG_N>*/{ "sts.l",{A_MACL,A_DEC_N},{HEX_4,REG_N,HEX_1,HEX_2}},
/* 0100nnnn00100010 sts.l PR,@-<REG_N> */{"sts.l",{A_PR,A_DEC_N},{HEX_4,REG_N,HEX_2,HEX_2}},
/* 0100nnnn00100010 sts.l PR,@-<REG_N> */{ "sts.l",{A_PR,A_DEC_N},{HEX_4,REG_N,HEX_2,HEX_2}},
/* 0100nnnn01010010 sts.l FPUL,@-<REG_N>*/{"sts.l",{FPUL_M,A_DEC_N},{HEX_4,REG_N,HEX_5,HEX_2}},
/* 0100nnnn01010010 sts.l FPUL,@-<REG_N>*/{ "sts.l",{FPUL_M,A_DEC_N},{HEX_4,REG_N,HEX_5,HEX_2}},
/* 0100nnnn01100010 sts.l FPSCR,@-<REG_N>*/{"sts.l",{FPSCR_M,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_2}},
/* 0100nnnn01100010 sts.l FPSCR,@-<REG_N>*/{ "sts.l",{FPSCR_M,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_2}},
/* 0011nnnnmmmm1000 sub <REG_M>,<REG_N> */{"sub",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_8}},
/* 0011nnnnmmmm1000 sub <REG_M>,<REG_N> */{ "sub",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_8}},
/* 0011nnnnmmmm1010 subc <REG_M>,<REG_N>*/{"subc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_A}},
/* 0011nnnnmmmm1010 subc <REG_M>,<REG_N>*/{ "subc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_A}},
/* 0011nnnnmmmm1011 subv <REG_M>,<REG_N>*/{"subv",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_B}},
/* 0011nnnnmmmm1011 subv <REG_M>,<REG_N>*/{ "subv",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_B}},
/* 0110nnnnmmmm1000 swap.b <REG_M>,<REG_N>*/{"swap.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_8}},
/* 0110nnnnmmmm1000 swap.b <REG_M>,<REG_N>*/{ "swap.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_8}},
/* 0110nnnnmmmm1001 swap.w <REG_M>,<REG_N>*/{"swap.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_9}},
/* 0110nnnnmmmm1001 swap.w <REG_M>,<REG_N>*/{ "swap.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_9}},
/* 0100nnnn00011011 tas.b @<REG_N> */{"tas.b",{A_IND_N},{HEX_4,REG_N,HEX_1,HEX_B}},
/* 0100nnnn00011011 tas.b @<REG_N> */{ "tas.b",{A_IND_N},{HEX_4,REG_N,HEX_1,HEX_B}},
/* 11000011i8*1.... trapa #<imm> */{"trapa",{A_IMM},{HEX_C,HEX_3,IMM_8}},
/* 11000011i8*1.... trapa #<imm> */{ "trapa",{A_IMM},{HEX_C,HEX_3,IMM_8}},
/* 11001000i8*1.... tst #<imm>,R0 */{"tst",{A_IMM,A_R0},{HEX_C,HEX_8,IMM_8}},
/* 11001000i8*1.... tst #<imm>,R0 */{ "tst",{A_IMM,A_R0},{HEX_C,HEX_8,IMM_8}},
/* 0010nnnnmmmm1000 tst <REG_M>,<REG_N> */{"tst",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_8}},
/* 0010nnnnmmmm1000 tst <REG_M>,<REG_N> */{ "tst",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_8}},
/* 11001100i8*1.... tst.b #<imm>,@(R0,GBR)*/{"tst.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_C,IMM_8}},
/* 11001100i8*1.... tst.b #<imm>,@(R0,GBR)*/{ "tst.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_C,IMM_8}},
/* 11001010i8*1.... xor #<imm>,R0 */{"xor",{A_IMM,A_R0},{HEX_C,HEX_A,IMM_8}},
/* 11001010i8*1.... xor #<imm>,R0 */{ "xor",{A_IMM,A_R0},{HEX_C,HEX_A,IMM_8}},
/* 0010nnnnmmmm1010 xor <REG_M>,<REG_N> */{"xor",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_A}},
/* 0010nnnnmmmm1010 xor <REG_M>,<REG_N> */{ "xor",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_A}},
/* 11001110i8*1.... xor.b #<imm>,@(R0,GBR)*/{"xor.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_E,IMM_8}},
/* 11001110i8*1.... xor.b #<imm>,@(R0,GBR)*/{ "xor.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_E,IMM_8}},
/* 0010nnnnmmmm1101 xtrct <REG_M>,<REG_N>*/{"xtrct",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_D}},
/* 0010nnnnmmmm1101 xtrct <REG_M>,<REG_N>*/{ "xtrct",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_D}},
/* 0000nnnnmmmm0111 mul.l <REG_M>,<REG_N>*/{"mul.l",{ A_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_7}},
/* 0000nnnnmmmm0111 mul.l <REG_M>,<REG_N>*/{ "mul.l",{ A_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_7}},
/* 0100nnnn00010000 dt <REG_N> */{"dt",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_0}},
/* 0100nnnn00010000 dt <REG_N> */{ "dt",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_0}},
/* 0011nnnnmmmm1101 dmuls.l <REG_M>,<REG_N>*/{"dmuls.l",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_D}},
/* 0011nnnnmmmm1101 dmuls.l <REG_M>,<REG_N>*/{ "dmuls.l",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_D}},
/* 0011nnnnmmmm0101 dmulu.l <REG_M>,<REG_N>*/{"dmulu.l",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_5}},
/* 0011nnnnmmmm0101 dmulu.l <REG_M>,<REG_N>*/{ "dmulu.l",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_5}},
/* 0000nnnnmmmm1111 mac.l @<REG_M>+,@<REG_N>+*/{"mac.l",{A_INC_M,A_INC_N},{HEX_0,REG_N,REG_M,HEX_F}},
/* 0000nnnnmmmm1111 mac.l @<REG_M>+,@<REG_N>+*/{ "mac.l",{A_INC_M,A_INC_N},{HEX_0,REG_N,REG_M,HEX_F}},
/* 0000nnnn00100011 braf <REG_N> */{"braf",{A_REG_N},{HEX_0,REG_N,HEX_2,HEX_3}},
/* 0000nnnn00100011 braf <REG_N> */{ "braf",{A_REG_N},{HEX_0,REG_N,HEX_2,HEX_3}},
/* 0000nnnn00000011 bsrf <REG_N> */{"bsrf",{A_REG_N},{HEX_0,REG_N,HEX_0,HEX_3}},
/* 0000nnnn00000011 bsrf <REG_N> */{ "bsrf",{A_REG_N},{HEX_0,REG_N,HEX_0,HEX_3}},
/* 1111nnnn01011101 fabs <F_REG_N> */{"fabs",{FD_REG_N},{HEX_F,REG_N,HEX_5,HEX_D}},
/* 1111nnnn01011101 fabs <F_REG_N> */{ "fabs",{FD_REG_N},{HEX_F,REG_N,HEX_5,HEX_D}},
/* 1111nnnnmmmm0000 fadd <F_REG_M>,<F_REG_N>*/{"fadd",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_0}},
/* 1111nnn0mmm00000 fadd <D_REG_M>,<D_REG_N>*/{"fadd",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_0}},
/* 1111nnnnmmmm0000 fadd <F_REG_M>,<F_REG_N>*/{ "fadd",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_0}},
/* 1111nnn0mmm00000 fadd <D_REG_M>,<D_REG_N>*/{ "fadd",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_0}},
/* 1111nnnnmmmm0100 fcmp/eq <F_REG_M>,<F_REG_N>*/{"fcmp/eq",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_4}},
/* 1111nnn0mmm00100 fcmp/eq <D_REG_M>,<D_REG_N>*/{"fcmp/eq",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_4}},
/* 1111nnnnmmmm0100 fcmp/eq <F_REG_M>,<F_REG_N>*/{ "fcmp/eq",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_4}},
/* 1111nnn0mmm00100 fcmp/eq <D_REG_M>,<D_REG_N>*/{ "fcmp/eq",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_4}},
/* 1111nnnnmmmm0101 fcmp/gt <F_REG_M>,<F_REG_N>*/{"fcmp/gt",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_5}},
/* 1111nnn0mmm00101 fcmp/gt <D_REG_M>,<D_REG_N>*/{"fcmp/gt",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_5}},
/* 1111nnnnmmmm0101 fcmp/gt <F_REG_M>,<F_REG_N>*/{ "fcmp/gt",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_5}},
/* 1111nnn0mmm00101 fcmp/gt <D_REG_M>,<D_REG_N>*/{ "fcmp/gt",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_5}},
/* 1111nnn010111101 fcnvds <D_REG_N>,FPUL*/{"fcnvds",{D_REG_N,FPUL_M},{HEX_F,REG_N,HEX_B,HEX_D}},
/* 1111nnn010111101 fcnvds <D_REG_N>,FPUL*/{ "fcnvds",{D_REG_N,FPUL_M},{HEX_F,REG_N,HEX_B,HEX_D}},
/* 1111nnn010101101 fcnvsd FPUL,<D_REG_N>*/{"fcnvsd",{FPUL_M,D_REG_N},{HEX_F,REG_N,HEX_A,HEX_D}},
/* 1111nnn010101101 fcnvsd FPUL,<D_REG_N>*/{ "fcnvsd",{FPUL_M,D_REG_N},{HEX_F,REG_N,HEX_A,HEX_D}},
/* 1111nnnnmmmm0011 fdiv <F_REG_M>,<F_REG_N>*/{"fdiv",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_3}},
/* 1111nnn0mmm00011 fdiv <D_REG_M>,<D_REG_N>*/{"fdiv",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_3}},
/* 1111nnnnmmmm0011 fdiv <F_REG_M>,<F_REG_N>*/{ "fdiv",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_3}},
/* 1111nnn0mmm00011 fdiv <D_REG_M>,<D_REG_N>*/{ "fdiv",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_3}},
/* 1111nnmm11101101 fipr <V_REG_M>,<V_REG_N>*/{"fipr",{V_REG_M,V_REG_N},{HEX_F,REG_NM,HEX_E,HEX_D}},
/* 1111nnmm11101101 fipr <V_REG_M>,<V_REG_N>*/{ "fipr",{V_REG_M,V_REG_N},{HEX_F,REG_NM,HEX_E,HEX_D}},
/* 1111nnnn10001101 fldi0 <F_REG_N> */{"fldi0",{F_REG_N},{HEX_F,REG_N,HEX_8,HEX_D}},
/* 1111nnnn10001101 fldi0 <F_REG_N> */{ "fldi0",{F_REG_N},{HEX_F,REG_N,HEX_8,HEX_D}},
/* 1111nnnn10011101 fldi1 <F_REG_N> */{"fldi1",{F_REG_N},{HEX_F,REG_N,HEX_9,HEX_D}},
/* 1111nnnn10011101 fldi1 <F_REG_N> */{ "fldi1",{F_REG_N},{HEX_F,REG_N,HEX_9,HEX_D}},
/* 1111nnnn00011101 flds <F_REG_N>,FPUL*/{"flds",{F_REG_N,FPUL_M},{HEX_F,REG_N,HEX_1,HEX_D}},
/* 1111nnnn00011101 flds <F_REG_N>,FPUL*/{ "flds",{F_REG_N,FPUL_M},{HEX_F,REG_N,HEX_1,HEX_D}},
/* 1111nnnn00101101 float FPUL,<FD_REG_N>*/{"float",{FPUL_M,FD_REG_N},{HEX_F,REG_N,HEX_2,HEX_D}},
/* 1111nnnn00101101 float FPUL,<FD_REG_N>*/{ "float",{FPUL_M,FD_REG_N},{HEX_F,REG_N,HEX_2,HEX_D}},
/* 1111nnnnmmmm1110 fmac FR0,<F_REG_M>,<F_REG_N>*/{"fmac",{F_FR0,F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_E}},
/* 1111nnnnmmmm1110 fmac FR0,<F_REG_M>,<F_REG_N>*/{ "fmac",{F_FR0,F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_E}},
/* 1111nnnnmmmm1100 fmov <F_REG_M>,<F_REG_N>*/{"fmov",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_C}},
/* 1111nnnnmmmm1100 fmov <DX_REG_M>,<DX_REG_N>*/{"fmov",{DX_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_C}},
/* 1111nnnnmmmm1100 fmov <F_REG_M>,<F_REG_N>*/{ "fmov",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_C}},
/* 1111nnnnmmmm1100 fmov <DX_REG_M>,<DX_REG_N>*/{ "fmov",{DX_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_C}},
/* 1111nnnnmmmm1000 fmov @<REG_M>,<F_REG_N>*/{"fmov",{A_IND_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1000 fmov @<REG_M>,<DX_REG_N>*/{"fmov",{A_IND_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1000 fmov @<REG_M>,<F_REG_N>*/{ "fmov",{A_IND_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1000 fmov @<REG_M>,<DX_REG_N>*/{ "fmov",{A_IND_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1010 fmov <F_REG_M>,@<REG_N>*/{"fmov",{F_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1010 fmov <DX_REG_M>,@<REG_N>*/{"fmov",{DX_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1010 fmov <F_REG_M>,@<REG_N>*/{ "fmov",{F_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1010 fmov <DX_REG_M>,@<REG_N>*/{ "fmov",{DX_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1001 fmov @<REG_M>+,<F_REG_N>*/{"fmov",{A_INC_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1001 fmov @<REG_M>+,<DX_REG_N>*/{"fmov",{A_INC_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1001 fmov @<REG_M>+,<F_REG_N>*/{ "fmov",{A_INC_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1001 fmov @<REG_M>+,<DX_REG_N>*/{ "fmov",{A_INC_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1011 fmov <F_REG_M>,@-<REG_N>*/{"fmov",{F_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm1011 fmov <DX_REG_M>,@-<REG_N>*/{"fmov",{DX_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm1011 fmov <F_REG_M>,@-<REG_N>*/{ "fmov",{F_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm1011 fmov <DX_REG_M>,@-<REG_N>*/{ "fmov",{DX_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm0110 fmov @(R0,<REG_M>),<F_REG_N>*/{"fmov",{A_IND_R0_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0110 fmov @(R0,<REG_M>),<DX_REG_N>*/{"fmov",{A_IND_R0_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0110 fmov @(R0,<REG_M>),<F_REG_N>*/{ "fmov",{A_IND_R0_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0110 fmov @(R0,<REG_M>),<DX_REG_N>*/{ "fmov",{A_IND_R0_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0111 fmov <F_REG_M>,@(R0,<REG_N>)*/{"fmov",{F_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm0111 fmov <DX_REG_M>,@(R0,<REG_N>)*/{"fmov",{DX_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm0111 fmov <F_REG_M>,@(R0,<REG_N>)*/{ "fmov",{F_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm0111 fmov <DX_REG_M>,@(R0,<REG_N>)*/{ "fmov",{DX_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm1000 fmov.d @<REG_M>,<DX_REG_N>*/{"fmov.d",{A_IND_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1000 fmov.d @<REG_M>,<DX_REG_N>*/{ "fmov.d",{A_IND_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1010 fmov.d <DX_REG_M>,@<REG_N>*/{"fmov.d",{DX_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1010 fmov.d <DX_REG_M>,@<REG_N>*/{ "fmov.d",{DX_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1001 fmov.d @<REG_M>+,<DX_REG_N>*/{"fmov.d",{A_INC_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1001 fmov.d @<REG_M>+,<DX_REG_N>*/{ "fmov.d",{A_INC_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1011 fmov.d <DX_REG_M>,@-<REG_N>*/{"fmov.d",{DX_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm1011 fmov.d <DX_REG_M>,@-<REG_N>*/{ "fmov.d",{DX_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm0110 fmov.d @(R0,<REG_M>),<DX_REG_N>*/{"fmov.d",{A_IND_R0_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0110 fmov.d @(R0,<REG_M>),<DX_REG_N>*/{ "fmov.d",{A_IND_R0_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0111 fmov.d <DX_REG_M>,@(R0,<REG_N>)*/{"fmov.d",{DX_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm0111 fmov.d <DX_REG_M>,@(R0,<REG_N>)*/{ "fmov.d",{DX_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm1000 fmov.s @<REG_M>,<F_REG_N>*/{"fmov.s",{A_IND_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1000 fmov.s @<REG_M>,<F_REG_N>*/{ "fmov.s",{A_IND_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_8}},
/* 1111nnnnmmmm1010 fmov.s <F_REG_M>,@<REG_N>*/{"fmov.s",{F_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1010 fmov.s <F_REG_M>,@<REG_N>*/{ "fmov.s",{F_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}},
/* 1111nnnnmmmm1001 fmov.s @<REG_M>+,<F_REG_N>*/{"fmov.s",{A_INC_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1001 fmov.s @<REG_M>+,<F_REG_N>*/{ "fmov.s",{A_INC_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_9}},
/* 1111nnnnmmmm1011 fmov.s <F_REG_M>,@-<REG_N>*/{"fmov.s",{F_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm1011 fmov.s <F_REG_M>,@-<REG_N>*/{ "fmov.s",{F_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}},
/* 1111nnnnmmmm0110 fmov.s @(R0,<REG_M>),<F_REG_N>*/{"fmov.s",{A_IND_R0_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0110 fmov.s @(R0,<REG_M>),<F_REG_N>*/{ "fmov.s",{A_IND_R0_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_6}},
/* 1111nnnnmmmm0111 fmov.s <F_REG_M>,@(R0,<REG_N>)*/{"fmov.s",{F_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm0111 fmov.s <F_REG_M>,@(R0,<REG_N>)*/{ "fmov.s",{F_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}},
/* 1111nnnnmmmm0010 fmul <F_REG_M>,<F_REG_N>*/{"fmul",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_2}},
/* 1111nnn0mmm00010 fmul <D_REG_M>,<D_REG_N>*/{"fmul",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_2}},
/* 1111nnnnmmmm0010 fmul <F_REG_M>,<F_REG_N>*/{ "fmul",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_2}},
/* 1111nnn0mmm00010 fmul <D_REG_M>,<D_REG_N>*/{ "fmul",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_2}},
/* 1111nnnn01001101 fneg <FD_REG_N> */{"fneg",{FD_REG_N},{HEX_F,REG_N,HEX_4,HEX_D}},
/* 1111nnnn01001101 fneg <FD_REG_N> */{ "fneg",{FD_REG_N},{HEX_F,REG_N,HEX_4,HEX_D}},
/* 1111101111111101 frchg */{"frchg",{0},{HEX_F,HEX_B,HEX_F,HEX_D}},
/* 1111101111111101 frchg */{ "frchg",{0},{HEX_F,HEX_B,HEX_F,HEX_D}},
/* 1111001111111101 fschg */{"fschg",{0},{HEX_F,HEX_3,HEX_F,HEX_D}},
/* 1111001111111101 fschg */{ "fschg",{0},{HEX_F,HEX_3,HEX_F,HEX_D}},
/* 1111nnnn01101101 fsqrt <FD_REG_N> */{"fsqrt",{FD_REG_N},{HEX_F,REG_N,HEX_6,HEX_D}},
/* 1111nnnn01101101 fsqrt <FD_REG_N> */{ "fsqrt",{FD_REG_N},{HEX_F,REG_N,HEX_6,HEX_D}},
/* 1111nnnn00001101 fsts FPUL,<F_REG_N>*/{"fsts",{FPUL_M,F_REG_N},{HEX_F,REG_N,HEX_0,HEX_D}},
/* 1111nnnn00001101 fsts FPUL,<F_REG_N>*/{ "fsts",{FPUL_M,F_REG_N},{HEX_F,REG_N,HEX_0,HEX_D}},
/* 1111nnnnmmmm0001 fsub <F_REG_M>,<F_REG_N>*/{"fsub",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_1}},
/* 1111nnn0mmm00001 fsub <D_REG_M>,<D_REG_N>*/{"fsub",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_1}},
/* 1111nnnnmmmm0001 fsub <F_REG_M>,<F_REG_N>*/{ "fsub",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_1}},
/* 1111nnn0mmm00001 fsub <D_REG_M>,<D_REG_N>*/{ "fsub",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_1}},
/* 1111nnnn00111101 ftrc <FD_REG_N>,FPUL*/{"ftrc",{FD_REG_N,FPUL_M},{HEX_F,REG_N,HEX_3,HEX_D}},
/* 1111nnnn00111101 ftrc <FD_REG_N>,FPUL*/{ "ftrc",{FD_REG_N,FPUL_M},{HEX_F,REG_N,HEX_3,HEX_D}},
/* 1111nn0111111101 ftrv XMTRX_M4,<V_REG_n>*/{"ftrv",{XMTRX_M4,V_REG_N},{HEX_F,REG_NM,HEX_F,HEX_D}},
/* 1111nn0111111101 ftrv XMTRX_M4,<V_REG_n>*/{ "ftrv",{XMTRX_M4,V_REG_N},{HEX_F,REG_NM,HEX_F,HEX_D}},
{ 0 }
};

File diff suppressed because it is too large Load Diff

View File

@ -4225,365 +4225,365 @@ typedef struct lookup_t {
} LookupTable;
LookupTable oplookup[] = {
{"aaa", 0, NULL, 0x37, 1},
{"aad", 0, NULL, 0xd50a, 2},
{"aam", 0, opaam, 0},
{"aas", 0, NULL, 0x3f, 1},
{"adc", 0, &opadc, 0},
{"add", 0, &opadd, 0},
{"adx", 0, NULL, 0xd4, 1},
{"amx", 0, NULL, 0xd5, 1},
{"and", 0, &opand, 0},
{"bsf", 0, &opbs, 0},
{"bsr", 0, &opbs, 0},
{"bswap", 0, &opbswap, 0},
{"call", 0, &opcall, 0},
{"cbw", 0, NULL, 0x6698, 2},
{"cdq", 0, NULL, 0x99, 1},
{"cdqe", 0, &opcdqe, 0},
{"cwde", 0, &opcdqe, 0},
{"clc", 0, NULL, 0xf8, 1},
{"cld", 0, NULL, 0xfc, 1},
{"clflush", 0, &opclflush, 0},
{"clgi", 0, NULL, 0x0f01dd, 3},
{"cli", 0, NULL, 0xfa, 1},
{"clts", 0, NULL, 0x0f06, 2},
{"cmc", 0, NULL, 0xf5, 1},
{"cmovo", 0, &opcmov, 0},
{"cmovno", 0, &opcmov, 0},
{"cmovb", 0, &opcmov, 0},
{"cmovc", 0, &opcmov, 0},
{"cmovnae", 0, &opcmov, 0},
{"cmovae", 0, &opcmov, 0},
{"cmovnb", 0, &opcmov, 0},
{"cmovnc", 0, &opcmov, 0},
{"cmove", 0, &opcmov, 0},
{"cmovz", 0, &opcmov, 0},
{"cmovne", 0, &opcmov, 0},
{"cmovnz", 0, &opcmov, 0},
{"cmovbe", 0, &opcmov, 0},
{"cmovna", 0, &opcmov, 0},
{"cmova", 0, &opcmov, 0},
{"cmovnbe", 0, &opcmov, 0},
{"cmovne", 0, &opcmov, 0},
{"cmovnz", 0, &opcmov, 0},
{"cmovs", 0, &opcmov, 0},
{"cmovns", 0, &opcmov, 0},
{"cmovp", 0, &opcmov, 0},
{"cmovpe", 0, &opcmov, 0},
{"cmovnp", 0, &opcmov, 0},
{"cmovpo", 0, &opcmov, 0},
{"cmovl", 0, &opcmov, 0},
{"cmovnge", 0, &opcmov, 0},
{"cmovge", 0, &opcmov, 0},
{"cmovnl", 0, &opcmov, 0},
{"cmovle", 0, &opcmov, 0},
{"cmovng", 0, &opcmov, 0},
{"cmovg", 0, &opcmov, 0},
{"cmovnle", 0, &opcmov, 0},
{"cmp", 0, &opcmp, 0},
{"cmpsb", 0, NULL, 0xa6, 1},
{"cmpsd", 0, NULL, 0xa7, 1},
{"cmpsw", 0, NULL, 0x66a7, 2},
{"cpuid", 0, NULL, 0x0fa2, 2},
{"cwd", 0, NULL, 0x6699, 2},
{"cwde", 0, NULL, 0x98, 1},
{"daa", 0, NULL, 0x27, 1},
{"das", 0, NULL, 0x2f, 1},
{"dec", 0, &opdec, 0},
{"div", 0, &opdiv, 0},
{"emms", 0, NULL, 0x0f77, 2},
{"endbr32", 0, endbr32, 0},
{"endbr64", 0, endbr64, 0},
{"f2xm1", 0, NULL, 0xd9f0, 2},
{"fabs", 0, NULL, 0xd9e1, 2},
{"fadd", 0, &opfadd, 0},
{"faddp", 0, &opfaddp, 0},
{"fbld", 0, &opfbld, 0},
{"fbstp", 0, &opfbstp, 0},
{"fchs", 0, NULL, 0xd9e0, 2},
{"fclex", 0, NULL, 0x9bdbe2, 3},
{"fcmovb", 0, &opfcmov, 0},
{"fcmove", 0, &opfcmov, 0},
{"fcmovbe", 0, &opfcmov, 0},
{"fcmovu", 0, &opfcmov, 0},
{"fcmovnb", 0, &opfcmov, 0},
{"fcmovne", 0, &opfcmov, 0},
{"fcmovnbe", 0, &opfcmov, 0},
{"fcmovnu", 0, &opfcmov, 0},
{"fcos", 0, NULL, 0xd9ff, 2},
{"fdecstp", 0, NULL, 0xd9f6, 2},
{"fdiv", 0, &opfdiv, 0},
{"fdivp", 0, &opfdivp, 0},
{"fdivr", 0, &opfdivr, 0},
{"fdivrp", 0, &opfdivrp, 0},
{"femms", 0, NULL, 0x0f0e, 2},
{"ffree", 0, &opffree, 0},
{"fiadd", 0, &opfiadd, 0},
{"ficom", 0, &opficom, 0},
{"ficomp", 0, &opficomp, 0},
{"fidiv", 0, &opfidiv, 0},
{"fidivr", 0, &opfidivr, 0},
{"fild", 0, &opfild, 0},
{"fimul", 0, &opfimul, 0},
{"fincstp", 0, NULL, 0xd9f7, 2},
{"finit", 0, NULL, 0x9bdbe3, 3},
{"fist", 0, &opfist, 0},
{"fistp", 0, &opfistp, 0},
{"fisttp", 0, &opfisttp, 0},
{"fisub", 0, &opfisub, 0},
{"fisubr", 0, &opfisubr, 0},
{"fld1", 0, NULL, 0xd9e8, 2},
{"fldcw", 0, &opfldcw, 0},
{"fldenv", 0, &opfldenv, 0},
{"fldl2t", 0, NULL, 0xd9e9, 2},
{"fldl2e", 0, NULL, 0xd9ea, 2},
{"fldlg2", 0, NULL, 0xd9ec, 2},
{"fldln2", 0, NULL, 0xd9ed, 2},
{"fldpi", 0, NULL, 0xd9eb, 2},
{"fldz", 0, NULL, 0xd9ee, 2},
{"fmul", 0, &opfmul, 0},
{"fmulp", 0, &opfmulp, 0},
{"fnclex", 0, NULL, 0xdbe2, 2},
{"fninit", 0, NULL, 0xdbe3, 2},
{"fnop", 0, NULL, 0xd9d0, 2},
{"fnsave", 0, &opfnsave, 0},
{"fnstcw", 0, &opfnstcw, 0},
{"fnstenv", 0, &opfnstenv, 0},
{"fnstsw", 0, &opfnstsw, 0},
{"fpatan", 0, NULL, 0xd9f3, 2},
{"fprem", 0, NULL, 0xd9f8, 2},
{"fprem1", 0, NULL, 0xd9f5, 2},
{"fptan", 0, NULL, 0xd9f2, 2},
{"frndint", 0, NULL, 0xd9fc, 2},
{"frstor", 0, &opfrstor, 0},
{"fsave", 0, &opfsave, 0},
{"fscale", 0, NULL, 0xd9fd, 2},
{"fsin", 0, NULL, 0xd9fe, 2},
{"fsincos", 0, NULL, 0xd9fb, 2},
{"fsqrt", 0, NULL, 0xd9fa, 2},
{"fstcw", 0, &opfstcw, 0},
{"fstenv", 0, &opfstenv, 0},
{"fstsw", 0, &opfstsw, 0},
{"fsub", 0, &opfsub, 0},
{"fsubp", 0, &opfsubp, 0},
{"fsubr", 0, &opfsubr, 0},
{"fsubrp", 0, &opfsubrp, 0},
{"ftst", 0, NULL, 0xd9e4, 2},
{"fucom", 0, &opfucom, 0},
{"fucomp", 0, &opfucomp, 0},
{"fucompp", 0, NULL, 0xdae9, 2},
{"fwait", 0, NULL, 0x9b, 1},
{"fxam", 0, NULL, 0xd9e5, 2},
{"fxch", 0, &opfxch, 0},
{"fxrstor", 0, &opfxrstor, 0},
{"fxsave", 0, &opfxsave, 0},
{"fxtract", 0, NULL, 0xd9f4, 2},
{"fyl2x", 0, NULL, 0xd9f1, 2},
{"fyl2xp1", 0, NULL, 0xd9f9, 2},
{"getsec", 0, NULL, 0x0f37, 2},
{"hlt", 0, NULL, 0xf4, 1},
{"idiv", 0, &opidiv, 0},
{"imul", 0, &opimul, 0},
{"in", 0, &opin, 0},
{"inc", 0, &opinc, 0},
{"ins", 0, NULL, 0x6d, 1},
{"insb", 0, NULL, 0x6c, 1},
{"insd", 0, NULL, 0x6d, 1},
{"insw", 0, NULL, 0x666d, 2},
{"int", 0, &opint, 0},
{"int1", 0, NULL, 0xf1, 1},
{"int3", 0, NULL, 0xcc, 1},
{"into", 0, NULL, 0xce, 1},
{"invd", 0, NULL, 0x0f08, 2},
{"iret", 0, NULL, 0x66cf, 2},
{"iretd", 0, NULL, 0xcf, 1},
{"ja", 0, &opjc, 0},
{"jae", 0, &opjc, 0},
{"jb", 0, &opjc, 0},
{"jbe", 0, &opjc, 0},
{"jc", 0, &opjc, 0},
{"je", 0, &opjc, 0},
{"jg", 0, &opjc, 0},
{"jge", 0, &opjc, 0},
{"jl", 0, &opjc, 0},
{"jle", 0, &opjc, 0},
{"jmp", 0, &opjc, 0},
{"jna", 0, &opjc, 0},
{"jnae", 0, &opjc, 0},
{"jnb", 0, &opjc, 0},
{"jnbe", 0, &opjc, 0},
{"jnc", 0, &opjc, 0},
{"jne", 0, &opjc, 0},
{"jng", 0, &opjc, 0},
{"jnge", 0, &opjc, 0},
{"jnl", 0, &opjc, 0},
{"jnle", 0, &opjc, 0},
{"jno", 0, &opjc, 0},
{"jnp", 0, &opjc, 0},
{"jns", 0, &opjc, 0},
{"jnz", 0, &opjc, 0},
{"jo", 0, &opjc, 0},
{"jp", 0, &opjc, 0},
{"jpe", 0, &opjc, 0},
{"jpo", 0, &opjc, 0},
{"js", 0, &opjc, 0},
{"jz", 0, &opjc, 0},
{"jcxz", 0, &opjc, 0},
{"jecxz", 0, &opjc, 0},
{"jrcxz", 0, &opjc, 0},
{"lahf", 0, NULL, 0x9f, 1},
{"lea", 0, &oplea, 0},
{"leave", 0, NULL, 0xc9, 1},
{"les", 0, &oples, 0},
{"lfence", 0, NULL, 0x0faee8, 3},
{"lgdt", 0, &oplgdt, 0},
{"lidt", 0, &oplidt, 0},
{"lldt", 0, &oplldt, 0},
{"lmsw", 0, &oplmsw, 0},
{"lodsb", 0, NULL, 0xac, 1},
{"lodsd", 0, NULL, 0xad, 1},
{"lodsw", 0, NULL, 0x66ad, 2},
{"loop", 0, &oploop, 0},
{"mfence", 0, NULL, 0x0faef0, 3},
{"monitor", 0, NULL, 0x0f01c8, 3},
{"mov", 0, &opmov, 0},
{"movsb", 0, NULL, 0xa4, 1},
{"movsd", 0, NULL, 0xa5, 1},
{"movsw", 0, NULL, 0x66a5, 2},
{"movzx", 0, &opmovx, 0},
{"movsx", 0, &opmovx, 0},
{"movabs", 0, &opmovabs, 0},
{"mul", 0, &opmul, 0},
{"mwait", 0, NULL, 0x0f01c9, 3},
{"neg", 0, &opneg, 0},
{"nop", 0, NULL, 0x90, 1},
{"not", 0, &opnot, 0},
{"or", 0, &opor, 0},
{"out", 0, &opout, 0},
{"outsb", 0, NULL, 0x6e, 1},
{"outs", 0, NULL, 0x6f, 1},
{"outsd", 0, NULL, 0x6f, 1},
{"outsw", 0, NULL, 0x666f, 2},
{"pop", 0, &oppop, 0},
{"popa", 1, NULL, 0x61, 1},
{"popad", 1, NULL, 0x61, 1},
{"popal", 1, NULL, 0x61, 1},
{"popaw", 1, NULL, 0x6661, 2},
{"popfd", 1, NULL, 0x9d, 1},
{"prefetch", 0, NULL, 0x0f0d, 2},
{"push", 0, &oppush, 0},
{"pusha", 1, NULL, 0x60, 1},
{"pushad", 1, NULL, 0x60, 1},
{"pushal", 1, NULL, 0x60, 1},
{"pushf", 0, NULL, 0x669c, 2},
{"popf", 0, NULL, 0x669d, 2},
{"pushfd", 0, NULL, 0x9c, 1},
{"rcl", 0, &process_group_2, 0},
{"rcr", 0, &process_group_2, 0},
{"rep", 0, &oprep, 0},
{"repe", 0, &oprep, 0},
{"repne", 0, &oprep, 0},
{"repz", 0, &oprep, 0},
{"repnz", 0, &oprep, 0},
{"rdmsr", 0, NULL, 0x0f32, 2},
{"rdpmc", 0, NULL, 0x0f33, 2},
{"rdtsc", 0, NULL, 0x0f31, 2},
{"rdtscp", 0, NULL, 0x0f01f9, 3},
{"ret", 0, &opret, 0},
{"retf", 0, &opretf, 0},
{"retw", 0, NULL, 0x66c3, 2},
{"rol", 0, &process_group_2, 0},
{"ror", 0, &process_group_2, 0},
{"rsm", 0, NULL, 0x0faa, 2},
{"sahf", 0, NULL, 0x9e, 1},
{"sal", 0, &process_group_2, 0},
{"salc", 0, NULL, 0xd6, 1},
{"sar", 0, &process_group_2, 0},
{"sbb", 0, &opsbb, 0},
{"scasb", 0, NULL, 0xae, 1},
{"scasd", 0, NULL, 0xaf, 1},
{"scasw", 0, NULL, 0x66af, 2},
{"seto", 0, &opset, 0},
{"setno", 0, &opset, 0},
{"setb", 0, &opset, 0},
{"setnae", 0, &opset, 0},
{"setc", 0, &opset, 0},
{"setnb", 0, &opset, 0},
{"setae", 0, &opset, 0},
{"setnc", 0, &opset, 0},
{"setz", 0, &opset, 0},
{"sete", 0, &opset, 0},
{"setnz", 0, &opset, 0},
{"setne", 0, &opset, 0},
{"setbe", 0, &opset, 0},
{"setna", 0, &opset, 0},
{"setnbe", 0, &opset, 0},
{"seta", 0, &opset, 0},
{"sets", 0, &opset, 0},
{"setns", 0, &opset, 0},
{"setp", 0, &opset, 0},
{"setpe", 0, &opset, 0},
{"setnp", 0, &opset, 0},
{"setpo", 0, &opset, 0},
{"setl", 0, &opset, 0},
{"setnge", 0, &opset, 0},
{"setnl", 0, &opset, 0},
{"setge", 0, &opset, 0},
{"setle", 0, &opset, 0},
{"setng", 0, &opset, 0},
{"setnle", 0, &opset, 0},
{"setg", 0, &opset, 0},
{"sfence", 0, NULL, 0x0faef8, 3},
{"sgdt", 0, &opsgdt, 0},
{"shl", 0, &process_group_2, 0},
{"shr", 0, &process_group_2, 0},
{"sidt", 0, &opsidt, 0},
{"sldt", 0, &opsldt, 0},
{"smsw", 0, &opsmsw, 0},
{"stc", 0, NULL, 0xf9, 1},
{"std", 0, NULL, 0xfd, 1},
{"stgi", 0, NULL, 0x0f01dc, 3},
{"sti", 0, NULL, 0xfb, 1},
{"stmxcsr", 0, &opstmxcsr, 0},
{"stosb", 0, &opstos, 0},
{"stosd", 0, &opstos, 0},
{"stosw", 0, &opstos, 0},
{"str", 0, &opstr, 0},
{"sub", 0, &opsub, 0},
{"swapgs", 0, NULL, 0x0f1ff8, 3},
{"syscall", 0, NULL, 0x0f05, 2},
{"sysenter", 0, NULL, 0x0f34, 2},
{"sysexit", 0, NULL, 0x0f35, 2},
{"sysret", 0, NULL, 0x0f07, 2},
{"ud2", 0, NULL, 0x0f0b, 2},
{"verr", 0, &opverr, 0},
{"verw", 0, &opverw, 0},
{"vmcall", 0, NULL, 0x0f01c1, 3},
{"vmclear", 0, &opvmclear, 0},
{"vmlaunch", 0, NULL, 0x0f01c2, 3},
{"vmload", 0, NULL, 0x0f01da, 3},
{"vmmcall", 0, NULL, 0x0f01d9, 3},
{"vmptrld", 0, &opvmptrld, 0},
{"vmptrst", 0, &opvmptrst, 0},
{"vmresume", 0, NULL, 0x0f01c3, 3},
{"vmrun", 0, NULL, 0x0f01d8, 3},
{"vmsave", 0, NULL, 0x0f01db, 3},
{"vmxoff", 0, NULL, 0x0f01c4, 3},
{"vmxon", 0, &opvmon, 0},
{"vzeroall", 0, NULL, 0xc5fc77, 3},
{"vzeroupper", 0, NULL, 0xc5f877, 3},
{"wait", 0, NULL, 0x9b, 1},
{"wbinvd", 0, NULL, 0x0f09, 2},
{"wrmsr", 0, NULL, 0x0f30, 2},
{"xadd", 0, &opxadd, 0},
{"xchg", 0, &opxchg, 0},
{"xgetbv", 0, NULL, 0x0f01d0, 3},
{"xlatb", 0, NULL, 0xd7, 1},
{"xor", 0, &opxor, 0},
{"xsetbv", 0, NULL, 0x0f01d1, 3},
{"test", 0, &optest, 0},
{"null", 0, NULL, 0, 0}
{ "aaa", 0, NULL, 0x37, 1},
{ "aad", 0, NULL, 0xd50a, 2},
{ "aam", 0, opaam, 0},
{ "aas", 0, NULL, 0x3f, 1},
{ "adc", 0, &opadc, 0},
{ "add", 0, &opadd, 0},
{ "adx", 0, NULL, 0xd4, 1},
{ "amx", 0, NULL, 0xd5, 1},
{ "and", 0, &opand, 0},
{ "bsf", 0, &opbs, 0},
{ "bsr", 0, &opbs, 0},
{ "bswap", 0, &opbswap, 0},
{ "call", 0, &opcall, 0},
{ "cbw", 0, NULL, 0x6698, 2},
{ "cdq", 0, NULL, 0x99, 1},
{ "cdqe", 0, &opcdqe, 0},
{ "cwde", 0, &opcdqe, 0},
{ "clc", 0, NULL, 0xf8, 1},
{ "cld", 0, NULL, 0xfc, 1},
{ "clflush", 0, &opclflush, 0},
{ "clgi", 0, NULL, 0x0f01dd, 3},
{ "cli", 0, NULL, 0xfa, 1},
{ "clts", 0, NULL, 0x0f06, 2},
{ "cmc", 0, NULL, 0xf5, 1},
{ "cmovo", 0, &opcmov, 0},
{ "cmovno", 0, &opcmov, 0},
{ "cmovb", 0, &opcmov, 0},
{ "cmovc", 0, &opcmov, 0},
{ "cmovnae", 0, &opcmov, 0},
{ "cmovae", 0, &opcmov, 0},
{ "cmovnb", 0, &opcmov, 0},
{ "cmovnc", 0, &opcmov, 0},
{ "cmove", 0, &opcmov, 0},
{ "cmovz", 0, &opcmov, 0},
{ "cmovne", 0, &opcmov, 0},
{ "cmovnz", 0, &opcmov, 0},
{ "cmovbe", 0, &opcmov, 0},
{ "cmovna", 0, &opcmov, 0},
{ "cmova", 0, &opcmov, 0},
{ "cmovnbe", 0, &opcmov, 0},
{ "cmovne", 0, &opcmov, 0},
{ "cmovnz", 0, &opcmov, 0},
{ "cmovs", 0, &opcmov, 0},
{ "cmovns", 0, &opcmov, 0},
{ "cmovp", 0, &opcmov, 0},
{ "cmovpe", 0, &opcmov, 0},
{ "cmovnp", 0, &opcmov, 0},
{ "cmovpo", 0, &opcmov, 0},
{ "cmovl", 0, &opcmov, 0},
{ "cmovnge", 0, &opcmov, 0},
{ "cmovge", 0, &opcmov, 0},
{ "cmovnl", 0, &opcmov, 0},
{ "cmovle", 0, &opcmov, 0},
{ "cmovng", 0, &opcmov, 0},
{ "cmovg", 0, &opcmov, 0},
{ "cmovnle", 0, &opcmov, 0},
{ "cmp", 0, &opcmp, 0},
{ "cmpsb", 0, NULL, 0xa6, 1},
{ "cmpsd", 0, NULL, 0xa7, 1},
{ "cmpsw", 0, NULL, 0x66a7, 2},
{ "cpuid", 0, NULL, 0x0fa2, 2},
{ "cwd", 0, NULL, 0x6699, 2},
{ "cwde", 0, NULL, 0x98, 1},
{ "daa", 0, NULL, 0x27, 1},
{ "das", 0, NULL, 0x2f, 1},
{ "dec", 0, &opdec, 0},
{ "div", 0, &opdiv, 0},
{ "emms", 0, NULL, 0x0f77, 2},
{ "endbr32", 0, endbr32, 0},
{ "endbr64", 0, endbr64, 0},
{ "f2xm1", 0, NULL, 0xd9f0, 2},
{ "fabs", 0, NULL, 0xd9e1, 2},
{ "fadd", 0, &opfadd, 0},
{ "faddp", 0, &opfaddp, 0},
{ "fbld", 0, &opfbld, 0},
{ "fbstp", 0, &opfbstp, 0},
{ "fchs", 0, NULL, 0xd9e0, 2},
{ "fclex", 0, NULL, 0x9bdbe2, 3},
{ "fcmovb", 0, &opfcmov, 0},
{ "fcmove", 0, &opfcmov, 0},
{ "fcmovbe", 0, &opfcmov, 0},
{ "fcmovu", 0, &opfcmov, 0},
{ "fcmovnb", 0, &opfcmov, 0},
{ "fcmovne", 0, &opfcmov, 0},
{ "fcmovnbe", 0, &opfcmov, 0},
{ "fcmovnu", 0, &opfcmov, 0},
{ "fcos", 0, NULL, 0xd9ff, 2},
{ "fdecstp", 0, NULL, 0xd9f6, 2},
{ "fdiv", 0, &opfdiv, 0},
{ "fdivp", 0, &opfdivp, 0},
{ "fdivr", 0, &opfdivr, 0},
{ "fdivrp", 0, &opfdivrp, 0},
{ "femms", 0, NULL, 0x0f0e, 2},
{ "ffree", 0, &opffree, 0},
{ "fiadd", 0, &opfiadd, 0},
{ "ficom", 0, &opficom, 0},
{ "ficomp", 0, &opficomp, 0},
{ "fidiv", 0, &opfidiv, 0},
{ "fidivr", 0, &opfidivr, 0},
{ "fild", 0, &opfild, 0},
{ "fimul", 0, &opfimul, 0},
{ "fincstp", 0, NULL, 0xd9f7, 2},
{ "finit", 0, NULL, 0x9bdbe3, 3},
{ "fist", 0, &opfist, 0},
{ "fistp", 0, &opfistp, 0},
{ "fisttp", 0, &opfisttp, 0},
{ "fisub", 0, &opfisub, 0},
{ "fisubr", 0, &opfisubr, 0},
{ "fld1", 0, NULL, 0xd9e8, 2},
{ "fldcw", 0, &opfldcw, 0},
{ "fldenv", 0, &opfldenv, 0},
{ "fldl2t", 0, NULL, 0xd9e9, 2},
{ "fldl2e", 0, NULL, 0xd9ea, 2},
{ "fldlg2", 0, NULL, 0xd9ec, 2},
{ "fldln2", 0, NULL, 0xd9ed, 2},
{ "fldpi", 0, NULL, 0xd9eb, 2},
{ "fldz", 0, NULL, 0xd9ee, 2},
{ "fmul", 0, &opfmul, 0},
{ "fmulp", 0, &opfmulp, 0},
{ "fnclex", 0, NULL, 0xdbe2, 2},
{ "fninit", 0, NULL, 0xdbe3, 2},
{ "fnop", 0, NULL, 0xd9d0, 2},
{ "fnsave", 0, &opfnsave, 0},
{ "fnstcw", 0, &opfnstcw, 0},
{ "fnstenv", 0, &opfnstenv, 0},
{ "fnstsw", 0, &opfnstsw, 0},
{ "fpatan", 0, NULL, 0xd9f3, 2},
{ "fprem", 0, NULL, 0xd9f8, 2},
{ "fprem1", 0, NULL, 0xd9f5, 2},
{ "fptan", 0, NULL, 0xd9f2, 2},
{ "frndint", 0, NULL, 0xd9fc, 2},
{ "frstor", 0, &opfrstor, 0},
{ "fsave", 0, &opfsave, 0},
{ "fscale", 0, NULL, 0xd9fd, 2},
{ "fsin", 0, NULL, 0xd9fe, 2},
{ "fsincos", 0, NULL, 0xd9fb, 2},
{ "fsqrt", 0, NULL, 0xd9fa, 2},
{ "fstcw", 0, &opfstcw, 0},
{ "fstenv", 0, &opfstenv, 0},
{ "fstsw", 0, &opfstsw, 0},
{ "fsub", 0, &opfsub, 0},
{ "fsubp", 0, &opfsubp, 0},
{ "fsubr", 0, &opfsubr, 0},
{ "fsubrp", 0, &opfsubrp, 0},
{ "ftst", 0, NULL, 0xd9e4, 2},
{ "fucom", 0, &opfucom, 0},
{ "fucomp", 0, &opfucomp, 0},
{ "fucompp", 0, NULL, 0xdae9, 2},
{ "fwait", 0, NULL, 0x9b, 1},
{ "fxam", 0, NULL, 0xd9e5, 2},
{ "fxch", 0, &opfxch, 0},
{ "fxrstor", 0, &opfxrstor, 0},
{ "fxsave", 0, &opfxsave, 0},
{ "fxtract", 0, NULL, 0xd9f4, 2},
{ "fyl2x", 0, NULL, 0xd9f1, 2},
{ "fyl2xp1", 0, NULL, 0xd9f9, 2},
{ "getsec", 0, NULL, 0x0f37, 2},
{ "hlt", 0, NULL, 0xf4, 1},
{ "idiv", 0, &opidiv, 0},
{ "imul", 0, &opimul, 0},
{ "in", 0, &opin, 0},
{ "inc", 0, &opinc, 0},
{ "ins", 0, NULL, 0x6d, 1},
{ "insb", 0, NULL, 0x6c, 1},
{ "insd", 0, NULL, 0x6d, 1},
{ "insw", 0, NULL, 0x666d, 2},
{ "int", 0, &opint, 0},
{ "int1", 0, NULL, 0xf1, 1},
{ "int3", 0, NULL, 0xcc, 1},
{ "into", 0, NULL, 0xce, 1},
{ "invd", 0, NULL, 0x0f08, 2},
{ "iret", 0, NULL, 0x66cf, 2},
{ "iretd", 0, NULL, 0xcf, 1},
{ "ja", 0, &opjc, 0},
{ "jae", 0, &opjc, 0},
{ "jb", 0, &opjc, 0},
{ "jbe", 0, &opjc, 0},
{ "jc", 0, &opjc, 0},
{ "je", 0, &opjc, 0},
{ "jg", 0, &opjc, 0},
{ "jge", 0, &opjc, 0},
{ "jl", 0, &opjc, 0},
{ "jle", 0, &opjc, 0},
{ "jmp", 0, &opjc, 0},
{ "jna", 0, &opjc, 0},
{ "jnae", 0, &opjc, 0},
{ "jnb", 0, &opjc, 0},
{ "jnbe", 0, &opjc, 0},
{ "jnc", 0, &opjc, 0},
{ "jne", 0, &opjc, 0},
{ "jng", 0, &opjc, 0},
{ "jnge", 0, &opjc, 0},
{ "jnl", 0, &opjc, 0},
{ "jnle", 0, &opjc, 0},
{ "jno", 0, &opjc, 0},
{ "jnp", 0, &opjc, 0},
{ "jns", 0, &opjc, 0},
{ "jnz", 0, &opjc, 0},
{ "jo", 0, &opjc, 0},
{ "jp", 0, &opjc, 0},
{ "jpe", 0, &opjc, 0},
{ "jpo", 0, &opjc, 0},
{ "js", 0, &opjc, 0},
{ "jz", 0, &opjc, 0},
{ "jcxz", 0, &opjc, 0},
{ "jecxz", 0, &opjc, 0},
{ "jrcxz", 0, &opjc, 0},
{ "lahf", 0, NULL, 0x9f, 1},
{ "lea", 0, &oplea, 0},
{ "leave", 0, NULL, 0xc9, 1},
{ "les", 0, &oples, 0},
{ "lfence", 0, NULL, 0x0faee8, 3},
{ "lgdt", 0, &oplgdt, 0},
{ "lidt", 0, &oplidt, 0},
{ "lldt", 0, &oplldt, 0},
{ "lmsw", 0, &oplmsw, 0},
{ "lodsb", 0, NULL, 0xac, 1},
{ "lodsd", 0, NULL, 0xad, 1},
{ "lodsw", 0, NULL, 0x66ad, 2},
{ "loop", 0, &oploop, 0},
{ "mfence", 0, NULL, 0x0faef0, 3},
{ "monitor", 0, NULL, 0x0f01c8, 3},
{ "mov", 0, &opmov, 0},
{ "movsb", 0, NULL, 0xa4, 1},
{ "movsd", 0, NULL, 0xa5, 1},
{ "movsw", 0, NULL, 0x66a5, 2},
{ "movzx", 0, &opmovx, 0},
{ "movsx", 0, &opmovx, 0},
{ "movabs", 0, &opmovabs, 0},
{ "mul", 0, &opmul, 0},
{ "mwait", 0, NULL, 0x0f01c9, 3},
{ "neg", 0, &opneg, 0},
{ "nop", 0, NULL, 0x90, 1},
{ "not", 0, &opnot, 0},
{ "or", 0, &opor, 0},
{ "out", 0, &opout, 0},
{ "outsb", 0, NULL, 0x6e, 1},
{ "outs", 0, NULL, 0x6f, 1},
{ "outsd", 0, NULL, 0x6f, 1},
{ "outsw", 0, NULL, 0x666f, 2},
{ "pop", 0, &oppop, 0},
{ "popa", 1, NULL, 0x61, 1},
{ "popad", 1, NULL, 0x61, 1},
{ "popal", 1, NULL, 0x61, 1},
{ "popaw", 1, NULL, 0x6661, 2},
{ "popfd", 1, NULL, 0x9d, 1},
{ "prefetch", 0, NULL, 0x0f0d, 2},
{ "push", 0, &oppush, 0},
{ "pusha", 1, NULL, 0x60, 1},
{ "pushad", 1, NULL, 0x60, 1},
{ "pushal", 1, NULL, 0x60, 1},
{ "pushf", 0, NULL, 0x669c, 2},
{ "popf", 0, NULL, 0x669d, 2},
{ "pushfd", 0, NULL, 0x9c, 1},
{ "rcl", 0, &process_group_2, 0},
{ "rcr", 0, &process_group_2, 0},
{ "rep", 0, &oprep, 0},
{ "repe", 0, &oprep, 0},
{ "repne", 0, &oprep, 0},
{ "repz", 0, &oprep, 0},
{ "repnz", 0, &oprep, 0},
{ "rdmsr", 0, NULL, 0x0f32, 2},
{ "rdpmc", 0, NULL, 0x0f33, 2},
{ "rdtsc", 0, NULL, 0x0f31, 2},
{ "rdtscp", 0, NULL, 0x0f01f9, 3},
{ "ret", 0, &opret, 0},
{ "retf", 0, &opretf, 0},
{ "retw", 0, NULL, 0x66c3, 2},
{ "rol", 0, &process_group_2, 0},
{ "ror", 0, &process_group_2, 0},
{ "rsm", 0, NULL, 0x0faa, 2},
{ "sahf", 0, NULL, 0x9e, 1},
{ "sal", 0, &process_group_2, 0},
{ "salc", 0, NULL, 0xd6, 1},
{ "sar", 0, &process_group_2, 0},
{ "sbb", 0, &opsbb, 0},
{ "scasb", 0, NULL, 0xae, 1},
{ "scasd", 0, NULL, 0xaf, 1},
{ "scasw", 0, NULL, 0x66af, 2},
{ "seto", 0, &opset, 0},
{ "setno", 0, &opset, 0},
{ "setb", 0, &opset, 0},
{ "setnae", 0, &opset, 0},
{ "setc", 0, &opset, 0},
{ "setnb", 0, &opset, 0},
{ "setae", 0, &opset, 0},
{ "setnc", 0, &opset, 0},
{ "setz", 0, &opset, 0},
{ "sete", 0, &opset, 0},
{ "setnz", 0, &opset, 0},
{ "setne", 0, &opset, 0},
{ "setbe", 0, &opset, 0},
{ "setna", 0, &opset, 0},
{ "setnbe", 0, &opset, 0},
{ "seta", 0, &opset, 0},
{ "sets", 0, &opset, 0},
{ "setns", 0, &opset, 0},
{ "setp", 0, &opset, 0},
{ "setpe", 0, &opset, 0},
{ "setnp", 0, &opset, 0},
{ "setpo", 0, &opset, 0},
{ "setl", 0, &opset, 0},
{ "setnge", 0, &opset, 0},
{ "setnl", 0, &opset, 0},
{ "setge", 0, &opset, 0},
{ "setle", 0, &opset, 0},
{ "setng", 0, &opset, 0},
{ "setnle", 0, &opset, 0},
{ "setg", 0, &opset, 0},
{ "sfence", 0, NULL, 0x0faef8, 3},
{ "sgdt", 0, &opsgdt, 0},
{ "shl", 0, &process_group_2, 0},
{ "shr", 0, &process_group_2, 0},
{ "sidt", 0, &opsidt, 0},
{ "sldt", 0, &opsldt, 0},
{ "smsw", 0, &opsmsw, 0},
{ "stc", 0, NULL, 0xf9, 1},
{ "std", 0, NULL, 0xfd, 1},
{ "stgi", 0, NULL, 0x0f01dc, 3},
{ "sti", 0, NULL, 0xfb, 1},
{ "stmxcsr", 0, &opstmxcsr, 0},
{ "stosb", 0, &opstos, 0},
{ "stosd", 0, &opstos, 0},
{ "stosw", 0, &opstos, 0},
{ "str", 0, &opstr, 0},
{ "sub", 0, &opsub, 0},
{ "swapgs", 0, NULL, 0x0f1ff8, 3},
{ "syscall", 0, NULL, 0x0f05, 2},
{ "sysenter", 0, NULL, 0x0f34, 2},
{ "sysexit", 0, NULL, 0x0f35, 2},
{ "sysret", 0, NULL, 0x0f07, 2},
{ "ud2", 0, NULL, 0x0f0b, 2},
{ "verr", 0, &opverr, 0},
{ "verw", 0, &opverw, 0},
{ "vmcall", 0, NULL, 0x0f01c1, 3},
{ "vmclear", 0, &opvmclear, 0},
{ "vmlaunch", 0, NULL, 0x0f01c2, 3},
{ "vmload", 0, NULL, 0x0f01da, 3},
{ "vmmcall", 0, NULL, 0x0f01d9, 3},
{ "vmptrld", 0, &opvmptrld, 0},
{ "vmptrst", 0, &opvmptrst, 0},
{ "vmresume", 0, NULL, 0x0f01c3, 3},
{ "vmrun", 0, NULL, 0x0f01d8, 3},
{ "vmsave", 0, NULL, 0x0f01db, 3},
{ "vmxoff", 0, NULL, 0x0f01c4, 3},
{ "vmxon", 0, &opvmon, 0},
{ "vzeroall", 0, NULL, 0xc5fc77, 3},
{ "vzeroupper", 0, NULL, 0xc5f877, 3},
{ "wait", 0, NULL, 0x9b, 1},
{ "wbinvd", 0, NULL, 0x0f09, 2},
{ "wrmsr", 0, NULL, 0x0f30, 2},
{ "xadd", 0, &opxadd, 0},
{ "xchg", 0, &opxchg, 0},
{ "xgetbv", 0, NULL, 0x0f01d0, 3},
{ "xlatb", 0, NULL, 0xd7, 1},
{ "xor", 0, &opxor, 0},
{ "xsetbv", 0, NULL, 0x0f01d1, 3},
{ "test", 0, &optest, 0},
{ "null", 0, NULL, 0, 0}
};
static x86newTokenType getToken(const char *str, size_t *begin, size_t *end) {

View File

@ -12,10 +12,10 @@ static void print_usage(void) {
///////////////////////////////////////////////////////////////////////////////
static const struct option long_options[] = {
{"pdb_file", required_argument, 0, 'f'},
{"print_types", no_argument, 0, 't'},
{"print_globals", required_argument, 0, 'g'},
{"help", no_argument, 0, 'h'},
{ "pdb_file", required_argument, 0, 'f'},
{ "print_types", no_argument, 0, 't'},
{ "print_globals", required_argument, 0, 'g'},
{ "help", no_argument, 0, 'h'},
{NULL, 0, 0, 0}
};

View File

@ -1,5 +1,5 @@
#include <stdio.h>
#include <stdlib.h>
/* radare - LGPL - Copyright 2019-2022 - mrmacete, pancake */
#include <r_util.h>
#include <r_util/r_xml.h>
#include <r_list.h>
@ -346,7 +346,6 @@ static void r_cf_value_dict_add(RCFValueDict *dict, RCFKeyValue *key_value) {
if (!dict || !dict->pairs) {
return;
}
r_list_push (dict->pairs, key_value);
}
@ -368,28 +367,21 @@ static void r_cf_value_dict_print(RCFValueDict *dict) {
static RCFValueArray *r_cf_value_array_new(void) {
RCFValueArray *array = R_NEW0 (RCFValueArray);
if (!array) {
return NULL;
if (array) {
array->type = R_CF_ARRAY;
array->values = r_list_newf ((RListFree)&r_cf_value_free);
}
array->type = R_CF_ARRAY;
array->values = r_list_newf ((RListFree)&r_cf_value_free);
return array;
}
static void r_cf_value_array_free(RCFValueArray *array) {
if (!array) {
return;
if (array) {
if (array->values) {
r_list_free (array->values);
array->values = NULL;
}
free (array);
}
if (array->values) {
r_list_free (array->values);
array->values = NULL;
}
array->type = R_CF_INVALID;
R_FREE (array);
}
static void r_cf_value_array_add(RCFValueArray *array, RCFValue *value) {

View File

@ -19,8 +19,8 @@ static const struct {
const int offset_mem;
const int ram_size;
} _machines[] = {
{"C64", "Commodore 64", r_offsetof(struct vsf_c64mem, ram), 64 * 1024},
{"C128", "Commodore 128", r_offsetof(struct vsf_c128mem, ram), 128 * 1024},
{ "C64", "Commodore 64", r_offsetof(struct vsf_c64mem, ram), 64 * 1024},
{ "C128", "Commodore 128", r_offsetof(struct vsf_c128mem, ram), 128 * 1024},
};
static const int MACHINES_MAX = sizeof (_machines) / sizeof (_machines[0]);
@ -343,133 +343,133 @@ static RList* symbols(RBinFile *bf) {
const ut16 address;
const char* symbol_name;
} _symbols[] = {
// {0xfffa, "NMI_VECTOR_LSB"},
// {0xfffb, "NMI_VECTOR_MSB"},
// {0xfffe, "IRQ_VECTOR_LSB"},
// {0xffff, "IRQ_VECTOR_MSB"},
// {0xfffa, "NMI_VECTOR_LSB" },
// {0xfffb, "NMI_VECTOR_MSB" },
// {0xfffe, "IRQ_VECTOR_LSB" },
// {0xffff, "IRQ_VECTOR_MSB" },
// Defines taken from c64.inc from cc65
// I/O: VIC
{0xd000, "VIC_SPR0_X"},
{0xd001, "VIC_SPR0_Y"},
{0xd002, "VIC_SPR1_X"},
{0xd003, "VIC_SPR1_Y"},
{0xd004, "VIC_SPR2_X"},
{0xd005, "VIC_SPR2_Y"},
{0xd006, "VIC_SPR3_X"},
{0xd007, "VIC_SPR3_Y"},
{0xd008, "VIC_SPR4_X"},
{0xd009, "VIC_SPR4_Y"},
{0xd00a, "VIC_SPR5_X"},
{0xd00b, "VIC_SPR5_Y"},
{0xd00c, "VIC_SPR6_X"},
{0xd00d, "VIC_SPR6_Y"},
{0xd00e, "VIC_SPR7_X"},
{0xd00f, "VIC_SPR7_Y"},
{0xd010, "VIC_SPR_HI_X"},
{0xd015, "VIC_SPR_ENA"},
{0xd017, "VIC_SPR_EXP_Y"},
{0xd01d, "VIC_SPR_EXP_X"},
{0xd01c, "VIC_SPR_MCOLOR"},
{0xd01b, "VIC_SPR_BG_PRIO"},
{0xd000, "VIC_SPR0_X" },
{0xd001, "VIC_SPR0_Y" },
{0xd002, "VIC_SPR1_X" },
{0xd003, "VIC_SPR1_Y" },
{0xd004, "VIC_SPR2_X" },
{0xd005, "VIC_SPR2_Y" },
{0xd006, "VIC_SPR3_X" },
{0xd007, "VIC_SPR3_Y" },
{0xd008, "VIC_SPR4_X" },
{0xd009, "VIC_SPR4_Y" },
{0xd00a, "VIC_SPR5_X" },
{0xd00b, "VIC_SPR5_Y" },
{0xd00c, "VIC_SPR6_X" },
{0xd00d, "VIC_SPR6_Y" },
{0xd00e, "VIC_SPR7_X" },
{0xd00f, "VIC_SPR7_Y" },
{0xd010, "VIC_SPR_HI_X" },
{0xd015, "VIC_SPR_ENA" },
{0xd017, "VIC_SPR_EXP_Y" },
{0xd01d, "VIC_SPR_EXP_X" },
{0xd01c, "VIC_SPR_MCOLOR" },
{0xd01b, "VIC_SPR_BG_PRIO" },
{0xd025, "VIC_SPR_MCOLOR0"},
{0xd026, "VIC_SPR_MCOLOR1"},
{0xd025, "VIC_SPR_MCOLOR0" },
{0xd026, "VIC_SPR_MCOLOR1" },
{0xd027, "VIC_SPR0_COLOR"},
{0xd028, "VIC_SPR1_COLOR"},
{0xd029, "VIC_SPR2_COLOR"},
{0xd02A, "VIC_SPR3_COLOR"},
{0xd02B, "VIC_SPR4_COLOR"},
{0xd02C, "VIC_SPR5_COLOR"},
{0xd02D, "VIC_SPR6_COLOR"},
{0xd02E, "VIC_SPR7_COLOR"},
{0xd027, "VIC_SPR0_COLOR" },
{0xd028, "VIC_SPR1_COLOR" },
{0xd029, "VIC_SPR2_COLOR" },
{0xd02A, "VIC_SPR3_COLOR" },
{0xd02B, "VIC_SPR4_COLOR" },
{0xd02C, "VIC_SPR5_COLOR" },
{0xd02D, "VIC_SPR6_COLOR" },
{0xd02E, "VIC_SPR7_COLOR" },
{0xd011, "VIC_CTRL1"},
{0xd016, "VIC_CTRL2"},
{0xd011, "VIC_CTRL1" },
{0xd016, "VIC_CTRL2" },
{0xd012, "VIC_HLINE"},
{0xd012, "VIC_HLINE" },
{0xd013, "VIC_LPEN_X"},
{0xd014, "VIC_LPEN_Y"},
{0xd013, "VIC_LPEN_X" },
{0xd014, "VIC_LPEN_Y" },
{0xd018, "VIC_VIDEO_ADR"},
{0xd018, "VIC_VIDEO_ADR" },
{0xd019, "VIC_IRR"},
{0xd01a, "VIC_IMR"},
{0xd019, "VIC_IRR" },
{0xd01a, "VIC_IMR" },
{0xd020, "VIC_BORDERCOLOR"},
{0xd021, "VIC_BG_COLOR0"},
{0xd022, "VIC_BG_COLOR1"},
{0xd023, "VIC_BG_COLOR2"},
{0xd024, "VIC_BG_COLOR3"},
{0xd020, "VIC_BORDERCOLOR" },
{0xd021, "VIC_BG_COLOR0" },
{0xd022, "VIC_BG_COLOR1" },
{0xd023, "VIC_BG_COLOR2" },
{0xd024, "VIC_BG_COLOR3" },
// 128 stuff
{0xd02F, "VIC_KBD_128"},
{0xd030, "VIC_CLK_128"},
{0xd02F, "VIC_KBD_128" },
{0xd030, "VIC_CLK_128" },
// I/O: SID
{0xD400, "SID_S1Lo"},
{0xD401, "SID_S1Hi"},
{0xD402, "SID_PB1Lo"},
{0xD403, "SID_PB1Hi"},
{0xD404, "SID_Ctl1"},
{0xD405, "SID_AD1"},
{0xD406, "SID_SUR1"},
{0xD400, "SID_S1Lo" },
{0xD401, "SID_S1Hi" },
{0xD402, "SID_PB1Lo" },
{0xD403, "SID_PB1Hi" },
{0xD404, "SID_Ctl1" },
{0xD405, "SID_AD1" },
{0xD406, "SID_SUR1" },
{0xD407, "SID_S2Lo"},
{0xD408, "SID_S2Hi"},
{0xD409, "SID_PB2Lo"},
{0xD40A, "SID_PB2Hi"},
{0xD40B, "SID_Ctl2"},
{0xD40C, "SID_AD2"},
{0xD40D, "SID_SUR2"},
{0xD407, "SID_S2Lo" },
{0xD408, "SID_S2Hi" },
{0xD409, "SID_PB2Lo" },
{0xD40A, "SID_PB2Hi" },
{0xD40B, "SID_Ctl2" },
{0xD40C, "SID_AD2" },
{0xD40D, "SID_SUR2" },
{0xD40E, "SID_S3Lo"},
{0xD40F, "SID_S3Hi"},
{0xD410, "SID_PB3Lo"},
{0xD411, "SID_PB3Hi"},
{0xD412, "SID_Ctl3"},
{0xD413, "SID_AD3"},
{0xD414, "SID_SUR3"},
{0xD40E, "SID_S3Lo" },
{0xD40F, "SID_S3Hi" },
{0xD410, "SID_PB3Lo" },
{0xD411, "SID_PB3Hi" },
{0xD412, "SID_Ctl3" },
{0xD413, "SID_AD3" },
{0xD414, "SID_SUR3" },
{0xD415, "SID_FltLo"},
{0xD416, "SID_FltHi"},
{0xD417, "SID_FltCtl"},
{0xD418, "SID_Amp"},
{0xD419, "SID_ADConv1"},
{0xD41A, "SID_ADConv2"},
{0xD41B, "SID_Noise"},
{0xD41C, "SID_Read3"},
{0xD415, "SID_FltLo" },
{0xD416, "SID_FltHi" },
{0xD417, "SID_FltCtl" },
{0xD418, "SID_Amp" },
{0xD419, "SID_ADConv1" },
{0xD41A, "SID_ADConv2" },
{0xD41B, "SID_Noise" },
{0xD41C, "SID_Read3" },
// I/O: VDC (128 only)
{0xd600, "VDC_INDEX"},
{0xd601, "VDC_DATA"},
{0xd600, "VDC_INDEX" },
{0xd601, "VDC_DATA" },
// I/O: CIAs
{0xDC00, "CIA1_PRA"},
{0xDC01, "CIA1_PRB"},
{0xDC02, "CIA1_DDRA"},
{0xDC03, "CIA1_DDRB"},
{0xDC08, "CIA1_TOD10"},
{0xDC09, "CIA1_TODSEC"},
{0xDC0A, "CIA1_TODMIN"},
{0xDC0B, "CIA1_TODHR"},
{0xDC0D, "CIA1_ICR"},
{0xDC0E, "CIA1_CRA"},
{0xDC0F, "CIA1_CRB"},
{0xDC00, "CIA1_PRA" },
{0xDC01, "CIA1_PRB" },
{0xDC02, "CIA1_DDRA" },
{0xDC03, "CIA1_DDRB" },
{0xDC08, "CIA1_TOD10" },
{0xDC09, "CIA1_TODSEC" },
{0xDC0A, "CIA1_TODMIN" },
{0xDC0B, "CIA1_TODHR" },
{0xDC0D, "CIA1_ICR" },
{0xDC0E, "CIA1_CRA" },
{0xDC0F, "CIA1_CRB" },
{0xDD00, "CIA2_PRA"},
{0xDD01, "CIA2_PRB"},
{0xDD02, "CIA2_DDRA"},
{0xDD03, "CIA2_DDRB"},
{0xDD08, "CIA2_TOD10"},
{0xDD09, "CIA2_TODSEC"},
{0xDD0A, "CIA2_TODMIN"},
{0xDD0B, "CIA2_TODHR"},
{0xDD0D, "CIA2_ICR"},
{0xDD0E, "CIA2_CRA"},
{0xDD0F, "CIA2_CRB"},
{0xDD00, "CIA2_PRA" },
{0xDD01, "CIA2_PRB" },
{0xDD02, "CIA2_DDRA" },
{0xDD03, "CIA2_DDRB" },
{0xDD08, "CIA2_TOD10" },
{0xDD09, "CIA2_TODSEC" },
{0xDD0A, "CIA2_TODMIN" },
{0xDD0B, "CIA2_TODHR" },
{0xDD0D, "CIA2_ICR" },
{0xDD0E, "CIA2_CRA" },
{0xDD0F, "CIA2_CRB" },
};
static const int SYMBOLS_MAX = sizeof (_symbols) / sizeof (_symbols[0]);
struct r_bin_vsf_obj* vsf_obj = (struct r_bin_vsf_obj*) bf->o->bin_obj;

View File

@ -543,8 +543,10 @@ R_API void r_core_anal_autoname_all_golang_fcns(RCore *core) {
r_name_filter ((char *)func_name, 0);
//r_cons_printf ("[x] Found symbol %s at 0x%x\n", func_name, func_addr);
char *flagname = r_str_newf ("sym.go.%s", func_name);
r_flag_set (core->flags, flagname, func_addr, 1);
free (flagname);
if (flagname) {
r_flag_set (core->flags, flagname, func_addr, 1);
free (flagname);
}
offset += 2 * ptr_size;
num_syms++;
}
@ -599,12 +601,13 @@ static bool r_anal_try_get_fcn(RCore *core, RAnalRef *ref, int fcndepth, int ref
if (map->perm & R_PERM_X) {
ut8 buf[64];
r_io_read_at (core->io, ref->addr, buf, sizeof (buf));
bool looksLikeAFunction = r_anal_check_fcn (core->anal, buf, sizeof (buf), ref->addr, r_io_map_begin (map),
r_io_map_end (map));
bool looksLikeAFunction = r_anal_check_fcn (core->anal, buf, sizeof (buf), ref->addr, r_io_map_begin (map), r_io_map_end (map));
if (looksLikeAFunction) {
if (core->anal->limit) {
if (ref->addr < core->anal->limit->from ||
ref->addr > core->anal->limit->to) {
if (ref->addr < core->anal->limit->from) {
return 1;
}
if (ref->addr > core->anal->limit->to) {
return 1;
}
}

View File

@ -5912,55 +5912,55 @@ R_API void r_core_cmd_init(RCore *core) {
const char *description;
RCmdCb cb;
} cmds[] = {
{"!", "run system command", cmd_system },
{"_", "print last output", cmd_last },
{"#", "calculate hash", cmd_hash },
{"$", "alias", cmd_alias },
{"%", "short version of 'env' command", cmd_env },
{"&", "tasks", cmd_tasks },
{"(", "macro", cmd_macro },
{"*", "pointer read/write", cmd_pointer },
{"+", "relative seek forward", cmd_plus },
{"-", "open cfg.editor and run script", cmd_stdin },
{".", "interpret", cmd_interpret },
{",", "create and manipulate tables", cmd_table },
{"/", "search kw, pattern aes", cmd_search },
{"=", "io pipe", cmd_rap },
{"?", "help message", cmd_help },
{":", "alias for =!", cmd_rap_run },
{"0", "alias for s 0x", cmd_ox },
{"a", "analysis", cmd_anal },
{"b", "change block size", cmd_bsize },
{"c", "compare memory", cmd_cmp },
{"C", "code metadata", cmd_meta },
{"d", "debugger operations", cmd_debug },
{"e", "evaluate configuration variable", cmd_eval },
{"f", "get/set flags", cmd_flag },
{"g", "egg manipulation", cmd_egg },
{"i", "get file info", cmd_info },
{"k", "perform sdb query", cmd_kuery },
{"l", "list files and directories", cmd_l },
{"j", "join the contents of the two files", cmd_join },
{"h", "show the top n number of line in file", cmd_head },
{"L", "manage dynamically loaded plugins", cmd_plugins },
{"m", "mount filesystem", cmd_mount },
{"o", "open or map file", cmd_open },
{"p", "print current block", cmd_print },
{"P", "project", cmd_project },
{"q", "exit program session", cmd_quit },
{"Q", "alias for q!", cmd_Quit },
{"r", "change file size", cmd_resize },
{"s", "seek to an offset", cmd_seek },
{"t", "type information (cparse)", cmd_type },
{"T", "Text log utility", cmd_log },
{"u", "uname/undo", cmd_undo },
{"<", "pipe into RCons.readChar", cmd_pipein },
{"V", "enter visual mode", cmd_visual },
{"v", "enter visual panels", cmd_panels },
{"w", "write bytes", cmd_write },
{"x", "alias for px", cmd_hexdump },
{"y", "yank bytes", cmd_yank },
{"z", "zignatures", cmd_zign },
{ "!", "run system command", cmd_system },
{ "_", "print last output", cmd_last },
{ "#", "calculate hash", cmd_hash },
{ "$", "alias", cmd_alias },
{ "%", "short version of 'env' command", cmd_env },
{ "&", "tasks", cmd_tasks },
{ "(", "macro", cmd_macro },
{ "*", "pointer read/write", cmd_pointer },
{ "+", "relative seek forward", cmd_plus },
{ "-", "open cfg.editor and run script", cmd_stdin },
{ ".", "interpret", cmd_interpret },
{ ",", "create and manipulate tables", cmd_table },
{ "/", "search kw, pattern aes", cmd_search },
{ "=", "io pipe", cmd_rap },
{ "?", "help message", cmd_help },
{ ":", "alias for =!", cmd_rap_run },
{ "0", "alias for s 0x", cmd_ox },
{ "a", "analysis", cmd_anal },
{ "b", "change block size", cmd_bsize },
{ "c", "compare memory", cmd_cmp },
{ "C", "code metadata", cmd_meta },
{ "d", "debugger operations", cmd_debug },
{ "e", "evaluate configuration variable", cmd_eval },
{ "f", "get/set flags", cmd_flag },
{ "g", "egg manipulation", cmd_egg },
{ "i", "get file info", cmd_info },
{ "k", "perform sdb query", cmd_kuery },
{ "l", "list files and directories", cmd_l },
{ "j", "join the contents of the two files", cmd_join },
{ "h", "show the top n number of line in file", cmd_head },
{ "L", "manage dynamically loaded plugins", cmd_plugins },
{ "m", "mount filesystem", cmd_mount },
{ "o", "open or map file", cmd_open },
{ "p", "print current block", cmd_print },
{ "P", "project", cmd_project },
{ "q", "exit program session", cmd_quit },
{ "Q", "alias for q!", cmd_Quit },
{ "r", "change file size", cmd_resize },
{ "s", "seek to an offset", cmd_seek },
{ "t", "type information (cparse)", cmd_type },
{ "T", "Text log utility", cmd_log },
{ "u", "uname/undo", cmd_undo },
{ "<", "pipe into RCons.readChar", cmd_pipein },
{ "V", "enter visual mode", cmd_visual },
{ "v", "enter visual panels", cmd_panels },
{ "w", "write bytes", cmd_write },
{ "x", "alias for px", cmd_hexdump },
{ "y", "yank bytes", cmd_yank },
{ "z", "zignatures", cmd_zign },
};
core->rcmd = r_cmd_new ();

View File

@ -4850,7 +4850,7 @@ static int cmd_debug_desc(RCore *core, const char *input) {
}
/* Wait to move the first arg forward past the first 'd' until after argv creation.
* "dd filename" results in {"", "filename"} instead of {"filename"}.
* "dd filename" results in { "", "filename" } instead of { "filename" }.
*
* This mimics passing input+1 but allows a possible empty argv[0]
* to preserve argument positions.

View File

@ -433,24 +433,24 @@ static int cmd_hash(void *data, const char *input) {
}
static RHashHashHandlers hash_handlers[] = {
{"md4", handle_md4},
{"md5", handle_md5},
{"sha1", handle_sha1},
{"sha256", handle_sha256},
{"sha512", handle_sha512},
{"adler32", handle_adler32},
{"xor", handle_xor},
{"xorpair", handle_xorpair},
{"entropy", handle_entropy},
{"parity", handle_parity},
{"hamdist", handle_hamdist},
{"pcprint", handle_pcprint},
{"mod255", handle_mod255},
{"xxhash", handle_xxhash},
{"luhn", handle_luhn},
{"ssdeep", handle_ssdeep},
{ "md4", handle_md4},
{ "md5", handle_md5},
{ "sha1", handle_sha1},
{ "sha256", handle_sha256},
{ "sha512", handle_sha512},
{ "adler32", handle_adler32},
{ "xor", handle_xor},
{ "xorpair", handle_xorpair},
{ "entropy", handle_entropy},
{ "parity", handle_parity},
{ "hamdist", handle_hamdist},
{ "pcprint", handle_pcprint},
{ "mod255", handle_mod255},
{ "xxhash", handle_xxhash},
{ "luhn", handle_luhn},
{ "ssdeep", handle_ssdeep},
{"crc8smbus", handle_crc8_smbus},
{ "crc8smbus", handle_crc8_smbus},
#if R_HAVE_CRC8_EXTRA
{ /* CRC-8/CDMA2000 */ "crc8cdma2000", handle_crc8_cdma2000},
{ /* CRC-8/DARC */ "crc8darc", handle_crc8_darc},
@ -464,11 +464,11 @@ static RHashHashHandlers hash_handlers[] = {
#endif /* #if R_HAVE_CRC8_EXTRA */
#if R_HAVE_CRC15_EXTRA
{"crc15can", handle_crc15_can},
{ "crc15can", handle_crc15_can},
#endif /* #if R_HAVE_CRC15_EXTRA */
{"crc16", handle_crc16},
{"crc16hdlc", handle_crc16_hdlc},
{ "crc16", handle_crc16},
{ "crc16hdlc", handle_crc16_hdlc},
{ /* CRC-16/USB */ "crc16usb", handle_crc16_usb},
{ /* CRC-16/CCITT-FALSE */ "crc16citt", handle_crc16_citt},
#if R_HAVE_CRC16_EXTRA
@ -495,12 +495,12 @@ static RHashHashHandlers hash_handlers[] = {
#endif /* #if R_HAVE_CRC16_EXTRA */
#if R_HAVE_CRC24
{"crc24", handle_crc24},
{ "crc24", handle_crc24},
#endif /* #if R_HAVE_CRC24 */
{"crc32", handle_crc32},
{"crc32c", handle_crc32c},
{"crc32ecma267", handle_crc32_ecma_267},
{ "crc32", handle_crc32},
{ "crc32c", handle_crc32c},
{ "crc32ecma267", handle_crc32_ecma_267},
#if R_HAVE_CRC32_EXTRA
{ /* CRC-32/BZIP2 */ "crc32bzip2", handle_crc32_bzip2 },
{ /* CRC-32D */ "crc32d", handle_crc32d },
@ -521,9 +521,9 @@ static RHashHashHandlers hash_handlers[] = {
{ /* CRC-64/XZ */ "crc64xz", handle_crc64_xz },
{ /* CRC-64/ISO */ "crc64iso", handle_crc64_iso },
#endif /* #if R_HAVE_CRC64_EXTRA */
{"fletcher8", handle_fletcher8},
{"fletcher16", handle_fletcher16},
{"fletcher32", handle_fletcher32},
{"fletcher64", handle_fletcher64},
{ "fletcher8", handle_fletcher8},
{ "fletcher16", handle_fletcher16},
{ "fletcher32", handle_fletcher32},
{ "fletcher64", handle_fletcher64},
{NULL, NULL},
};

View File

@ -2,7 +2,7 @@
#include <r_core.h>
static const char *help_msg_at[] = {
static RCoreHelpMessage help_msg_at = {
"Usage: [.][#]<cmd>[*] [`cmd`] [@ addr] [~grep] [|syscmd] [>[>]file]", "", "",
"0", "", "alias for 's 0'",
"0x", "addr", "alias for 's 0x..'",
@ -58,7 +58,7 @@ static const char *help_msg_at[] = {
NULL
};
static const char *help_msg_at_at[] = {
static RCoreHelpMessage help_msg_at_at = {
"@@", "", " # foreach iterator command:",
"x", " @@ sym.*", "run 'x' over all flags matching 'sym.' in current flagspace",
"x", " @@.file", "run 'x' over the offsets specified in the file (one offset per line)",
@ -79,7 +79,7 @@ static const char *help_msg_at_at[] = {
NULL
};
static const char *help_msg_at_at_at[] = {
static RCoreHelpMessage help_msg_at_at_at = {
"@@@", "", " # foreach offset+size iterator command:",
"x", " @@@=", "[addr] [size] ([addr] [size] ...)",
"x", " @@@C:cmd", "comments matching",
@ -217,7 +217,7 @@ static const char *help_msg_root[] = {
NULL
};
static const char *help_msg_question_i[] = {
static RCoreHelpMessage help_msg_question_i = {
"Usage: ?e[=bdgnpst] arg", "print/echo things", "",
"?i", " ([prompt])", "inquery the user and save that text into the yank clipboard (y)",
"?ie", " [msg]", "same as ?i, but prints the output, useful for oneliners",
@ -229,7 +229,7 @@ static const char *help_msg_question_i[] = {
"?ip", " ([path])", "interactive hud mode to find files in given path",
NULL
};
static const char *help_msg_question_e[] = {
static RCoreHelpMessage help_msg_question_e = {
"Usage: ?e[=bdgnpst] arg", "print/echo things", "",
"?e", "", "echo message with newline",
"?e=", " 32", "progress bar at 32 percentage",
@ -245,7 +245,7 @@ static const char *help_msg_question_e[] = {
NULL
};
static const char *help_msg_question[] = {
static RCoreHelpMessage help_msg_question = {
"Usage: ?[?[?]] expression", "", "",
"?!", " [cmd]", "run cmd if $? == 0",
"?", " eip-0x804800", "show all representation result for this math expr",

View File

@ -1747,7 +1747,7 @@ static void ds_show_functions_argvar(RDisasmState *ds, RAnalFunction *fcn, RAnal
var->name, COLOR_ARG (ds, color_func_var_addr),
constr? " { ":"",
r_str_get (constr),
constr? "} ":"",
constr? " } ":"",
base, sign, delta);
if (ds->show_varsum == -1) {
char *val = r_core_cmd_strf (ds->core, ".afvd %s", var->name);
@ -3523,15 +3523,15 @@ static void ds_print_vliw(RDisasmState *ds, bool after) {
if (c > 0) {
ds->vliw_count--;
if (c == 1) {
r_cons_printf (" }");
r_cons_printf ("}");
}
}
} else {
if (v > 0) {
if (c > 0) {
r_cons_printf ("}{ ");
r_cons_printf ("}{");
} else {
r_cons_printf ("{ ");
r_cons_printf ("{");
}
ds->vliw_count = v;
}

View File

@ -370,8 +370,8 @@ static void GH(print_arena_stats)(RCore *core, GHT m_arena, MallocState *main_ar
r_cons_newline ();
}
PRINT_GA (" }\n");
PRINT_GA (" binmap = {");
PRINT_GA ("}\n");
PRINT_GA (" binmap = { ");
for (i = 0; i < BINMAPSIZE; i++) {
if (i) {

View File

@ -237,7 +237,7 @@ static void GH(jemalloc_get_chunks)(RCore *core, const char *input) {
r_io_read_at (core->io, (GHT)(size_t)node->ql_link.qre_next, (ut8 *)node, sizeof (extent_node_t));
}
}
PRINT_GA ("}\n");
PRINT_GA (" }\n");
}
}
free (ar);
@ -298,7 +298,7 @@ static void GH(jemalloc_print_narenas)(RCore *core, const char *input) {
PRINTF_BA ("@ 0x%"PFMT64x"\n", at);
}
}
PRINT_GA ("}\n");
PRINT_GA (" }\n");
break;
case ' ':
arena = r_num_math (core->num, input + 1);
@ -339,7 +339,7 @@ static void GH(jemalloc_print_narenas)(RCore *core, const char *input) {
PRINTF_BA (" chunks_hooks = 0x%"PFMT64x"\n", OO(chunk_hooks));
PRINTF_BA (" bins = %d 0x%"PFMT64x"\n", JM_NBINS, OO(bins));
PRINTF_BA (" runs_avail = %d 0x%"PFMT64x"\n", NPSIZES, OO(runs_avail));
PRINT_GA ("}\n");
PRINT_GA (" }\n");
break;
}
free (ar);
@ -419,7 +419,7 @@ static void GH(jemalloc_get_bins)(RCore *core, const char *input) {
PRINT_YA (" }\n");
}
}
PRINT_GA ("}\n");
PRINT_GA (" }\n");
break;
}
free (ar);

View File

@ -1,11 +1,10 @@
/* radare - Apache - Copyright 2014-2020 - dso, pancake */
/* radare - Apache - Copyright 2014-2022 - dso, pancake */
#include <r_types.h>
#include <r_lib.h>
#include <r_cmd.h>
#include <r_core.h>
#include <r_cons.h>
#include <string.h>
#include <r_anal.h>
#include "../../../shlr/java/ops.h"
@ -16,7 +15,6 @@
#undef IFDBG
#define IFDBG if (DO_THE_DBG)
typedef struct found_idx_t {
ut16 idx;
ut64 addr;

View File

@ -731,12 +731,12 @@ R_API void r_core_rtr_add(RCore *core, const char *_input) {
const char *name;
int protocol;
} uris[7] = {
{"tcp", RTR_PROTOCOL_TCP},
{"udp", RTR_PROTOCOL_UDP},
{"rap", RTR_PROTOCOL_RAP},
{"r2p", RTR_PROTOCOL_RAP},
{"http", RTR_PROTOCOL_HTTP},
{"unix", RTR_PROTOCOL_UNIX},
{ "tcp", RTR_PROTOCOL_TCP},
{ "udp", RTR_PROTOCOL_UDP},
{ "rap", RTR_PROTOCOL_RAP},
{ "r2p", RTR_PROTOCOL_RAP},
{ "http", RTR_PROTOCOL_HTTP},
{ "unix", RTR_PROTOCOL_UNIX},
{NULL, 0}
};
char *s = r_str_ndup (input, pikaboo - input);
@ -1326,7 +1326,7 @@ beach:
#else
R_API int r_core_rtr_cmds(RCore *core, const char *port) {
unsigned char buf[4097];
ut8 buf[4097];
RSocket *ch = NULL;
int i, ret;
char *str;

View File

@ -3853,7 +3853,7 @@ static void handleHints(RCore *core) {
//TODO extend for more anal hints
int i = 0;
char ch[64] = {0};
const char *lines[] = {"[dh]- Define anal hint:"
const char *lines[] = { "[dh]- Define anal hint:"
," b [16,32,64] set bits hint"
, NULL};
for (i = 0; lines[i]; i++) {

View File

@ -30,9 +30,9 @@ static const struct {
{ "hamdist", R_HASH_HAMDIST },
{ "pcprint", R_HASH_PCPRINT },
{ "mod255", R_HASH_MOD255 },
// {"base64", R_HASH_BASE64},
// {"base91", R_HASH_BASE91},
// {"punycode", R_HASH_PUNYCODE},
// { "base64", R_HASH_BASE64},
// { "base91", R_HASH_BASE91},
// { "punycode", R_HASH_PUNYCODE},
{ "luhn", R_HASH_LUHN },
{ "ssdeep", R_HASH_SSDEEP },

View File

@ -275,7 +275,7 @@ static void serialize_registers(Sdb *db, HtUP *registers) {
ht_up_foreach (registers, serialize_register_cb, db);
}
// 0x<addr>={"size":<size_t>, "a":[<RDebugChangeMem>]}},
// 0x<addr>={ "size":<size_t>, "a":[<RDebugChangeMem>]}},
static bool serialize_memory_cb(void *db, const ut64 k, const void *v) {
RDebugChangeMem *mem;
RVector *vmem = (RVector *)v;
@ -311,8 +311,8 @@ static void serialize_checkpoints(Sdb *db, RVector *checkpoints) {
r_vector_foreach (checkpoints, chkpt) {
// 0x<cnum>={
// registers:{"<RRegisterType>":<RRegArena>, ...},
// snaps:{"size":<size_t>, "a":[<RDebugSnap>]}
// registers:{ "<RRegisterType>":<RRegArena>, ...},
// snaps:{ "size":<size_t>, "a":[<RDebugSnap>]}
// }
PJ *j = pj_new ();
if (!j) {
@ -321,7 +321,7 @@ static void serialize_checkpoints(Sdb *db, RVector *checkpoints) {
pj_o (j);
// Serialize RRegArena to "registers"
// {"size":<int>, "bytes":"<base64>"}
// { "size":<int>, "bytes":"<base64>" }
pj_ka (j, "registers");
for (i = 0; i < R_REG_TYPE_LAST; i++) {
RRegArena *arena = chkpt->arena[i];
@ -338,7 +338,7 @@ static void serialize_checkpoints(Sdb *db, RVector *checkpoints) {
pj_end (j);
// Serialize RDebugSnap to "snaps"
// {"name":<str>, "addr":<ut64>, "addr_end":<ut64>, "size":<ut64>,
// { "name":<str>, "addr":<ut64>, "addr_end":<ut64>, "size":<ut64>,
// "data":"<base64>", "perm":<int>, "user":<int>, "shared":<bool>}
pj_ka (j, "snaps");
r_list_foreach (chkpt->snaps, iter, snap) {
@ -375,28 +375,28 @@ static void serialize_checkpoints(Sdb *db, RVector *checkpoints) {
* maxcnum=<maxcnum>
*
* /registers
* 0x<addr>={"size":<size_t>, "a":[<RDebugChangeReg>]}
* 0x<addr>={ "size":<size_t>, "a":[<RDebugChangeReg>]}
*
* /memory
* 0x<addr>={"size":<size_t>, "a":[<RDebugChangeMem>]}
* 0x<addr>={ "size":<size_t>, "a":[<RDebugChangeMem>]}
*
* /checkpoints
* 0x<cnum>={
* registers:{"<RRegisterType>":<RRegArena>, ...},
* snaps:{"size":<size_t>, "a":[<RDebugSnap>]}
* registers:{ "<RRegisterType>":<RRegArena>, ...},
* snaps:{ "size":<size_t>, "a":[<RDebugSnap>]}
* }
*
* RDebugChangeReg JSON:
* {"cnum":<int>, "data":<ut64>}
* { "cnum":<int>, "data":<ut64>}
*
* RDebugChangeMem JSON:
* {"cnum":<int>, "data":<ut8>}
* { "cnum":<int>, "data":<ut8>}
*
* RRegArena JSON:
* {"size":<int>, "bytes":"<base64>"}
* { "size":<int>, "bytes":"<base64>" }
*
* RDebugSnap JSON:
* {"name":<str>, "addr":<ut64>, "addr_end":<ut64>, "size":<ut64>,
* { "name":<str>, "addr":<ut64>, "addr_end":<ut64>, "size":<ut64>,
* "data":"<base64>", "perm":<int>, "user":<int>, "shared":<bool>}
*
* Notes:

View File

@ -18,7 +18,7 @@ struct cEnv_t {
static char* r_egg_cfile_getCompiler(void) {
size_t i;
const char *compilers[] = {"llvm-gcc", "clang", "gcc"};
const char *compilers[] = { "llvm-gcc", "clang", "gcc" };
char *output = r_sys_getenv ("CC");
if (output) {
@ -223,7 +223,7 @@ static bool r_egg_cfile_parseCompiled(const char *file) {
buffer = r_str_replace (buffer, "rodata", "text", false);
buffer = r_str_replace (buffer, "get_pc_thunk.bx", "__getesp__", true);
const char *words[] = {".cstring", "size", "___main", "section", "__alloca", "zero", "cfi"};
const char *words[] = { ".cstring", "size", "___main", "section", "__alloca", "zero", "cfi" };
size_t i;
for (i = 0; i < 7; i++) {
r_str_stripLine (buffer, words[i]);
@ -325,7 +325,7 @@ R_API char* r_egg_cfile_parser(const char *file, const char *arch, const char *o
}
size_t i;
const char *extArray[] = {"bin", "tmp", "s", "o"};
const char *extArray[] = { "bin", "tmp", "s", "o" };
for (i = 0; i < 4; i++) {
free (fileExt);
if (!(fileExt = r_str_newf ("%s.%s", file, extArray[i]))) {

View File

@ -160,7 +160,7 @@ static void emit_arg(REgg *egg, int xs, int num, const char *str) {
if (d) {
r_egg_printf (egg, " add "R_BP ", %d\n", d);
}
r_egg_printf (egg, " push {"R_BP "}\n");
r_egg_printf (egg, " push { "R_BP " }\n");
if (d) {
r_egg_printf (egg, " sub "R_BP ", %d\n", d);
}

View File

@ -125,7 +125,7 @@ static void emit_arg(REgg *egg, int xs, int num, const char *str) {
if (d) {
r_egg_printf (egg, " add "R_BP ", %d\n", d);
}
r_egg_printf (egg, " push {"R_BP "}\n");
r_egg_printf (egg, " push { "R_BP " }\n");
if (d) {
r_egg_printf (egg, " sub "R_BP ", %d\n", d);
}

View File

@ -530,19 +530,19 @@ static int fs_parhook(void* disk, void* ptr, void* closure) {
static RFSPartitionType partitions[] = {
/* LGPL code */
{"dos", &fs_part_dos, fs_parhook},
{ "dos", &fs_part_dos, fs_parhook},
#if USE_GRUB
/* WARNING GPL code */
#if !__EMSCRIPTEN__
// wtf for some reason is not available on emscripten
{"msdos", &grub_msdos_partition_map, grub_parhook},
{ "msdos", &grub_msdos_partition_map, grub_parhook},
#endif
{"apple", &grub_apple_partition_map, grub_parhook},
{"sun", &grub_sun_partition_map, grub_parhook},
{"sunpc", &grub_sun_pc_partition_map, grub_parhook},
{"amiga", &grub_amiga_partition_map, grub_parhook},
{"bsdlabel", &grub_bsdlabel_partition_map, grub_parhook},
{"gpt", &grub_gpt_partition_map, grub_parhook},
{ "apple", &grub_apple_partition_map, grub_parhook},
{ "sun", &grub_sun_partition_map, grub_parhook},
{ "sunpc", &grub_sun_pc_partition_map, grub_parhook},
{ "amiga", &grub_amiga_partition_map, grub_parhook},
{ "bsdlabel", &grub_bsdlabel_partition_map, grub_parhook},
{ "gpt", &grub_gpt_partition_map, grub_parhook},
#endif
// XXX: In BURG all bsd partition map are in bsdlabel
//{ "openbsdlabel", &grub_openbsd_partition_map },

View File

@ -29,12 +29,12 @@ static RList *__cfg(RFSRoot *root, const char *path);
static RList *__flags(RFSRoot *root, const char *path);
static Routes routes[] = {
{"/cfg", &__cfg, &__cfg_cat, &__cfg_write },
{"/flags", &__flags, &__flags_cat, NULL},
{"/version", NULL, &__version, NULL},
{"/seek", NULL, &__seek_cat, &__seek_write },
{"/bsize", NULL, &__bsize_cat, &__bsize_write },
{"/", &__root},
{ "/cfg", &__cfg, &__cfg_cat, &__cfg_write },
{ "/flags", &__flags, &__flags_cat, NULL},
{ "/version", NULL, &__version, NULL},
{ "/seek", NULL, &__seek_cat, &__seek_write },
{ "/bsize", NULL, &__bsize_cat, &__bsize_write },
{ "/", &__root},
{NULL, NULL}
};

View File

@ -49,7 +49,7 @@ typedef int witness_comp_t (const witness_t *, const witness_t *);
#define WITNESS_RANK_PROF_NEXT_THR_UID WITNESS_RANK_LEAF
#define WITNESS_RANK_PROF_THREAD_ACTIVE_INIT WITNESS_RANK_LEAF
#define WITNESS_INITIALIZER(rank) {"initializer", rank, NULL, {NULL, NULL}}
#define WITNESS_INITIALIZER(rank) { "initializer", rank, NULL, {NULL, NULL}}
#endif /* JEMALLOC_H_TYPES */
/******************************************************************************/

View File

@ -23,18 +23,18 @@ typedef struct r_io_zip_uri_const_t {
} RIOZipConstURI;
static RIOZipConstURI ZIP_URIS[] = {
{"zip://", 6},
{"ipa://", 6},
{"jar://", 6},
{ "zip://", 6},
{ "ipa://", 6},
{ "jar://", 6},
{NULL, 0}
};
static RIOZipConstURI ZIP_ALL_URIS[] = {
{"apk://", 6},
{"zipall://", 9},
{"apkall://", 9},
{"ipaall://", 9},
{"jarall://", 9},
{ "apk://", 6},
{ "zipall://", 9},
{ "apkall://", 9},
{ "ipaall://", 9},
{ "jarall://", 9},
{NULL, 0}
};

View File

@ -120,55 +120,55 @@ static const struct names {
} names[] = {
/* These must be sorted by eye for optimal hit rate */
/* Add to this list only after substantial meditation */
{"msgid", L_PO},
{"dnl", L_M4},
{"import", L_JAVA},
{"\"libhdr\"", L_BCPL},
{"\"LIBHDR\"", L_BCPL},
{"//", L_CC},
{"template", L_CC},
{"virtual", L_CC},
{"class", L_CC},
{"public:", L_CC},
{"private:", L_CC},
{"/*", L_C}, /* must precede "The", "the", etc. */
{"#include", L_C},
{"char", L_C},
{"The", L_ENG},
{"the", L_ENG},
{"double", L_C},
{"extern", L_C},
{"float", L_C},
{"struct", L_C},
{"union", L_C},
{"CFLAGS", L_MAKE},
{"LDFLAGS", L_MAKE},
{"all:", L_MAKE},
{".PRECIOUS", L_MAKE},
{".ascii", L_MACH},
{".asciiz", L_MACH},
{".byte", L_MACH},
{".even", L_MACH},
{".globl", L_MACH},
{".text", L_MACH},
{"clr", L_MACH},
{"(input,", L_PAS},
{"program", L_PAS},
{"record", L_PAS},
{"dcl", L_PLI},
{"Received:", L_MAIL},
{">From", L_MAIL},
{"Return-Path:",L_MAIL},
{"Cc:", L_MAIL},
{"Newsgroups:", L_NEWS},
{"Path:", L_NEWS},
{"Organization:",L_NEWS},
{"href=", L_HTML},
{"HREF=", L_HTML},
{"<body", L_HTML},
{"<BODY", L_HTML},
{"<html", L_HTML},
{"<HTML", L_HTML},
{"<!--", L_HTML},
{ "msgid", L_PO},
{ "dnl", L_M4},
{ "import", L_JAVA},
{ "\"libhdr\"", L_BCPL},
{ "\"LIBHDR\"", L_BCPL},
{ "//", L_CC},
{ "template", L_CC},
{ "virtual", L_CC},
{ "class", L_CC},
{ "public:", L_CC},
{ "private:", L_CC},
{ "/*", L_C}, /* must precede "The", "the", etc. */
{ "#include", L_C},
{ "char", L_C},
{ "The", L_ENG},
{ "the", L_ENG},
{ "double", L_C},
{ "extern", L_C},
{ "float", L_C},
{ "struct", L_C},
{ "union", L_C},
{ "CFLAGS", L_MAKE},
{ "LDFLAGS", L_MAKE},
{ "all:", L_MAKE},
{ ".PRECIOUS", L_MAKE},
{ ".ascii", L_MACH},
{ ".asciiz", L_MACH},
{ ".byte", L_MACH},
{ ".even", L_MACH},
{ ".globl", L_MACH},
{ ".text", L_MACH},
{ "clr", L_MACH},
{ "(input,", L_PAS},
{ "program", L_PAS},
{ "record", L_PAS},
{ "dcl", L_PLI},
{ "Received:", L_MAIL},
{ ">From", L_MAIL},
{ "Return-Path:",L_MAIL},
{ "Cc:", L_MAIL},
{ "Newsgroups:", L_NEWS},
{ "Path:", L_NEWS},
{ "Organization:",L_NEWS},
{ "href=", L_HTML},
{ "HREF=", L_HTML},
{ "<body", L_HTML},
{ "<BODY", L_HTML},
{ "<html", L_HTML},
{ "<HTML", L_HTML},
{ "<!--", L_HTML},
};
#define NNAMES (sizeof (names)/sizeof (struct names))

View File

@ -23,52 +23,52 @@ static int replace(int argc, const char *argv[], char *newstr, ADDR_TYPE type) {
const char *op;
const char *str;
} ops[] = {
{1, "lda", "a = 1"},
{2, "lda", "a = (1+2)"},
{1, "ldx", "x = 1"},
{2, "ldx", "x = (1+2)"},
{1, "ldy", "y = 1"},
{2, "ldy", "y = (1+2)"},
{1, "sta", "[1] = a"},
{2, "sta", "[1+2 ] = a"},
{1, "stx", "[1] = x"},
{2, "stx", "[1+2] = x"},
{1, "sty", "[1] = y"},
{2, "sty", "[1+2] = y"},
{1, "dec", "1--"},
{2, "dec", "(1+2)--"},
{0, "dcx", "x--"},
{0, "dcy", "y--"},
{1, "inc", "1++"},
{2, "inc", "(1+2)++"},
{0, "inx", "x++"},
{0, "iny", "y++"},
{1, "adc", "a += 1"},
{2, "adc", "a += (1+2)"},
{1, "sbc", "a -= 1"},
{2, "sbc", "a -= (1+2)"},
{0, "pha", "push a"},
{1, "and", "a &= 1"},
{2, "and", "a &= (1+2)"},
{1, "eor", "a ^= 1"},
{2, "eor", "a ^= (1+2)"},
{1, "ora", "a |= 1"},
{2, "ora", "a |= (1+2)"},
{0, "tax", "x = a"},
{0, "tay", "y = a"},
{0, "txa", "a = x"},
{0, "tya", "a = y"},
{0, "tsx", "x = s"},
{0, "txs", "s = x"},
{0, "brk", "break"},
{0, "clc", "clear_carry"},
{0, "cld", "clear_decimal"},
{0, "cli", "clear_interrupt"},
{0, "clv", "clear_overflow"},
{0, "sec", "set_carry"},
{0, "sed", "set_decimal"},
{0, "sei", "set_interrupt"},
{1, "jsr", "1()"},
{1, "lda", "a = 1" },
{2, "lda", "a = (1+2)" },
{1, "ldx", "x = 1" },
{2, "ldx", "x = (1+2)" },
{1, "ldy", "y = 1" },
{2, "ldy", "y = (1+2)" },
{1, "sta", "[1] = a" },
{2, "sta", "[1+2 ] = a" },
{1, "stx", "[1] = x" },
{2, "stx", "[1+2] = x" },
{1, "sty", "[1] = y" },
{2, "sty", "[1+2] = y" },
{1, "dec", "1--" },
{2, "dec", "(1+2)--" },
{0, "dcx", "x--" },
{0, "dcy", "y--" },
{1, "inc", "1++" },
{2, "inc", "(1+2)++" },
{0, "inx", "x++" },
{0, "iny", "y++" },
{1, "adc", "a += 1" },
{2, "adc", "a += (1+2)" },
{1, "sbc", "a -= 1" },
{2, "sbc", "a -= (1+2)" },
{0, "pha", "push a" },
{1, "and", "a &= 1" },
{2, "and", "a &= (1+2)" },
{1, "eor", "a ^= 1" },
{2, "eor", "a ^= (1+2)" },
{1, "ora", "a |= 1" },
{2, "ora", "a |= (1+2)" },
{0, "tax", "x = a" },
{0, "tay", "y = a" },
{0, "txa", "a = x" },
{0, "tya", "a = y" },
{0, "tsx", "x = s" },
{0, "txs", "s = x" },
{0, "brk", "break" },
{0, "clc", "clear_carry" },
{0, "cld", "clear_decimal" },
{0, "cli", "clear_interrupt" },
{0, "clv", "clear_overflow" },
{0, "sec", "set_carry" },
{0, "sed", "set_decimal" },
{0, "sei", "set_interrupt" },
{1, "jsr", "1()" },
{0, NULL}};
if (!newstr) {
return false;

View File

@ -11,22 +11,22 @@ static int replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{ "cmpl", "cmp 2, 1"},
{ "testl", "test 2, 1"},
{ "leal", "lea 2, 1"},
{ "movl", "mov 2, 1"},
{ "xorl", "xor 2, 1"},
{ "andl", "and 2, 1"},
{ "orl", "or 2, 1"},
{ "addl", "add 2, 1"},
{ "incl", "inc 1"},
{ "decl", "dec 1"},
{ "subl", "sub 2, 1"},
{ "mull", "mul 2, 1"},
{ "divl", "div 2, 1"},
{ "pushl", "push 1"},
{ "popl", "pop 1"},
{ "ret", "ret"},
{ "cmpl", "cmp 2, 1" },
{ "testl", "test 2, 1" },
{ "leal", "lea 2, 1" },
{ "movl", "mov 2, 1" },
{ "xorl", "xor 2, 1" },
{ "andl", "and 2, 1" },
{ "orl", "or 2, 1" },
{ "addl", "add 2, 1" },
{ "incl", "inc 1" },
{ "decl", "dec 1" },
{ "subl", "sub 2, 1" },
{ "mull", "mul 2, 1" },
{ "divl", "div 2, 1" },
{ "pushl", "push 1" },
{ "popl", "pop 1" },
{ "ret", "ret" },
{ NULL }
};

View File

@ -16,87 +16,87 @@ static bool replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{ "add", "A += B"},
{ "adc", "A += B + carry"},
{ "adiw", "A+1:A += B"},
{ "sub", "A -= B"},
{ "subi", "A -= B"},
{ "sbc", "A -= (B + carry)"},
{ "sbci", "A -= (B + carry)"},
{ "sbiw", "A+1:A -= B"},
{ "and", "A &= B"},
{ "andi", "A &= B"},
{ "or", "A |= B"},
{ "ori", "A |= B"},
{ "eor", "A ^= B"},
{ "com", "A = 0xff - A"},
{ "neg", "A = -A"},
{ "sbr", "A |= B"},
{ "cbr", "A &= (0xff - B)"},
{ "inc", "A++"},
{ "dec", "A--"},
{ "tst", "A &= A"},
{ "clr", "A ^= A"},
{ "ser", "A = 0xff"},
{ "mul", "r1:r0 = A * B"},
{ "rjmp", "goto A"},
{ "ijmp", "goto z"},
{ "jmp", "goto A"},
{ "rcall", "goto A"},
{ "icall", "goto z"},
{ "call", "goto A"},
{ "ret", "return"},
{ "iret", "return_interrupt()"},
{ "cp", "var = A - B"},
{ "cpc", "var = A - B - carry"},
{ "cpi", "var = A - B"},
{ "breq", "if (!var) goto A"},
{ "brne", "if (var) goto A"},
{ "brsh", "if (var >= 0) goto A"},
{ "brlo", "if (var < 0) goto A"},
{ "brmi", "if (var < 0) goto A"},
{ "brpl", "if (var > 0) goto A"},
{ "brge", "if (var >= 0) goto A"},
{ "brlt", "if (var < 0) goto A"},
{ "mov", "A = B"},
{ "movw", "A+1:A = B+1:B"},
{ "ldi", "A = B"},
{ "lds", "A = *(B)"},
{ "ld", "A = *(B)"},
{ "ldd", "A = *(B)"},
{ "lpm", "r0 = z"},
{ "in", "A = B"},
{ "out", "A = B"},
{ "push", "push(A)"},
{ "pop", "A = pop()"},
{ "lsl", "A <<= 1"},
{ "lsr", "A >>= 1"},
{ "rol", "A = (A << 1) | (A >> 7)"},
{ "ror", "A = (A << 7) | (A >> 1)"},
{ "asr", "A >>= 1"},
{ "swap", "A = ((A & 0xf0) >> 4) | ((A & 0x0f) << 4)"},
{ "sec", "c = 1"},
{ "clc", "c = 0"},
{ "sen", "n = 1"},
{ "cln", "n = 0"},
{ "sez", "z = 1"},
{ "clz", "z = 0"},
{ "sei", "i = 1"},
{ "cli", "i = 0"},
{ "ses", "s = 1"},
{ "cls", "s = 0"},
{ "sev", "v = 1"},
{ "clv", "v = 0"},
{ "set", "t = 1"},
{ "clt", "t = 0"},
{ "seh", "h = 1"},
{ "clh", "h = 0"},
{ "nop", ""},
{ "halt", "_halt()"},
{ "wdr", "_watchdog_reset()"},
{ "std", "*(A) = B"},
{ "st", "*(A) = B"},
{ "sts", "*(A) = B"},
{ "add", "A += B" },
{ "adc", "A += B + carry" },
{ "adiw", "A+1:A += B" },
{ "sub", "A -= B" },
{ "subi", "A -= B" },
{ "sbc", "A -= (B + carry)" },
{ "sbci", "A -= (B + carry)" },
{ "sbiw", "A+1:A -= B" },
{ "and", "A &= B" },
{ "andi", "A &= B" },
{ "or", "A |= B" },
{ "ori", "A |= B" },
{ "eor", "A ^= B" },
{ "com", "A = 0xff - A" },
{ "neg", "A = -A" },
{ "sbr", "A |= B" },
{ "cbr", "A &= (0xff - B)" },
{ "inc", "A++" },
{ "dec", "A--" },
{ "tst", "A &= A" },
{ "clr", "A ^= A" },
{ "ser", "A = 0xff" },
{ "mul", "r1:r0 = A * B" },
{ "rjmp", "goto A" },
{ "ijmp", "goto z" },
{ "jmp", "goto A" },
{ "rcall", "goto A" },
{ "icall", "goto z" },
{ "call", "goto A" },
{ "ret", "return" },
{ "iret", "return_interrupt()" },
{ "cp", "var = A - B" },
{ "cpc", "var = A - B - carry" },
{ "cpi", "var = A - B" },
{ "breq", "if (!var) goto A" },
{ "brne", "if (var) goto A" },
{ "brsh", "if (var >= 0) goto A" },
{ "brlo", "if (var < 0) goto A" },
{ "brmi", "if (var < 0) goto A" },
{ "brpl", "if (var > 0) goto A" },
{ "brge", "if (var >= 0) goto A" },
{ "brlt", "if (var < 0) goto A" },
{ "mov", "A = B" },
{ "movw", "A+1:A = B+1:B" },
{ "ldi", "A = B" },
{ "lds", "A = *(B)" },
{ "ld", "A = *(B)" },
{ "ldd", "A = *(B)" },
{ "lpm", "r0 = z" },
{ "in", "A = B" },
{ "out", "A = B" },
{ "push", "push(A)" },
{ "pop", "A = pop()" },
{ "lsl", "A <<= 1" },
{ "lsr", "A >>= 1" },
{ "rol", "A = (A << 1) | (A >> 7)" },
{ "ror", "A = (A << 7) | (A >> 1)" },
{ "asr", "A >>= 1" },
{ "swap", "A = ((A & 0xf0) >> 4) | ((A & 0x0f) << 4)" },
{ "sec", "c = 1" },
{ "clc", "c = 0" },
{ "sen", "n = 1" },
{ "cln", "n = 0" },
{ "sez", "z = 1" },
{ "clz", "z = 0" },
{ "sei", "i = 1" },
{ "cli", "i = 0" },
{ "ses", "s = 1" },
{ "cls", "s = 0" },
{ "sev", "v = 1" },
{ "clv", "v = 0" },
{ "set", "t = 1" },
{ "clt", "t = 0" },
{ "seh", "h = 1" },
{ "clh", "h = 0" },
{ "nop", "" },
{ "halt", "_halt()" },
{ "wdr", "_watchdog_reset()" },
{ "std", "*(A) = B" },
{ "st", "*(A) = B" },
{ "sts", "*(A) = B" },
{ NULL }
};

View File

@ -15,181 +15,181 @@ static int replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{ "rsub-int", "1 = 2 - 3"},
{ "float-to-double", "1 = (double)(float) 2"},
{ "float-to-long", "1 = (long)(float) 2"},
{ "float-to-int", "1 = (int)(float) 2"},
{ "long-to-float", "1 = (float)(long) 2"},
{ "long-to-int", "1 = (int)(long) 2"},
{ "long-to-double", "1 = (double) 2"},
{ "double-to-long", "1 = (long) 2"},
{ "double-to-int", "1 = (int) 2"},
{ "int-to-double", "1 = (double) 2"},
{ "int-to-long", "1 = (long) 2"},
{ "int-to-byte", "1 = (byte) 2"},
{ "aget-byte", "1 = (byte) 2[3]"},
{ "aget-short", "1 = (short) 2[3]"},
{ "aget-object", "1 = (object) 2[3]"},
{ "sput-wide", "1 = 2"},
{ "sput-object", "1 = 2"},
{ "add-long", "1 = 2 + 3"},
{ "add-double", "1 = 2 + 3"},
{ "mul-long", "1 = 2 * 3"},
{ "const-string/jumbo", "1 = (jumbo-string) 2"},
{ "const-string", "1 = (string) 2"},
{ "const-wide", "1 = (wide) 2"},
{ "const/4", "1 = (wide) 2"},
{ "cmp-int", "1 = (2 == 3)"},
{ "cmp-long", "1 = (2 == 3)"},
{ "cmpl-double", "1 = (double)(2 == 3)"},
{ "cmpl-float", "1 = (float)(2 == 3)"},
{ "cmpl-int", "1 = (int)(2 == 3)"},
{ "cmpg-double", "1 = (2 == 3)"},
{ "cmpg-float", "1 = (2 == 3)"},
{ "or-int/2addr", "1 |= 2"},
{ "or-long", "1 |= 2"},
{ "and-long/2addr", "1 &= (long) 2"},
{ "and-int", "1 &= (int) 2"},
{ "and-byte", "1 &= (byte) 2"},
{ "sub-float/2addr", "1 -= 2"},
{ "sub-float", "1 = 2 - 3"},
{ "sub-int", "1 = (int) 2 - 3"},
{ "sub-long", "1 = (long) 2 - 3"},
{ "sub-long/2addr", "1 -= (long) 2"},
{ "sub-int/2addr", "1 -= 2"},
{ "move", "1 = 2"},
{ "move/16", "1 = 2"},
{ "move-object", "1 = (object) 2"},
{ "move-object/16", "1 = (object) 2"},
{ "move-object/from16", "1 = (object) 2"},
{ "move-wide/from16", "1 = (wide) 2"},
{ "array-length", "1 = Array.length (2)"},
{ "new-array", "1 = new array (2, 3)"},
{ "new-instance", "1 = new 2"},
{ "shr-long/2addr", "1 >>= 2"},
{ "shr-long", "1 = (long) 2 >> 3"},
{ "shr-int", "1 = (int) 2 >> 3"},
{ "ushr-int", "1 = (int) 2 >>> 3"},
{ "ushr-int/2addr", "1 >>>= 2"},
{ "ushr-long", "1 = (long) 2 >>> 3"},
{ "ushl-int/2addr", "1 <<<= 2"},
{ "shl-int/2addr", "1 <<<= 2"},
{ "shl-int", "1 = (int) 2 << 3"},
{ "shl-long", "1 = (long) 2 << 3"},
{ "move/from16", "1 = 2"},
{ "move-exception", "1 = exception"},
{ "move-result", "1 = result"},
{ "move-result-wide", "1 = (wide) result"},
{ "move-result-object", "1 = (object) result"},
{ "const-wide/high16", "1 = 2"},
{ "const/16", "1 = 2"},
{ "const-wide/16", "1 = 2"},
{ "const-wide/32", "1 = 2"},
{ "const-class", "1 = (class) 2"},
{ "const/high16", "1 = 2"},
{ "const", "1 = 2"},
{ "rem-long", "1 = (long) 2 % 3"},
{ "rem-double", "1 = (double) 2 % 3"},
{ "rem-float", "1 = (float) 2 % 3"},
{ "rem-long/2addr", "1 %= 2"},
{ "rem-float/2addr", "1 %= (float) 2"},
{ "rem-double/2addr", "1 %= (double) 2"},
{ "instance-of", "1 = insteanceof (2) == 3"},
{ "aput", "2[3] = 1"},
{ "aput-byte", "2[3] = (byte) 1"},
{ "aput-short", "2[3] = (short) 1"},
{ "aput-object", "2[3] = (object) 1"},
{ "aput-wide", "2[3] = (wide) 1"},
{ "aput-char", "2[3] = (char) 1"},
{ "aput-boolean", "2[3] = (bool) 1"},
{ "aget", "1 = 2[3]"},
{ "aget-wide", "1 = (wide) 2[3]"},
{ "aget-char", "1 = (char) 2[3]"},
{ "aget-boolean", "1 = (boolean) 2[3]"},
{ "sget", "1 = 2"},
{ "sget-char", "1 = (char) 2"},
{ "sget-short", "1 = (short) 2"},
{ "sget-boolean", "1 = (bool) 2"},
{ "sget-object", "1 = (object) 2"},
{ "iput", "2[3] = 1"},
{ "iput-object", "2[3] = (object) 1"},
{ "iput-byte", "2[3] = (byte) 1"},
{ "iput-char", "2[3] = (char) 1"},
{ "iput-boolean", "2[3] = (bool) 1"},
{ "sput-boolean", "2[3] = (bool) 1"},
{ "sput-char", "2[3] = (char) 1"},
{ "iput-int", "2[3] = (int) 1"},
{ "iget", "1 = 2[3]"},
{ "sget-byte", "1 = (byte) 2 [3]"},
{ "iget-byte", "1 = (byte) 2 [3]"},
{ "iget-char", "1 = (char) 2 [3]"},
{ "iget-short", "1 = (short) 2 [3]"},
{ "iget-wide", "1 = (wide) 2 [3]"},
{ "iget-object", "1 = (2) 3"},
{ "iget-boolean", "1 = (bool) 2 [3]"},
{ "+iget-wide-volatile", "1 = (wide-volatile) 2 [3]"},
{ "if-eq", "if (1 == 2) goto 3"},
{ "if-lt", "if (1 < 2) goto 3"},
{ "if-ne", "if (1 != 2) goto 3"},
{ "if-eqz", "if (!1) goto 2"},
{ "if-ge", "if (1 > zero) goto 2"},
{ "if-le", "if (1 <= 2) goto 3"},
{ "if-gtz", "if (1 > 0) goto 2"},
{ "filled-new-array", "1 = new Array(2)"},
{ "neg-long", "1 = -2"},
{ "neg-double", "1 = -2"},
{ "neg-float", "1 = -2"},
{ "not-int", "1 = !2"},
{ "packed-switch", "switch 2"},
{ "sparse-switch", "switch 2"},
{ "invoke-direct", "call 2 1"},
{ "invoke-direct/range", "call 2 1"},
{ "invoke-interface", "call 2 1"},
{ "invoke-static", "call 2 1"},
{ "invoke-super", "call super 2 1"},
{ "invoke-super/range", "call super 2 1"},
{ "rsub-int", "1 = 2 - 3" },
{ "float-to-double", "1 = (double)(float) 2" },
{ "float-to-long", "1 = (long)(float) 2" },
{ "float-to-int", "1 = (int)(float) 2" },
{ "long-to-float", "1 = (float)(long) 2" },
{ "long-to-int", "1 = (int)(long) 2" },
{ "long-to-double", "1 = (double) 2" },
{ "double-to-long", "1 = (long) 2" },
{ "double-to-int", "1 = (int) 2" },
{ "int-to-double", "1 = (double) 2" },
{ "int-to-long", "1 = (long) 2" },
{ "int-to-byte", "1 = (byte) 2" },
{ "aget-byte", "1 = (byte) 2[3]" },
{ "aget-short", "1 = (short) 2[3]" },
{ "aget-object", "1 = (object) 2[3]" },
{ "sput-wide", "1 = 2" },
{ "sput-object", "1 = 2" },
{ "add-long", "1 = 2 + 3" },
{ "add-double", "1 = 2 + 3" },
{ "mul-long", "1 = 2 * 3" },
{ "const-string/jumbo", "1 = (jumbo-string) 2" },
{ "const-string", "1 = (string) 2" },
{ "const-wide", "1 = (wide) 2" },
{ "const/4", "1 = (wide) 2" },
{ "cmp-int", "1 = (2 == 3)" },
{ "cmp-long", "1 = (2 == 3)" },
{ "cmpl-double", "1 = (double)(2 == 3)" },
{ "cmpl-float", "1 = (float)(2 == 3)" },
{ "cmpl-int", "1 = (int)(2 == 3)" },
{ "cmpg-double", "1 = (2 == 3)" },
{ "cmpg-float", "1 = (2 == 3)" },
{ "or-int/2addr", "1 |= 2" },
{ "or-long", "1 |= 2" },
{ "and-long/2addr", "1 &= (long) 2" },
{ "and-int", "1 &= (int) 2" },
{ "and-byte", "1 &= (byte) 2" },
{ "sub-float/2addr", "1 -= 2" },
{ "sub-float", "1 = 2 - 3" },
{ "sub-int", "1 = (int) 2 - 3" },
{ "sub-long", "1 = (long) 2 - 3" },
{ "sub-long/2addr", "1 -= (long) 2" },
{ "sub-int/2addr", "1 -= 2" },
{ "move", "1 = 2" },
{ "move/16", "1 = 2" },
{ "move-object", "1 = (object) 2" },
{ "move-object/16", "1 = (object) 2" },
{ "move-object/from16", "1 = (object) 2" },
{ "move-wide/from16", "1 = (wide) 2" },
{ "array-length", "1 = Array.length (2)" },
{ "new-array", "1 = new array (2, 3)" },
{ "new-instance", "1 = new 2" },
{ "shr-long/2addr", "1 >>= 2" },
{ "shr-long", "1 = (long) 2 >> 3" },
{ "shr-int", "1 = (int) 2 >> 3" },
{ "ushr-int", "1 = (int) 2 >>> 3" },
{ "ushr-int/2addr", "1 >>>= 2" },
{ "ushr-long", "1 = (long) 2 >>> 3" },
{ "ushl-int/2addr", "1 <<<= 2" },
{ "shl-int/2addr", "1 <<<= 2" },
{ "shl-int", "1 = (int) 2 << 3" },
{ "shl-long", "1 = (long) 2 << 3" },
{ "move/from16", "1 = 2" },
{ "move-exception", "1 = exception" },
{ "move-result", "1 = result" },
{ "move-result-wide", "1 = (wide) result" },
{ "move-result-object", "1 = (object) result" },
{ "const-wide/high16", "1 = 2" },
{ "const/16", "1 = 2" },
{ "const-wide/16", "1 = 2" },
{ "const-wide/32", "1 = 2" },
{ "const-class", "1 = (class) 2" },
{ "const/high16", "1 = 2" },
{ "const", "1 = 2" },
{ "rem-long", "1 = (long) 2 % 3" },
{ "rem-double", "1 = (double) 2 % 3" },
{ "rem-float", "1 = (float) 2 % 3" },
{ "rem-long/2addr", "1 %= 2" },
{ "rem-float/2addr", "1 %= (float) 2" },
{ "rem-double/2addr", "1 %= (double) 2" },
{ "instance-of", "1 = insteanceof (2) == 3" },
{ "aput", "2[3] = 1" },
{ "aput-byte", "2[3] = (byte) 1" },
{ "aput-short", "2[3] = (short) 1" },
{ "aput-object", "2[3] = (object) 1" },
{ "aput-wide", "2[3] = (wide) 1" },
{ "aput-char", "2[3] = (char) 1" },
{ "aput-boolean", "2[3] = (bool) 1" },
{ "aget", "1 = 2[3]" },
{ "aget-wide", "1 = (wide) 2[3]" },
{ "aget-char", "1 = (char) 2[3]" },
{ "aget-boolean", "1 = (boolean) 2[3]" },
{ "sget", "1 = 2" },
{ "sget-char", "1 = (char) 2" },
{ "sget-short", "1 = (short) 2" },
{ "sget-boolean", "1 = (bool) 2" },
{ "sget-object", "1 = (object) 2" },
{ "iput", "2[3] = 1" },
{ "iput-object", "2[3] = (object) 1" },
{ "iput-byte", "2[3] = (byte) 1" },
{ "iput-char", "2[3] = (char) 1" },
{ "iput-boolean", "2[3] = (bool) 1" },
{ "sput-boolean", "2[3] = (bool) 1" },
{ "sput-char", "2[3] = (char) 1" },
{ "iput-int", "2[3] = (int) 1" },
{ "iget", "1 = 2[3]" },
{ "sget-byte", "1 = (byte) 2 [3]" },
{ "iget-byte", "1 = (byte) 2 [3]" },
{ "iget-char", "1 = (char) 2 [3]" },
{ "iget-short", "1 = (short) 2 [3]" },
{ "iget-wide", "1 = (wide) 2 [3]" },
{ "iget-object", "1 = (2) 3" },
{ "iget-boolean", "1 = (bool) 2 [3]" },
{ "+iget-wide-volatile", "1 = (wide-volatile) 2 [3]" },
{ "if-eq", "if (1 == 2) goto 3" },
{ "if-lt", "if (1 < 2) goto 3" },
{ "if-ne", "if (1 != 2) goto 3" },
{ "if-eqz", "if (!1) goto 2" },
{ "if-ge", "if (1 > zero) goto 2" },
{ "if-le", "if (1 <= 2) goto 3" },
{ "if-gtz", "if (1 > 0) goto 2" },
{ "filled-new-array", "1 = new Array(2)" },
{ "neg-long", "1 = -2" },
{ "neg-double", "1 = -2" },
{ "neg-float", "1 = -2" },
{ "not-int", "1 = !2" },
{ "packed-switch", "switch 2" },
{ "sparse-switch", "switch 2" },
{ "invoke-direct", "call 2 1" },
{ "invoke-direct/range", "call 2 1" },
{ "invoke-interface", "call 2 1" },
{ "invoke-static", "call 2 1" },
{ "invoke-super", "call super 2 1" },
{ "invoke-super/range", "call super 2 1" },
{ "invoke-polymorphic", "call polymorphic 2 1" },
{ "invoke-virtual/range", "call 2 1"},
{ "invoke-virtual", "call 2 1"},
{ "+invoke-virtual-quick", "call 2 1"},
{ "+invoke-interface/range", "call 2 1"},
{ "invoke-interface/range", "call 2 1"},
{ "div-float/2addr", "1 /= (float) 2"},
{ "div-double/2addr", "1 /= (double) 2"},
{ "div-double", "1 = (double) 2 / 3"},
{ "div-float", "1 = 2 / 3"},
{ "div-int/lit8", "1 = 2 / 3"},
{ "div-int/lit16", "1 = 2 / 3"},
{ "div-int/2addr", "1 /= 2"},
{ "div-int", "1 = (int)(2 / 3)"},
{ "goto/16", "goto 1"},
{ "goto/32", "goto 1"},
{ "or-int", "1 = (int)(2 | 3)"},
{ "xor-int", "1 = (int)(2 ^ 3)"},
{ "xor-int/2addr", "1 ^= 2"},
{ "xor-byte", "1 = (byte)(2 ^ 3)"},
{ "xor-short", "1 = (short)(2 ^ 3)"},
{ "sub-int", "1 = (int)(2 - 3)"},
{ "if-nez", "if (1) goto 2"},
{ "if-ltz", "if (1 <=) goto 2"},
{ "mul-int", "1 = (int)(2 * 3)"},
{ "mul-int/lit8", "1 = (2 * 3)"},
{ "check-cast", "if (1 instanceof 2)"},
{ "add-int", "1 = (int)(2 + 3)"},
{ "add-int/lit8", "1 = 2 + 3"},
{ "add-int/lit16", "1 = 2 + 3"},
{ "add-int/2addr", "1 += 2"},
{ "add-double", "1 = (double)(2 + 3)"},
{ "add-double/2addr", "1 += (double)2"},
{ "mul-float/2addr", "1 *= 2"},
{ "mul-float", "1 = 2 * 3"},
{ "xor-long", "1 = (long)(2 ^ 3)"},
{ "mul-double", "1 = 2 * 3"},
{ "move-wide", "1 = 2"},
{ "move-wide/16", "1 = 2"},
{ "return-wide", "return (wide) 1"},
{ "return-object", "return (object) 1"},
// { "sget", "1 = 2[3]"},
{ "invoke-virtual/range", "call 2 1" },
{ "invoke-virtual", "call 2 1" },
{ "+invoke-virtual-quick", "call 2 1" },
{ "+invoke-interface/range", "call 2 1" },
{ "invoke-interface/range", "call 2 1" },
{ "div-float/2addr", "1 /= (float) 2" },
{ "div-double/2addr", "1 /= (double) 2" },
{ "div-double", "1 = (double) 2 / 3" },
{ "div-float", "1 = 2 / 3" },
{ "div-int/lit8", "1 = 2 / 3" },
{ "div-int/lit16", "1 = 2 / 3" },
{ "div-int/2addr", "1 /= 2" },
{ "div-int", "1 = (int)(2 / 3)" },
{ "goto/16", "goto 1" },
{ "goto/32", "goto 1" },
{ "or-int", "1 = (int)(2 | 3)" },
{ "xor-int", "1 = (int)(2 ^ 3)" },
{ "xor-int/2addr", "1 ^= 2" },
{ "xor-byte", "1 = (byte)(2 ^ 3)" },
{ "xor-short", "1 = (short)(2 ^ 3)" },
{ "sub-int", "1 = (int)(2 - 3)" },
{ "if-nez", "if (1) goto 2" },
{ "if-ltz", "if (1 <=) goto 2" },
{ "mul-int", "1 = (int)(2 * 3)" },
{ "mul-int/lit8", "1 = (2 * 3)" },
{ "check-cast", "if (1 instanceof 2)" },
{ "add-int", "1 = (int)(2 + 3)" },
{ "add-int/lit8", "1 = 2 + 3" },
{ "add-int/lit16", "1 = 2 + 3" },
{ "add-int/2addr", "1 += 2" },
{ "add-double", "1 = (double)(2 + 3)" },
{ "add-double/2addr", "1 += (double)2" },
{ "mul-float/2addr", "1 *= 2" },
{ "mul-float", "1 = 2 * 3" },
{ "xor-long", "1 = (long)(2 ^ 3)" },
{ "mul-double", "1 = 2 * 3" },
{ "move-wide", "1 = 2" },
{ "move-wide/16", "1 = 2" },
{ "return-wide", "return (wide) 1" },
{ "return-object", "return (object) 1" },
// { "sget", "1 = 2[3]" },
{ NULL }
};

View File

@ -61,7 +61,7 @@ static int replace(int argc, const char *argv[], char *newstr) {
{ "lsr", "2 >>= 1", 2},
{ "lsl", "2 <<= 1", 2},
{ "andi", "2 &= 1", 2},
{ "nop", ""},
{ "nop", "" },
//
{ NULL }
};

View File

@ -16,111 +16,111 @@ static int replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{ "add", "B += A"},
{ "addc", "B += A + t"},
{ "addv", "B += A; t = int_overflow (B)"},
{ "and", "B &= A"},
{ "and.b", "B &= A"},
{ "bf", "if (!t) goto A"},
{ "bf.s", "if (!t) goto A"},
{ "bra", "goto A"},
{ "brk", "_break_exception ()"},
{ "bsr", "A ()"},
{ "bsrf", "A ()"},
{ "bt", "if (t) goto A"},
{ "bt.s", "if (t) goto A"},
{ "clrmac", "_clrmac ()"},
{ "clrs", "_clrs ()"},
{ "clrt", "_clrt ()"},
{ "cmp/eq", "t = B == A ? 1 : 0"},
{ "cmp/ge", "t = B >= A ? 1 : 0"},
{ "cmp/gt", "t = B > A ? 1 : 0"},
{ "cmp/hi", "t = (unsigned) B > (unsigned) A ? 1 : 0"},
{ "cmp/hs", "t = (unsigned) B >= (unsigned) A ? 1 : 0"},
{ "cmp/pl", "t = A > 0 ? 1 : 0"},
{ "cmp/pz", "t = A >= 0 ? 1 : 0"},
{ "cmp/str", "t = A ^ B ? 1 : 0"},
{ "div1", "B /= A"},
{ "dmuls.l", "mac = B * A"},
{ "dmulu.l", "mac = (unsigned) B * (unsigned) A"},
{ "dt", "A--; t = !A ? 1 : 0"},
{ "exts.b", "B = (int) A"},
{ "extu.b", "B = (unsigned int) A"},
{ "exts.w", "B = (int) A"},
{ "extu.w", "B = (unsigned int) A"},
{ "fabs", "A = abs (A)"},
{ "fadd", "B += A"},
{ "fcmp/eq", "t = B == A ? 1 : 0"},
{ "fcmp/gt", "t = B > A ? 1 : 0"},
{ "fcnvds", "B = A"},
{ "fdiv", "B /= A"},
{ "flds", "B = A"},
{ "fldi0", "A = 0.0f"},
{ "fldi1", "A = 1.0f"},
{ "float", "B = A"},
{ "fmac", "C += A * B"},
{ "fmov", "B = A"},
{ "fmov.s", "B = A"},
{ "fmul", "B *= A"},
{ "fneg", "A = -A"},
{ "fsqrt", "A = sqrt (A)"},
{ "fsts", "B = A"},
{ "fsub", "B -= A"},
{ "ftrc", "B = trunc (A)"},
{ "ftrv", "B *= A"},
{ "jmp", "goto A"},
{ "jsr", "A ()"},
{ "ldr", "B = A"},
{ "ldr.l", "B = A"},
{ "lds", "B = A"},
{ "lds.l", "B = A"},
{ "mov", "B = A"},
{ "mov.b", "B = A"},
{ "mov.l", "B = A"},
{ "mov.w", "B = A"},
{ "movca.l", "B = A"},
{ "movt", "A = t"},
{ "muls.w", "macl = A * B"},
{ "mulu.w", "macl = (unsigned) A * (unsigned) B"},
{ "neg", "A = -A"},
{ "negc", "A = (-A) - t"},
{ "nop", ""},
{ "not", "A = !A"},
{ "or", "B |= A"},
{ "rotcl", "t = A & 0x80000000 ? 0 : 1; A = (A << 1) | t"},
{ "rotl", "A = (A << 1) | (A >> 31)"},
{ "rotr", "A = (A << 31) | (A >> 1)"},
{ "rte", "_rte ()"},
{ "rts", "return"},
{ "sets", "s = 1"},
{ "sett", "t = 1"},
{ "shad", "B = A >= 0 ? B << A : B >> (31 - A)"},
{ "shal", "A <<= 1"},
{ "shar", "A >>= 1"},
{ "shld", "B = A >= 0 ? B << A : B >> (31 - A)"},
{ "shll", "A <<= 1"},
{ "shll2", "A <<= 2"},
{ "shll8", "A <<= 8"},
{ "shll16", "A <<= 16"},
{ "shlr", "A >>= 1"},
{ "shlr2", "A >>= 2"},
{ "shlr8", "A >>= 8"},
{ "shlr16", "A >>= 16"},
{ "sleep", "_halt ()"},
{ "stc", "B = A"},
{ "stc.l", "B = A"},
{ "sts", "B = A"},
{ "sts.l", "B = A"},
{ "sub", "B -= A"},
{ "subc", "B -= A - t"},
{ "subv", "B -= A; t = int_underflow (B)"},
{ "swap.b", "swap_byte (B, A)"},
{ "swap.w", "swap_word (B, A)"},
{ "tas.b", "test_and_set (A)"},
{ "trapa", "trap (A)"},
{ "tst", "t = B & A ? 0 : 1"},
{ "xor", "B ^= A"},
{ "xor.b", "B ^= A"},
{ "add", "B += A" },
{ "addc", "B += A + t" },
{ "addv", "B += A; t = int_overflow (B)" },
{ "and", "B &= A" },
{ "and.b", "B &= A" },
{ "bf", "if (!t) goto A" },
{ "bf.s", "if (!t) goto A" },
{ "bra", "goto A" },
{ "brk", "_break_exception ()" },
{ "bsr", "A ()" },
{ "bsrf", "A ()" },
{ "bt", "if (t) goto A" },
{ "bt.s", "if (t) goto A" },
{ "clrmac", "_clrmac ()" },
{ "clrs", "_clrs ()" },
{ "clrt", "_clrt ()" },
{ "cmp/eq", "t = B == A ? 1 : 0" },
{ "cmp/ge", "t = B >= A ? 1 : 0" },
{ "cmp/gt", "t = B > A ? 1 : 0" },
{ "cmp/hi", "t = (unsigned) B > (unsigned) A ? 1 : 0" },
{ "cmp/hs", "t = (unsigned) B >= (unsigned) A ? 1 : 0" },
{ "cmp/pl", "t = A > 0 ? 1 : 0" },
{ "cmp/pz", "t = A >= 0 ? 1 : 0" },
{ "cmp/str", "t = A ^ B ? 1 : 0" },
{ "div1", "B /= A" },
{ "dmuls.l", "mac = B * A" },
{ "dmulu.l", "mac = (unsigned) B * (unsigned) A" },
{ "dt", "A--; t = !A ? 1 : 0" },
{ "exts.b", "B = (int) A" },
{ "extu.b", "B = (unsigned int) A" },
{ "exts.w", "B = (int) A" },
{ "extu.w", "B = (unsigned int) A" },
{ "fabs", "A = abs (A)" },
{ "fadd", "B += A" },
{ "fcmp/eq", "t = B == A ? 1 : 0" },
{ "fcmp/gt", "t = B > A ? 1 : 0" },
{ "fcnvds", "B = A" },
{ "fdiv", "B /= A" },
{ "flds", "B = A" },
{ "fldi0", "A = 0.0f" },
{ "fldi1", "A = 1.0f" },
{ "float", "B = A" },
{ "fmac", "C += A * B" },
{ "fmov", "B = A" },
{ "fmov.s", "B = A" },
{ "fmul", "B *= A" },
{ "fneg", "A = -A" },
{ "fsqrt", "A = sqrt (A)" },
{ "fsts", "B = A" },
{ "fsub", "B -= A" },
{ "ftrc", "B = trunc (A)" },
{ "ftrv", "B *= A" },
{ "jmp", "goto A" },
{ "jsr", "A ()" },
{ "ldr", "B = A" },
{ "ldr.l", "B = A" },
{ "lds", "B = A" },
{ "lds.l", "B = A" },
{ "mov", "B = A" },
{ "mov.b", "B = A" },
{ "mov.l", "B = A" },
{ "mov.w", "B = A" },
{ "movca.l", "B = A" },
{ "movt", "A = t" },
{ "muls.w", "macl = A * B" },
{ "mulu.w", "macl = (unsigned) A * (unsigned) B" },
{ "neg", "A = -A" },
{ "negc", "A = (-A) - t" },
{ "nop", "" },
{ "not", "A = !A" },
{ "or", "B |= A" },
{ "rotcl", "t = A & 0x80000000 ? 0 : 1; A = (A << 1) | t" },
{ "rotl", "A = (A << 1) | (A >> 31)" },
{ "rotr", "A = (A << 31) | (A >> 1)" },
{ "rte", "_rte ()" },
{ "rts", "return" },
{ "sets", "s = 1" },
{ "sett", "t = 1" },
{ "shad", "B = A >= 0 ? B << A : B >> (31 - A)" },
{ "shal", "A <<= 1" },
{ "shar", "A >>= 1" },
{ "shld", "B = A >= 0 ? B << A : B >> (31 - A)" },
{ "shll", "A <<= 1" },
{ "shll2", "A <<= 2" },
{ "shll8", "A <<= 8" },
{ "shll16", "A <<= 16" },
{ "shlr", "A >>= 1" },
{ "shlr2", "A >>= 2" },
{ "shlr8", "A >>= 8" },
{ "shlr16", "A >>= 16" },
{ "sleep", "_halt ()" },
{ "stc", "B = A" },
{ "stc.l", "B = A" },
{ "sts", "B = A" },
{ "sts.l", "B = A" },
{ "sub", "B -= A" },
{ "subc", "B -= A - t" },
{ "subv", "B -= A; t = int_underflow (B)" },
{ "swap.b", "swap_byte (B, A)" },
{ "swap.w", "swap_word (B, A)" },
{ "tas.b", "test_and_set (A)" },
{ "trapa", "trap (A)" },
{ "tst", "t = B & A ? 0 : 1" },
{ "xor", "B ^= A" },
{ "xor.b", "B ^= A" },
{ NULL }
};

View File

@ -14,84 +14,84 @@ static int replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{3, "add", "3 = 1 + 2"}, // add b12, b1, b9 -> b9 = b12 + b1
{3, "addu", "3 = 1 + 2"},
{3, "addw", "3 = 1 + 2"},
{3, "addaw", "3 = 1 + 2"},
{3, "addab", "3 = 1 + 2"},
{3, "addah", "3 = 1 + 2"},
{2, "addk", "2 += 1"}, // addk 123, b0 -> b0 += 123
{3, "sadd", "3 = 1 + 2"}, // sadd b12, b1, b9 -> b9 = b12 + b1
{3, "sadd2", "3 = 1 + 2"}, // sadd2 b12, b1, b9 -> b9 = b12 + b1
{3, "sub", "3 = 1 - 2"}, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "subu", "3 = 1 - 2"}, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "sub2", "3 = 1 - 2"}, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "subab", "3 = 1 - 2"}, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "ssub", "3 = 1 - 2"}, // ssub b12, b1, b9 -> b9 = b12 - b1
{2, "mv", "2 = 1"},
{2, "mvk", "2 = 1"}, // mvk 1, a0 -> a0 = 1
{2, "mvklh", "2 = (half) 1"},// mvk 1, a0 -> a0 = 1
{3, "band", "3 = 1 & 2"}, //
{1, "zero", "1 = zero"},
{3, "andn", "4 = 1 ~ 2"}, //
{3, "cmpgtu", "3 = 1 cmpgtu 2"}, //
{3, "cmpeq", "3 = 1 == 2"}, //
{3, "cmpge", "3 = 1 >= 2"}, //
{3, "cmplt", "3 = 1 <= 2"}, //
{3, "smpylh", "3 = 1 * 2"}, //
{3, "smpy", "3 = 1 * 2"}, //
{3, "smpyh", "3 = 1 * 2"}, //
{3, "mpyu4", "3 = 1 * 2"}, //
{3, "avg2", "3 = 1 avg 2"}, //
{3, "pack2", "3 = 1 pack 2"}, //
{3, "smpy", "3 = 1 * 2"}, //
{3, "max2", "3 = max(1, 2)"}, //
{3, "mpy", "3 = 1 * 2"}, //
{3, "mpy2", "3 = 1 * 2"}, //
{3, "mpyu", "3 = 1 * 2"}, //
{3, "mpyh", "3 = 1 * 2"}, //
{3, "mpyhl", "3 = 1 * 2"}, //
{3, "mpyhl", "3 = 1 * 2"}, //
{3, "mpylh", "3 = 1 * 2"}, //
{3, "mpysu", "3 = 1 * 2"}, //
{3, "smpyhl", "3 = 1 * 2"}, //
{3, "mpyhlu", "3 = 1 * 2"}, //
{3, "mpyhslu", "3 = 1 * 2"}, //
{3, "mpyluhs", "3 = 1 * 2"}, //
{3, "mpyhi", "3 = 1 * 2"}, //
{3, "mpyhu", "3 = 1 * 2"}, //
{3, "mpyhus", "3 = 1 * 2"}, //
{3, "mpyhsu", "3 = 1 * 2"}, //
{3, "mpyhul", "3 = 1 * 2"}, //
{3, "mpyhuls", "3 = 1 * 2"}, //
{3, "mpyhir", "3 = 1 * 2"}, //
{3, "mpyli", "3 = 1 * 2"}, //
{3, "mpylir", "3 = 1 * 2"}, //
{4, "ext", "4 = 2 ext 1 .. 3"}, //
{4, "extu", "4 = 2 ext 1 .. 3"}, //
{0, "reti", "ret"}, // reti -> ret
{2, "lddw", "2 = (word)1"}, // lddw
{2, "ldhu", "2 = (half)1"}, // ldhu
{2, "ldb", "2 = (byte)1"}, // ldb
{2, "ldbu", "2 = (byte)1"}, // ldbu
{2, "ldndw", "2 = 1"}, // ldbu
{2, "ldnw", "2 = 1"}, // ldbu
{2, "ldw", "2 = (word)1"}, // ldw
{2, "ldh", "2 = (half)1"}, // ldw
{2, "stb", "2 = (byte)1"}, // stb
{2, "stw", "2 = (word)1"}, // stw
{2, "sth", "2 = (half)1"}, // stw
{2, "stnw", "2 = (word)1"}, // stw
{2, "stdw", "2 = (half)1"}, // stw
{2, "stndw", "2 = (half)1"}, // stw
{3, "or", "3 = 2 | 1"},
{3, "shl", "3 = (2 & Oxffffff) << 1"},
{3, "shr", "3 = (2 & Oxffffff) << 1"},
{3, "shlmb", "3 = << 1"},
{4, "set", "4 = 2 .bitset 1 .. 2"}, // set a29,0x1a, 1, a19
{4, "clr", "4 = 2 .bitclear 1 .. 2"}, // clr a29,0x1a, 1, a19
{0, "invalid", ""},
{0, "nop", ""},
{3, "add", "3 = 1 + 2" }, // add b12, b1, b9 -> b9 = b12 + b1
{3, "addu", "3 = 1 + 2" },
{3, "addw", "3 = 1 + 2" },
{3, "addaw", "3 = 1 + 2" },
{3, "addab", "3 = 1 + 2" },
{3, "addah", "3 = 1 + 2" },
{2, "addk", "2 += 1" }, // addk 123, b0 -> b0 += 123
{3, "sadd", "3 = 1 + 2" }, // sadd b12, b1, b9 -> b9 = b12 + b1
{3, "sadd2", "3 = 1 + 2" }, // sadd2 b12, b1, b9 -> b9 = b12 + b1
{3, "sub", "3 = 1 - 2" }, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "subu", "3 = 1 - 2" }, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "sub2", "3 = 1 - 2" }, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "subab", "3 = 1 - 2" }, // sub b12, b1, b9 -> b9 = b12 - b1
{3, "ssub", "3 = 1 - 2" }, // ssub b12, b1, b9 -> b9 = b12 - b1
{2, "mv", "2 = 1" },
{2, "mvk", "2 = 1" }, // mvk 1, a0 -> a0 = 1
{2, "mvklh", "2 = (half) 1" },// mvk 1, a0 -> a0 = 1
{3, "band", "3 = 1 & 2" }, //
{1, "zero", "1 = zero" },
{3, "andn", "4 = 1 ~ 2" }, //
{3, "cmpgtu", "3 = 1 cmpgtu 2" }, //
{3, "cmpeq", "3 = 1 == 2" }, //
{3, "cmpge", "3 = 1 >= 2" }, //
{3, "cmplt", "3 = 1 <= 2" }, //
{3, "smpylh", "3 = 1 * 2" }, //
{3, "smpy", "3 = 1 * 2" }, //
{3, "smpyh", "3 = 1 * 2" }, //
{3, "mpyu4", "3 = 1 * 2" }, //
{3, "avg2", "3 = 1 avg 2" }, //
{3, "pack2", "3 = 1 pack 2" }, //
{3, "smpy", "3 = 1 * 2" }, //
{3, "max2", "3 = max(1, 2)" }, //
{3, "mpy", "3 = 1 * 2" }, //
{3, "mpy2", "3 = 1 * 2" }, //
{3, "mpyu", "3 = 1 * 2" }, //
{3, "mpyh", "3 = 1 * 2" }, //
{3, "mpyhl", "3 = 1 * 2" }, //
{3, "mpyhl", "3 = 1 * 2" }, //
{3, "mpylh", "3 = 1 * 2" }, //
{3, "mpysu", "3 = 1 * 2" }, //
{3, "smpyhl", "3 = 1 * 2" }, //
{3, "mpyhlu", "3 = 1 * 2" }, //
{3, "mpyhslu", "3 = 1 * 2" }, //
{3, "mpyluhs", "3 = 1 * 2" }, //
{3, "mpyhi", "3 = 1 * 2" }, //
{3, "mpyhu", "3 = 1 * 2" }, //
{3, "mpyhus", "3 = 1 * 2" }, //
{3, "mpyhsu", "3 = 1 * 2" }, //
{3, "mpyhul", "3 = 1 * 2" }, //
{3, "mpyhuls", "3 = 1 * 2" }, //
{3, "mpyhir", "3 = 1 * 2" }, //
{3, "mpyli", "3 = 1 * 2" }, //
{3, "mpylir", "3 = 1 * 2" }, //
{4, "ext", "4 = 2 ext 1 .. 3" }, //
{4, "extu", "4 = 2 ext 1 .. 3" }, //
{0, "reti", "ret" }, // reti -> ret
{2, "lddw", "2 = (word)1" }, // lddw
{2, "ldhu", "2 = (half)1" }, // ldhu
{2, "ldb", "2 = (byte)1" }, // ldb
{2, "ldbu", "2 = (byte)1" }, // ldbu
{2, "ldndw", "2 = 1" }, // ldbu
{2, "ldnw", "2 = 1" }, // ldbu
{2, "ldw", "2 = (word)1" }, // ldw
{2, "ldh", "2 = (half)1" }, // ldw
{2, "stb", "2 = (byte)1" }, // stb
{2, "stw", "2 = (word)1" }, // stw
{2, "sth", "2 = (half)1" }, // stw
{2, "stnw", "2 = (word)1" }, // stw
{2, "stdw", "2 = (half)1" }, // stw
{2, "stndw", "2 = (half)1" }, // stw
{3, "or", "3 = 2 | 1" },
{3, "shl", "3 = (2 & Oxffffff) << 1" },
{3, "shr", "3 = (2 & Oxffffff) << 1" },
{3, "shlmb", "3 = << 1" },
{4, "set", "4 = 2 .bitset 1 .. 2" }, // set a29,0x1a, 1, a19
{4, "clr", "4 = 2 .bitclear 1 .. 2" }, // clr a29,0x1a, 1, a19
{0, "invalid", "" },
{0, "nop", "" },
{0, NULL}
};
if (!newstr) {

View File

@ -14,55 +14,55 @@ static int replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{0, "ei", "enable-interrupts"},
{0, "di", "disable-interrupts"},
{0, "reti", "ret"},
{2, "ld.hu", "2 = 1"},
{1, "zxb", "1 = O"},
{1, "zxh", "1 = O"},
{1, "zxw", "1 = O"},
{2, "set1", "2 |= (I << 2)"},
{2, "clr1", "2 &= ~(I << 2)"},
{2, "sld.w", "2 = (word) 1"},
{2, "sld.h", "2 = (half) 1"},
{2, "sld.b", "2 = (byte) 1"},
{2, "ld.bu", "2 = 1"},
{2, "ld.w", "2 = (word) 1"},
{2, "ld.h", "2 = (half) 1"},
{2, "ld.b", "2 = (byte) 1"},
{2, "st.h", "2 = (half) 1"},
{2, "st.w", "2 = (word) 1"},
{2, "st.b", "2 = (byte) 1"},
{2, "sst.w", "2 = (word) 1"},
{2, "sst.h", "2 = (half) 1"},
{2, "sst.b", "2 = (byte) 1"},
{2, "stsr", "2 = 1"},
{2, "ldsr", "2 = 1"},
{2, "and", "3 = 2 & 1"},
{3, "andi", "3 = 2 & 1"},
{2, "add", "2 += 1"},
{3, "addi", "3 = 2 + 1"},
{2, "sub", "2 -= 1"},
{2, "divh", "2 /= 1"},
{3, "divh", "3 = 2 / 1"},
{2, "mulh", "2 *= 1"},
{3, "mul", "3 = 2 * 1"},
{3, "mulf.s", "3 = 2 * 1"},
{2, "shl", "2 <<= 1"},
{2, "shr", "2 >>= 1"},
{2, "xor", "2 ^= 1"},
{3, "xori", "3 = 1 ^ 2"},
{2, "tst", "2 == 1"},
{2, "tst1", "2 == 1"},
{1, "jr", "goto 1"},
{1, "jmp", "goto 1"},
{2, "cmp", "2 == 1"},
{4, "cmov", "4 == 1 ? 2 : 3"},
{2, "mov", "2 = 1"},
{3, "movhi", "3 = (1 << XX) + 2"},
{3, "movea", "3 = 1 & 2"},
{3, "ori", "3 = 1 | 2"},
{2, "jarl", "call 1 # 2"},
{0, "ei", "enable-interrupts" },
{0, "di", "disable-interrupts" },
{0, "reti", "ret" },
{2, "ld.hu", "2 = 1" },
{1, "zxb", "1 = O" },
{1, "zxh", "1 = O" },
{1, "zxw", "1 = O" },
{2, "set1", "2 |= (I << 2)" },
{2, "clr1", "2 &= ~(I << 2)" },
{2, "sld.w", "2 = (word) 1" },
{2, "sld.h", "2 = (half) 1" },
{2, "sld.b", "2 = (byte) 1" },
{2, "ld.bu", "2 = 1" },
{2, "ld.w", "2 = (word) 1" },
{2, "ld.h", "2 = (half) 1" },
{2, "ld.b", "2 = (byte) 1" },
{2, "st.h", "2 = (half) 1" },
{2, "st.w", "2 = (word) 1" },
{2, "st.b", "2 = (byte) 1" },
{2, "sst.w", "2 = (word) 1" },
{2, "sst.h", "2 = (half) 1" },
{2, "sst.b", "2 = (byte) 1" },
{2, "stsr", "2 = 1" },
{2, "ldsr", "2 = 1" },
{2, "and", "3 = 2 & 1" },
{3, "andi", "3 = 2 & 1" },
{2, "add", "2 += 1" },
{3, "addi", "3 = 2 + 1" },
{2, "sub", "2 -= 1" },
{2, "divh", "2 /= 1" },
{3, "divh", "3 = 2 / 1" },
{2, "mulh", "2 *= 1" },
{3, "mul", "3 = 2 * 1" },
{3, "mulf.s", "3 = 2 * 1" },
{2, "shl", "2 <<= 1" },
{2, "shr", "2 >>= 1" },
{2, "xor", "2 ^= 1" },
{3, "xori", "3 = 1 ^ 2" },
{2, "tst", "2 == 1" },
{2, "tst1", "2 == 1" },
{1, "jr", "goto 1" },
{1, "jmp", "goto 1" },
{2, "cmp", "2 == 1" },
{4, "cmov", "4 == 1 ? 2 : 3" },
{2, "mov", "2 = 1" },
{3, "movhi", "3 = (1 << XX) + 2" },
{3, "movea", "3 = 1 & 2" },
{3, "ori", "3 = 1 | 2" },
{2, "jarl", "call 1 # 2" },
{0, NULL}
};
if (!newstr) {

View File

@ -11,29 +11,29 @@ static int replace(int argc, const char *argv[], char *newstr) {
const char *op;
const char *str;
} ops[] = {
{ "adc", "1 = 1 + 2"},
{ "add", "1 = 1 + 2"},
{ "and", "1 = 1 & 2"},
{ "cpl", "1 = ~1"},
{ "ex", "swap(1, 2)"},
{ "in", "1 = [2]"},
{ "jp", "goto [1]"},
{ "jp", "goto 1"},
{ "jr", "goto +1"},
{ "ld", "1 = 2"},
{ "ldd", "1 = 2--"},
{ "neg", "1 = -1"},
{ "nop", ""},
{ "or", "1 = 1 | 2"},
{ "pop", "pop 1"},
{ "push", "push 1"},
{ "rr", "1 = 1 << 2"},
{ "sbc", "1 = 1 - 2"},
{ "sla", "1 = 1 << 2"},
{ "sra", "1 = 1 >> 2"},
{ "srl", "1 = 1 >> 2"},
{ "sub", "1 = 1 - 2"},
{ "xor", "1 = 1 ^ 2"},
{ "adc", "1 = 1 + 2" },
{ "add", "1 = 1 + 2" },
{ "and", "1 = 1 & 2" },
{ "cpl", "1 = ~1" },
{ "ex", "swap(1, 2)" },
{ "in", "1 = [2]" },
{ "jp", "goto [1]" },
{ "jp", "goto 1" },
{ "jr", "goto +1" },
{ "ld", "1 = 2" },
{ "ldd", "1 = 2--" },
{ "neg", "1 = -1" },
{ "nop", "" },
{ "or", "1 = 1 | 2" },
{ "pop", "pop 1" },
{ "push", "push 1" },
{ "rr", "1 = 1 << 2" },
{ "sbc", "1 = 1 - 2" },
{ "sla", "1 = 1 << 2" },
{ "sra", "1 = 1 >> 2" },
{ "srl", "1 = 1 >> 2" },
{ "sub", "1 = 1 - 2" },
{ "xor", "1 = 1 ^ 2" },
{ NULL }
};

2
libr/syscall/d/par.sh Executable file → Normal file
View File

@ -1,2 +1,2 @@
#!/bin/sh
grep '{ "'|tr '{",}' ' ' |sed -e 's,NULL,,g' | awk '{ print $1"="$2","$3","$4","$5}'
grep '{ "'|tr '{ ",}' ' ' |sed -e 's,NULL,,g' | awk '{ print $1"="$2","$3","$4","$5}'

View File

@ -11,67 +11,67 @@ RSyscallPort sysport_x86[] = {
RSyscallPort sysport_avr[] = {
{ 0x3f, "SREG: flags" },
{ 0x3e, "SPH: Stack higher bits SP8-SP10" },
{ 0x3d, "SPL: Stack lower bits SP0-SP7"},
{ 0x3c, "OCR0: Timer/Counter0 Output Compare Register."},
{ 0x3d, "SPL: Stack lower bits SP0-SP7" },
{ 0x3c, "OCR0: Timer/Counter0 Output Compare Register." },
{ 0x3b, "GICR: General Interrupt Control Register" },
{ 0x3a, "GIFR: General Interrupt Flag Register"},
{ 0x39, "TIMSK: Timer/Counter Interrupt Mask"},
{ 0x38, "TIFR: Timer/Counter Interrupt Flag Register"},
{ 0x37, "SPMCR: Store Program Memory Control Register"},
{ 0x36, "TWCR: I2C (Two-wire) Control Register"},
{ 0x35, "MCUCR: MCU (Power Management) Control Register"},
{ 0x3a, "GIFR: General Interrupt Flag Register" },
{ 0x39, "TIMSK: Timer/Counter Interrupt Mask" },
{ 0x38, "TIFR: Timer/Counter Interrupt Flag Register" },
{ 0x37, "SPMCR: Store Program Memory Control Register" },
{ 0x36, "TWCR: I2C (Two-wire) Control Register" },
{ 0x35, "MCUCR: MCU (Power Management) Control Register" },
{ 0x34, "MCUCSR: MCU Control and Status Register. Watchdog, Brown-out, Power-on..." },
{ 0x33, "TCCR0: Timer/Counter Control Register 0"},
{ 0x32, "TCNT0: Timer/Counter Register 0 (8 bits)"},
{ 0x31, "OSCCAL: (Internal) Oscillator Calibration Register"},
{ 0x30, "SFIOR: Special Function IO Register"},
{ 0x2f, "TCCR1A: Timer/Counter Control Register 1A (16 bits). Used for (fast) PWM."},
{ 0x2e, "TCCR1B: Timer/Counter Control Register 1B (16 bits). PWM mode select."},
{ 0x2d, "TCNT1H: Timer/Counter1 Register High byte."},
{ 0x2c, "TCNT1L: Timer/Counter1 Register Low byte."},
{ 0x2b, "OCR1AH: Timer/Counter1 Output Compare Register A High byte."},
{ 0x2a, "OCR1AL: Timer/Counter1 Output Compare Register A Low byte."},
{ 0x29, "OCR1BH: Timer/Counter1 Output Compare Register B High byte."},
{ 0x28, "OCR1BL: Timer/Counter1 Output Compare Register B Low byte."},
{ 0x27, "ICR1H: Timer/Counter1 Input Capture Register High byte."},
{ 0x26, "ICR1L: Timer/Counter1 Input Capture Register Low byte."},
{ 0x25, "TCCR2: Timer/Counter2 Control Register (8 bits)."},
{ 0x24, "TCNT2: Timer/Counter2 (8 bits)."},
{ 0x23, "OCR2: Timer/Counter2 Output Compare Register."},
{ 0x22, "ASSR: Asynchronous Operation of the Timer/Counter."},
{ 0x21, "WDTCR: Watchdog Timer Control Register."},
{ 0x20, "UBRRH, UCSRC: USART Baud Rate Registers, High byte and Control. A.k.a setting serial port speed."},
{ 0x1f, "EEARH: EEPROM Address Register High byte."},
{ 0x1e, "EEARL: EEPROM Address Register Low byte."},
{ 0x1d, "EEDR: EEPROM Data Register."},
{ 0x1c, "EECR: EEPROM Control Register."},
{ 0x1b, "PORTA: Output pins/pullups address for port A."},
{ 0x1a, "DDRA: Data Direction Register for Port A."},
{ 0x19, "PINA: Input Pins Address for Port A."},
{ 0x18, "PORTB: Output pins/pullups address for port B."},
{ 0x17, "DDRB: Data Direction Register for Port B."},
{ 0x16, "PINB: Input Pins Address for Port B."},
{ 0x15, "PORTC: Output pins/pullups address for port C."},
{ 0x14, "DDRC: Data Direction Register for Port C."},
{ 0x13, "PINC: Input Pins Address for Port C."},
{ 0x12, "PORTD: Output pins/pullups address for port D."},
{ 0x11, "DDRD: Data Direction Register for Port D."},
{ 0x10, "PIND: Input Pins Address for Port D."},
{ 0x0f, "SPDR: SPI Data Register."},
{ 0x0e, "SPSR: SPI Status Register."},
{ 0x0d, "SPCR: SPI Control Register."},
{ 0x0c, "UDR: USART I/O Data Register."},
{ 0x0b, "UCSRA: USART Control and Status Register A."},
{ 0x0a, "UCSRB: USART Control and Status Register B."},
{ 0x09, "UBRRL: USART Baud Rate Registers Low byte. A.k.a setting serial port speed."},
{ 0x08, "ACSR: Analog Comparator Control and Status Register."},
{ 0x07, "ADMUX: ADC Multiplexer Selection Register."},
{ 0x06, "ADCSRA: ADC Control and Status Register A."},
{ 0x05, "ADCH: ADC Data Register High byte."},
{ 0x04, "ADCL: ADC Data Register Low byte."},
{ 0x03, "TWDR: I2C (Two-wire) Serial Interface Data Register."},
{ 0x02, "TWAR: I2C (Two-wire) Serial Interface (Slave) Address Register."},
{ 0x01, "TWSR: I2C (Two-wire) Serial Interface Status Register."},
{ 0x00, "TWBR: I2C (Two-wire) Serial Interface Bit Rate Register."},
{ 0x33, "TCCR0: Timer/Counter Control Register 0" },
{ 0x32, "TCNT0: Timer/Counter Register 0 (8 bits)" },
{ 0x31, "OSCCAL: (Internal) Oscillator Calibration Register" },
{ 0x30, "SFIOR: Special Function IO Register" },
{ 0x2f, "TCCR1A: Timer/Counter Control Register 1A (16 bits). Used for (fast) PWM." },
{ 0x2e, "TCCR1B: Timer/Counter Control Register 1B (16 bits). PWM mode select." },
{ 0x2d, "TCNT1H: Timer/Counter1 Register High byte." },
{ 0x2c, "TCNT1L: Timer/Counter1 Register Low byte." },
{ 0x2b, "OCR1AH: Timer/Counter1 Output Compare Register A High byte." },
{ 0x2a, "OCR1AL: Timer/Counter1 Output Compare Register A Low byte." },
{ 0x29, "OCR1BH: Timer/Counter1 Output Compare Register B High byte." },
{ 0x28, "OCR1BL: Timer/Counter1 Output Compare Register B Low byte." },
{ 0x27, "ICR1H: Timer/Counter1 Input Capture Register High byte." },
{ 0x26, "ICR1L: Timer/Counter1 Input Capture Register Low byte." },
{ 0x25, "TCCR2: Timer/Counter2 Control Register (8 bits)." },
{ 0x24, "TCNT2: Timer/Counter2 (8 bits)." },
{ 0x23, "OCR2: Timer/Counter2 Output Compare Register." },
{ 0x22, "ASSR: Asynchronous Operation of the Timer/Counter." },
{ 0x21, "WDTCR: Watchdog Timer Control Register." },
{ 0x20, "UBRRH, UCSRC: USART Baud Rate Registers, High byte and Control. A.k.a setting serial port speed." },
{ 0x1f, "EEARH: EEPROM Address Register High byte." },
{ 0x1e, "EEARL: EEPROM Address Register Low byte." },
{ 0x1d, "EEDR: EEPROM Data Register." },
{ 0x1c, "EECR: EEPROM Control Register." },
{ 0x1b, "PORTA: Output pins/pullups address for port A." },
{ 0x1a, "DDRA: Data Direction Register for Port A." },
{ 0x19, "PINA: Input Pins Address for Port A." },
{ 0x18, "PORTB: Output pins/pullups address for port B." },
{ 0x17, "DDRB: Data Direction Register for Port B." },
{ 0x16, "PINB: Input Pins Address for Port B." },
{ 0x15, "PORTC: Output pins/pullups address for port C." },
{ 0x14, "DDRC: Data Direction Register for Port C." },
{ 0x13, "PINC: Input Pins Address for Port C." },
{ 0x12, "PORTD: Output pins/pullups address for port D." },
{ 0x11, "DDRD: Data Direction Register for Port D." },
{ 0x10, "PIND: Input Pins Address for Port D." },
{ 0x0f, "SPDR: SPI Data Register." },
{ 0x0e, "SPSR: SPI Status Register." },
{ 0x0d, "SPCR: SPI Control Register." },
{ 0x0c, "UDR: USART I/O Data Register." },
{ 0x0b, "UCSRA: USART Control and Status Register A." },
{ 0x0a, "UCSRB: USART Control and Status Register B." },
{ 0x09, "UBRRL: USART Baud Rate Registers Low byte. A.k.a setting serial port speed." },
{ 0x08, "ACSR: Analog Comparator Control and Status Register." },
{ 0x07, "ADMUX: ADC Multiplexer Selection Register." },
{ 0x06, "ADCSRA: ADC Control and Status Register A." },
{ 0x05, "ADCH: ADC Data Register High byte." },
{ 0x04, "ADCL: ADC Data Register Low byte." },
{ 0x03, "TWDR: I2C (Two-wire) Serial Interface Data Register." },
{ 0x02, "TWAR: I2C (Two-wire) Serial Interface (Slave) Address Register." },
{ 0x01, "TWSR: I2C (Two-wire) Serial Interface Status Register." },
{ 0x00, "TWBR: I2C (Two-wire) Serial Interface Bit Rate Register." },
{ 0, NULL }
};

File diff suppressed because it is too large Load Diff

View File

@ -668,7 +668,7 @@ static void r_print_format_hex(const RPrint* p, int endian, int mode, const char
if (elem > -1) {
elem--;
}
i +=4;
i += 4;
}
p->cb_printf (" ]");
}
@ -722,7 +722,7 @@ static void r_print_format_int(const RPrint* p, int endian, int mode, const char
if (size == -1) {
p->cb_printf ("%"PFMT64d, addr);
} else {
p->cb_printf ("[ ");
p->cb_printf ("[");
while (size--) {
updateAddr (buf + i, size - i, endian, &addr, NULL);
if (elem == -1 || elem == 0) {
@ -955,7 +955,7 @@ static int r_print_format_10bytes(const RPrint* p, int mode, const char *setval,
for (; j < 10; j++) {
p->cb_printf (", %d", buf[j]);
}
p->cb_printf ("]");
p->cb_printf (" ]");
return 0;
}
return 0;
@ -998,7 +998,7 @@ static int r_print_format_hexpairs(const RPrint* p, int endian, int mode, const
for (; j < 10; j++) {
p->cb_printf (", %d", buf[j]);
}
p->cb_printf ("]");
p->cb_printf (" ]");
if (MUSTSEEJSON) {
p->cb_printf ("}");
}

View File

@ -1,14 +1,15 @@
/* radare - LGPL - Copyright 2007-2020 - pancake, ret2libc */
#include <r_core.h>
#include <r_util/r_graph_drawable.h>
R_API void r_graph_free_node_info(void *ptr) {
if (!ptr) {
return;
if (ptr) {
RGraphNodeInfo *info = ptr;
free (info->body);
free (info->title);
free (info);
}
RGraphNodeInfo *info = ptr;
free (info->body);
free (info->title);
free (info);
}
R_API RGraphNodeInfo *r_graph_create_node_info(const char *title, const char *body, ut64 offset) {

View File

@ -1650,7 +1650,7 @@ R_API void r_print_c(RPrint *p, const ut8 *str, int len) {
p->cb_printf ("\n");
}
}
p->cb_printf (" };\n");
p->cb_printf ("};\n");
}
// HACK :D

View File

@ -293,7 +293,7 @@ R_API void r_print_code(RPrint *p, ut64 addr, const ut8 *buf, int len, char lang
p->cb_printf (" %02x", buf[i] & 0xff);
r_print_cursor (p, i, 1, 0);
}
p->cb_printf (" }\n");
p->cb_printf ("}\n");
break;
case 'j': // "pcj"
p->cb_printf ("[");

View File

@ -207,7 +207,7 @@ static char *decode_buffer(PJ *pj, const ut8* start, const ut8* end, int padcnt,
if (mode == 'j' || mode == 'J') {
pj_o (pj);
} else {
r_strbuf_append (sb, " {\n");
r_strbuf_append (sb, "{\n");
}
padcnt++;
break;

View File

@ -994,7 +994,7 @@ static void setModuleBounded(ut8 qrcode[], int x, int y, bool isBlack) {
static char qrcode_utf8_expansions[16][7] = { " ","","","▀▀",
"","","▄▀","█▀",
"","▀▄","","▀█",
"▄▄","█▄","▄█","██"};
"▄▄","█▄","▄█","██" };
R_API char *r_qrcode_gen(const ut8 *text, int len, bool utf8, bool inverted) {
uint8_t qrcode[qrcodegen_BUFFER_LEN_MAX] = {

View File

@ -41,17 +41,17 @@ static struct cclass {
const char *chars;
const char *multis;
} cclasses[] = {
{ "alnum", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", ""},
{ "alpha", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", ""},
{ "blank", " \t", ""},
{ "cntrl", "\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\177", ""},
{ "digit", "0123456789", ""},
{ "graph", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ""},
{ "lower", "abcdefghijklmnopqrstuvwxyz", ""},
{ "print", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ", ""},
{ "punct", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ""},
{ "space", "\t\n\v\f\r ", ""},
{ "upper", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", ""},
{ "xdigit", "0123456789ABCDEFabcdef", ""},
{ "alnum", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "" },
{ "alpha", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "" },
{ "blank", " \t", "" },
{ "cntrl", "\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\177", "" },
{ "digit", "0123456789", "" },
{ "graph", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", "" },
{ "lower", "abcdefghijklmnopqrstuvwxyz", "" },
{ "print", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ", "" },
{ "punct", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", "" },
{ "space", "\t\n\v\f\r ", "" },
{ "upper", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "" },
{ "xdigit", "0123456789ABCDEFabcdef", "" },
{ NULL, NULL, "" }
};

View File

@ -9,441 +9,441 @@ typedef struct {
// seven segment ascii-art text
static const SevenSegments ss_lc[] = {
{ '0', {" __ ",
{ '0', { " __ ",
"| /|",
"|/_|"}
"|/_|" }
},
{ '1', {" ",
{ '1', { " ",
" | ",
" | "}
" | " }
},
{ '2', {" __ ",
{ '2', { " __ ",
" __|",
"|__ "}
"|__ " }
},
{ '3', {" __ ",
{ '3', { " __ ",
" __|",
" __|"}
" __|" }
},
{ '4', {" ",
{ '4', { " ",
"|__|",
" |"}
" |" }
},
{ '5', {" __ ",
{ '5', { " __ ",
"|__ ",
" __|"}
" __|" }
},
{ '6', {" __ ",
{ '6', { " __ ",
"|__ ",
"|__|"}
"|__|" }
},
{ '7', {" __ ",
{ '7', { " __ ",
" |",
" |"}
" |" }
},
{ '8', {" __ ",
{ '8', { " __ ",
"|__|",
"|__|"}
"|__|" }
},
{ '9', {" __ ",
{ '9', { " __ ",
"|__|",
" __|"}
" __|" }
},
{ '$', {" __ ",
{ '$', { " __ ",
"||_ ",
" _||"}
" _||" }
},
{ '_', {" ",
{ '_', { " ",
" ",
" __ "}
" __ " }
},
{ '.', {" ",
{ '.', { " ",
" ",
" _ "}
" _ " }
},
{ ',', {" ",
{ ',', { " ",
" ",
" _ "}
" _ " }
},
{ '/', {" ",
{ '/', { " ",
" / ",
" / "}
" / " }
},
{ '%', {" ",
{ '%', { " ",
" O/ ",
" /O "}
" /O " }
},
{ '=', {" ",
{ '=', { " ",
" __ ",
" __ "}
" __ " }
},
{ '"', {" __ ",
{ '"', { " __ ",
" ",
" "}
" " }
},
{ '?', {" __ ",
{ '?', { " __ ",
" _|",
" _\\ "}
" _\\ " }
},
{ '+', {" ",
{ '+', { " ",
" _|_",
" | "}
" | " }
},
{ '-', {" ",
{ '-', { " ",
" __ ",
" "}
" " }
},
{ '*', {" ",
{ '*', { " ",
"_\\/_",
" /\\ "}
" /\\ " }
},
{ '(', {" _ ",
{ '(', { " _ ",
"| ",
"|_ "}
"|_ " }
},
{ ')', {" _ ",
{ ')', { " _ ",
" |",
" _|"}
" _|" }
},
{ '[', {" _ ",
{ '[', { " _ ",
"| ",
"|_ "}
"|_ " }
},
{ ']', {" _ ",
{ ']', { " _ ",
" |",
" _|"}
" _|" }
},
{ '>', {" ",
{ '>', { " ",
" \\ ",
" / "}
" / " }
},
{ ' ', {" ",
{ ' ', { " ",
" ",
" "}
" " }
},
{ 'a', {" _ ",
{ 'a', { " _ ",
" _|",
" /_|"}
" /_|" }
},
{ 'b', {" ",
{ 'b', { " ",
"|_ ",
"|_\\ "}
"|_\\ " }
},
{ 'c', {" ",
{ 'c', { " ",
" __ ",
"|__ "}
"|__ " }
},
{ 'd', {" ",
{ 'd', { " ",
" _|",
" /_|"}
" /_|" }
},
{ 'e', {" _ ",
{ 'e', { " _ ",
"|_\\ ",
"|__ "}
"|__ " }
},
{ 'f', {" __ ",
{ 'f', { " __ ",
"|_ ",
"| "}
"| " }
},
{ 'g', {" __ ",
{ 'g', { " __ ",
" \\_|",
"|__|"}
"|__|" }
},
{ 'h', {" ",
{ 'h', { " ",
"|_ ",
"| \\ "}
"| \\ " }
},
{ 'i', {" ",
{ 'i', { " ",
" _ ",
" | "}
" | " }
},
{ 'j', {" __ ",
{ 'j', { " __ ",
" | ",
"|_| "}
"|_| " }
},
{ 'k', {" ",
{ 'k', { " ",
"|_/ ",
"| \\ "}
"| \\ " }
},
{ 'l', {" ",
{ 'l', { " ",
" ",
"|___"}
"|___" }
},
{ 'm', {" ",
{ 'm', { " ",
" ",
"|\\/|"}
"|\\/|" }
},
{ 'n', {" ",
{ 'n', { " ",
" __ ",
"| |"}
"| |" }
},
{ 'o', {" ",
{ 'o', { " ",
" __ ",
"|__|"}
"|__|" }
},
{ 'p', {" __ ",
{ 'p', { " __ ",
"|__|",
"| "}
"| " }
},
{ 'q', {" __ ",
{ 'q', { " __ ",
"|__|",
" \\ "}
" \\ " }
},
{ 'r', {" __ ",
{ 'r', { " __ ",
"|__|",
"| \\ "}
"| \\ " }
},
{ 's', {" ",
{ 's', { " ",
" _ ",
" _\\"}
" _\\" }
},
{ 't', {" ",
{ 't', { " ",
"_|_ ",
" |__"}
" |__" }
},
{ 'u', {" ",
{ 'u', { " ",
" ",
"|__|"}
"|__|" }
},
{ 'v', {" ",
{ 'v', { " ",
"| |",
" \\/ "}
" \\/ " }
},
{ 'w', {" ",
{ 'w', { " ",
" ",
"|/\\|"}
"|/\\|" }
},
{ 'x', {" ",
{ 'x', { " ",
" \\/ ",
" /\\ "}
" /\\ " }
},
{ 'y', {" ",
{ 'y', { " ",
" \\_|",
" _|"}
" _|" }
},
{ 'z', {" ",
{ 'z', { " ",
" _ ",
" /_ "}
" /_ " }
},
{ '\0', {0}}
};
static const SevenSegments ss[] = {
{ '0', {" __ ",
{ '0', { " __ ",
"| |",
"|__|"}
"|__|" }
},
{ '1', {" ",
{ '1', { " ",
" | ",
" | "}
" | " }
},
{ '2', {" __ ",
{ '2', { " __ ",
" __|",
"|__ "}
"|__ " }
},
{ '3', {" __ ",
{ '3', { " __ ",
" __|",
" __|"}
" __|" }
},
{ '4', {" ",
{ '4', { " ",
"|__|",
" |"}
" |" }
},
{ '5', {" __ ",
{ '5', { " __ ",
"|__ ",
" __|"}
" __|" }
},
{ '6', {" __ ",
{ '6', { " __ ",
"|__ ",
"|__|"}
"|__|" }
},
{ '7', {" __ ",
{ '7', { " __ ",
" |",
" |"}
" |" }
},
{ '8', {" __ ",
{ '8', { " __ ",
"|__|",
"|__|"}
"|__|" }
},
{ '9', {" __ ",
{ '9', { " __ ",
"|__|",
" __|"}
" __|" }
},
{ '$', {" __ ",
{ '$', { " __ ",
"||_ ",
" _||"}
" _||" }
},
{ '_', {" ",
{ '_', { " ",
" ",
" __ "}
" __ " }
},
{ '.', {" ",
{ '.', { " ",
" ",
" _ "}
" _ " }
},
{ ',', {" ",
{ ',', { " ",
" ",
" _ "}
" _ " }
},
{ '/', {" ",
{ '/', { " ",
" / ",
" / "}
" / " }
},
{ '%', {" ",
{ '%', { " ",
" O/ ",
" /O "}
" /O " }
},
{ '=', {" ",
{ '=', { " ",
" __ ",
" __ "}
" __ " }
},
{ '"', {" __ ",
{ '"', { " __ ",
" ",
" "}
" " }
},
{ '?', {" __ ",
{ '?', { " __ ",
" _|",
" _\\ "}
" _\\ " }
},
{ '+', {" ",
{ '+', { " ",
" _|_",
" | "}
" | " }
},
{ '-', {" ",
{ '-', { " ",
" __ ",
" "}
" " }
},
{ '*', {" ",
{ '*', { " ",
"_\\/_",
" /\\ "}
" /\\ " }
},
{ '(', {" _ ",
{ '(', { " _ ",
"| ",
"|_ "}
"|_ " }
},
{ ')', {" _ ",
{ ')', { " _ ",
" |",
" _|"}
" _|" }
},
{ '[', {" _ ",
{ '[', { " _ ",
"| ",
"|_ "}
"|_ " }
},
{ ']', {" _ ",
{ ']', { " _ ",
" |",
" _|"}
" _|" }
},
{ '>', {" ",
{ '>', { " ",
" \\ ",
" / "}
" / " }
},
{ ' ', {" ",
{ ' ', { " ",
" ",
" "}
" " }
},
{ 'a', {" __ ",
{ 'a', { " __ ",
"|__|",
"| |"}
"| |" }
},
{ 'b', {" ",
{ 'b', { " ",
"|__ ",
"|__|"}
"|__|" }
},
{ 'c', {" ",
{ 'c', { " ",
" __ ",
"|__ "}
"|__ " }
},
{ 'd', {" ",
{ 'd', { " ",
" __|",
"|__|"}
"|__|" }
},
{ 'e', {" __ ",
{ 'e', { " __ ",
"|_ ",
"|__ "}
"|__ " }
},
{ 'f', {" __ ",
{ 'f', { " __ ",
"|_ ",
"| "}
"| " }
},
{ 'g', {" __ ",
{ 'g', { " __ ",
"| _ ",
"|__|"}
"|__|" }
},
{ 'h', {" ",
{ 'h', { " ",
"|__|",
"| |"}
"| |" }
},
{ 'i', {" ___",
{ 'i', { " ___",
" | ",
" _|_"}
" _|_" }
},
{ 'j', {" __ ",
{ 'j', { " __ ",
" | ",
"|_| "}
"|_| " }
},
{ 'k', {" ",
{ 'k', { " ",
"|_/ ",
"| \\ "}
"| \\ " }
},
{ 'l', {" ",
{ 'l', { " ",
"| ",
"|__ "}
"|__ " }
},
{ 'm', {" ",
{ 'm', { " ",
"|\\/|",
"| |"}
"| |" }
},
{ 'n', {" ",
{ 'n', { " ",
"|\\ |",
"| \\|"}
"| \\|" }
},
{ 'o', {" __ ",
{ 'o', { " __ ",
"| |",
"|__|"}
"|__|" }
},
{ 'p', {" __ ",
{ 'p', { " __ ",
"|__|",
"| "}
"| " }
},
{ 'q', {" __ ",
{ 'q', { " __ ",
"|__|",
" \\ "}
" \\ " }
},
{ 'r', {" __ ",
{ 'r', { " __ ",
"|__|",
"| \\ "}
"| \\ " }
},
{ 's', {" __ ",
{ 's', { " __ ",
"|__ ",
" __\\"}
" __\\" }
},
{ 't', {" ",
{ 't', { " ",
"_|_ ",
" |_ "}
" |_ " }
},
{ 'u', {" ",
{ 'u', { " ",
" ",
"|__|"}
"|__|" }
},
{ 'v', {" ",
{ 'v', { " ",
"| |",
" \\/ "}
" \\/ " }
},
{ 'w', {" ",
{ 'w', { " ",
"| |",
"|/\\|"}
"|/\\|" }
},
{ 'x', {" ",
{ 'x', { " ",
" \\/ ",
" /\\ "}
" /\\ " }
},
{ 'y', {" ",
{ 'y', { " ",
"|__|",
" __|"}
" __|" }
},
{ 'z', {" __ ",
{ 'z', { " __ ",
" / ",
" /_ "}
" /_ " }
},
{ '\0', {0}}
};

View File

@ -117,28 +117,28 @@ R_LIB_VERSION (r_util);
#endif
static const struct {const char* name; ut64 bit;} arch_bit_array[] = {
{"x86", R_SYS_ARCH_X86},
{"arm", R_SYS_ARCH_ARM},
{"ppc", R_SYS_ARCH_PPC},
{"m68k", R_SYS_ARCH_M68K},
{"java", R_SYS_ARCH_JAVA},
{"mips", R_SYS_ARCH_MIPS},
{"sparc", R_SYS_ARCH_SPARC},
{"xap", R_SYS_ARCH_XAP},
{"tms320", R_SYS_ARCH_TMS320},
{"msil", R_SYS_ARCH_MSIL},
{"objd", R_SYS_ARCH_OBJD},
{"bf", R_SYS_ARCH_BF},
{"sh", R_SYS_ARCH_SH},
{"avr", R_SYS_ARCH_AVR},
{"dalvik", R_SYS_ARCH_DALVIK},
{"z80", R_SYS_ARCH_Z80},
{"arc", R_SYS_ARCH_ARC},
{"i8080", R_SYS_ARCH_I8080},
{"rar", R_SYS_ARCH_RAR},
{"lm32", R_SYS_ARCH_LM32},
{"v850", R_SYS_ARCH_V850},
{"bpf", R_SYS_ARCH_BPF},
{ "x86", R_SYS_ARCH_X86},
{ "arm", R_SYS_ARCH_ARM},
{ "ppc", R_SYS_ARCH_PPC},
{ "m68k", R_SYS_ARCH_M68K},
{ "java", R_SYS_ARCH_JAVA},
{ "mips", R_SYS_ARCH_MIPS},
{ "sparc", R_SYS_ARCH_SPARC},
{ "xap", R_SYS_ARCH_XAP},
{ "tms320", R_SYS_ARCH_TMS320},
{ "msil", R_SYS_ARCH_MSIL},
{ "objd", R_SYS_ARCH_OBJD},
{ "bf", R_SYS_ARCH_BF},
{ "sh", R_SYS_ARCH_SH},
{ "avr", R_SYS_ARCH_AVR},
{ "dalvik", R_SYS_ARCH_DALVIK},
{ "z80", R_SYS_ARCH_Z80},
{ "arc", R_SYS_ARCH_ARC},
{ "i8080", R_SYS_ARCH_I8080},
{ "rar", R_SYS_ARCH_RAR},
{ "lm32", R_SYS_ARCH_LM32},
{ "v850", R_SYS_ARCH_V850},
{ "bpf", R_SYS_ARCH_BPF},
{NULL, 0}
};
@ -833,7 +833,13 @@ R_API int r_sys_cmdbg(const char *str) {
return pid;
}
int ret = r_sandbox_system (str, 0);
eprintf ("{exit: %d, pid: %d, cmd: \"%s\"}", ret, pid, str);
PJ *pj = pj_new ();
pj_kn (pj, "exit", ret);
pj_kn (pj, "pid", pid);
pj_ks (pj, "cmd", str);
char *s = pj_drain (pj);
eprintf ("%s\n", s);
free (s);
exit (0);
return -1;
#else

View File

@ -1,6 +1,7 @@
/* Apache 2.0 - Copyright 2007-2022 - pancake and dso
class.c rewrite: Adam Pridgen <dso@rice.edu || adam.pridgen@thecoverofnight.com>
*/
/* Apache 2.0 - Copyright 2007-2022 - pancake and dso */
/* class.c rewrite: Adam Pridgen <dso@rice.edu || adam.pridgen@thecoverofnight.com> */
#define R_LOG_ORIGIN "java.class"
#include <r_bin.h>
#include <math.h>
#include "class.h"
@ -15,12 +16,16 @@
#define MAX_CPITEMS 16
static const ut16 R_BIN_JAVA_ELEMENT_VALUE_METAS_SZ = 14;
static const ut32 RBIN_JAVA_ATTRS_METAS_SZ = 20;
static R_TH_LOCAL bool R_BIN_JAVA_NULL_TYPE_INITTED = false;
static R_TH_LOCAL RBinJavaObj *R_BIN_JAVA_GLOBAL_BIN = NULL;
R_API char *U(r_bin_java_unmangle_method)(const char *flags, const char *name, const char *params, const char *r_value);
R_API int r_bin_java_is_fm_type_private(RBinJavaField *fm_type);
R_API int r_bin_java_is_fm_type_protected(RBinJavaField *fm_type);
R_API ut32 U(r_bin_java_swap_uint)(ut32 x);
// R_API const char * r_bin_java_get_this_class_name(RBinJavaObj *bin);
R_API void U(add_cp_objs_to_sdb)(RBinJavaObj * bin);
R_API void U(add_field_infos_to_sdb)(RBinJavaObj * bin);
R_API void U(add_method_infos_to_sdb)(RBinJavaObj * bin);
@ -381,9 +386,6 @@ static RBinJavaRefMetas R_BIN_JAVA_REF_METAS[] = {
{ "NewInvokeSpecial", R_BIN_JAVA_REF_NEWINVOKESPECIAL },
{ "InvokeInterface", R_BIN_JAVA_REF_INVOKEINTERFACE }
};
static const ut16 R_BIN_JAVA_ELEMENT_VALUE_METAS_SZ = 14;
static R_TH_LOCAL bool R_BIN_JAVA_NULL_TYPE_INITTED = false;
static R_TH_LOCAL RBinJavaObj *R_BIN_JAVA_GLOBAL_BIN = NULL;
static RBinJavaElementValueMetas R_BIN_JAVA_ELEMENT_VALUE_METAS[] = {
{ "Byte", R_BIN_JAVA_EV_TAG_BYTE, NULL },
@ -492,8 +494,6 @@ static RBinJavaAttrInfoObjectAllocs RBIN_JAVA_ATTRS_ALLOCS[] = {
{ r_bin_java_synthetic_attr_new, r_bin_java_synthetic_attr_free, r_bin_java_print_synthetic_attr_summary, r_bin_java_synthetic_attr_calc_size },
{ r_bin_java_unknown_attr_new, r_bin_java_unknown_attr_free, r_bin_java_print_unknown_attr_summary, r_bin_java_unknown_attr_calc_size }
};
// R_API ut32 RBIN_JAVA_ATTRS_METAS_SZ = 21;
static ut32 RBIN_JAVA_ATTRS_METAS_SZ = 20;
static RBinJavaAttrMetas RBIN_JAVA_ATTRS_METAS[] = {
{ "AnnotationDefault", R_BIN_JAVA_ATTR_TYPE_ANNOTATION_DEFAULT_ATTR, &RBIN_JAVA_ATTRS_ALLOCS[0] },
{ "BootstrapMethods", R_BIN_JAVA_ATTR_TYPE_BOOTSTRAP_METHODS_ATTR, &RBIN_JAVA_ATTRS_ALLOCS[1] },
@ -1644,80 +1644,59 @@ R_API RBinJavaInterfaceInfo *r_bin_java_read_next_interface_item(RBinJavaObj *bi
}
return ifobj;
}
// R_API void addrow (RBinJavaObj *bin, int addr, int line) {
// int n = bin->lines.count++;
//// XXX. possible memleak
// bin->lines.addr = realloc (bin->lines.addr, sizeof (int)*n+1);
// bin->lines.addr[n] = addr;
// bin->lines.line = realloc (bin->lines.line, sizeof (int)*n+1);
// bin->lines.line[n] = line;
// }
// R_API struct r_bin_java_cp_item_t* r_bin_java_get_item_from_cp_CP(RBinJavaObj *bin, int i) {
// return (i<0||i>bin->cf.cp_count)? &cp_null_item: &bin->cp_items[i];
// }
R_API char *r_bin_java_get_utf8_from_bin_cp_list(RBinJavaObj *bin, ut64 idx) {
r_return_val_if_fail (bin, NULL);
/*
Search through the Constant Pool list for the given CP Index.
If the idx not found by directly going to the list index,
the list will be walked and then the IDX will be checked.
rvalue: new char* for caller to free.
*/
if (bin == NULL) {
return NULL;
}
return r_bin_java_get_utf8_from_cp_item_list (bin->cp_list, idx);
}
R_API ut32 r_bin_java_get_utf8_len_from_bin_cp_list(RBinJavaObj *bin, ut64 idx) {
r_return_val_if_fail (bin, 0);
/*
Search through the Constant Pool list for the given CP Index.
If the idx not found by directly going to the list index,
the list will be walked and then the IDX will be checked.
rvalue: new char* for caller to free.
*/
if (bin == NULL) {
return 0;
}
return r_bin_java_get_utf8_len_from_cp_item_list (bin->cp_list, idx);
}
R_API char *r_bin_java_get_name_from_bin_cp_list(RBinJavaObj *bin, ut64 idx) {
r_return_val_if_fail (bin, NULL);
/*
Search through the Constant Pool list for the given CP Index.
If the idx not found by directly going to the list index,
the list will be walked and then the IDX will be checked.
rvalue: new char* for caller to free.
*/
if (bin == NULL) {
return NULL;
}
return r_bin_java_get_name_from_cp_item_list (bin->cp_list, idx);
}
R_API char *r_bin_java_get_desc_from_bin_cp_list(RBinJavaObj *bin, ut64 idx) {
r_return_val_if_fail (bin, NULL);
/*
Search through the Constant Pool list for the given CP Index.
If the idx not found by directly going to the list index,
the list will be walked and then the IDX will be checked.
rvalue: new char* for caller to free.
*/
if (bin == NULL) {
return NULL;
}
return r_bin_java_get_desc_from_cp_item_list (bin->cp_list, idx);
}
R_API RBinJavaCPTypeObj *r_bin_java_get_item_from_bin_cp_list(RBinJavaObj *bin, ut64 idx) {
r_return_val_if_fail (bin, NULL);
/*
Search through the Constant Pool list for the given CP Index.
If the idx not found by directly going to the list index,
the list will be walked and then the IDX will be checked.
rvalue: RBinJavaObj* (user does NOT free).
*/
if (bin == NULL) {
return NULL;
}
if (idx > bin->cp_count || idx == 0) {
return r_bin_java_get_java_null_cp ();
}
@ -2013,16 +1992,13 @@ R_API RBinJavaAttrInfo *r_bin_java_read_next_attr(RBinJavaObj *bin, const ut64 o
const ut8 *a_buf = offset + buf;
ut8 attr_idx_len = 6;
if (offset + 6 > buf_len) {
eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile in Attribute offset "
"(0x%"PFMT64x ") > len of remaining bytes (0x%"PFMT64x ").\n", offset, buf_len);
R_LOG_ERROR ("unable to parse Attribute offset (0x%"PFMT64x ") > len (0x%"PFMT64x ")", offset, buf_len);
return NULL;
}
// ut16 attr_idx, ut32 length of attr.
ut32 sz = R_BIN_JAVA_UINT (a_buf, 2) + attr_idx_len; // r_bin_java_read_int (bin, buf_offset+2) + attr_idx_len;
if (sz + offset > buf_len) {
eprintf ("[X] r_bin_java: Error unable to parse remainder of classfile in Attribute len "
"(0x%x) + offset (0x%"PFMT64x ") exceeds length of buffer (0x%"PFMT64x ").\n",
sz, offset, buf_len);
R_LOG_ERROR ("Unable to parse class Attribute len (0x%x) + offset (0x%"PFMT64x ") exceeds length of buffer (0x%"PFMT64x ")", sz, offset, buf_len);
return NULL;
}
// when reading the attr bytes, need to also

View File

@ -3,6 +3,9 @@
cd "$(dirname $0)"/..
# (git grep -e '_[a-z][a-z](' libr | grep -v '{'| grep c:) && exit 1
# TODO : also check for '{0x'
(git grep '\t{"' libr | grep -v strcmp | grep -v format | grep -v '{",' | grep -v esil | grep c:) && exit 1
(git grep '"},' libr | grep -v strcmp | grep -v format | grep -v '"},' | grep -v '"}{' | grep -v esil | grep -v anal/p | grep c:) && exit 1
(git grep '^\ \ \ ' libr | grep -v '/arch/' | grep -v dotnet | grep -v mangl | grep c:) && exit 1
(git grep 'TODO' libr | grep R_LOG_INFO) && exit 1
( git grep r_config_set libr binr | grep -e '"fal' -e '"tru') && exit 1

View File

@ -1454,10 +1454,10 @@ s sym.range_or
pd 1~4h
EOF
EXPECT=<<EOF
| ; var signed int64_t var_4h { > 0xa} @ rbp-0x4
| ; var signed int64_t var_14h { > 0x0 && <= 0x9} @ rbp-0x14
| ; var signed int64_t var_4h { > 0x64 && <= 0xc7} @ rbp-0x4
| ; var signed int64_t var_4h { > 0xff && <= 0x12b || > 0x14 && <= 0x31 || > 0x6f && <= 0xdd} @ rbp-0x4
| ; var signed int64_t var_4h { > 0xa } @ rbp-0x4
| ; var signed int64_t var_14h { > 0x0 && <= 0x9 } @ rbp-0x14
| ; var signed int64_t var_4h { > 0x64 && <= 0xc7 } @ rbp-0x4
| ; var signed int64_t var_4h { > 0xff && <= 0x12b || > 0x14 && <= 0x31 || > 0x6f && <= 0xdd } @ rbp-0x4
EOF
RUN