change API cs_disasm_dyn(): break cs_insn into 2 structures, and put all details into new structure cs_detail. this break API compatibility
diff --git a/arch/AArch64/AArch64InstPrinter.c b/arch/AArch64/AArch64InstPrinter.c
index cb63f3f..11baf01 100644
--- a/arch/AArch64/AArch64InstPrinter.c
+++ b/arch/AArch64/AArch64InstPrinter.c
@@ -41,13 +41,13 @@
doing_mem = status;
if (doing_mem) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_MEM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.base = ARM64_REG_INVALID;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.index = ARM64_REG_INVALID;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.disp = 0;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_MEM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.base = ARM64_REG_INVALID;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.index = ARM64_REG_INVALID;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.disp = 0;
} else {
// done, create the next operand slot
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -71,9 +71,9 @@
SStream_concat(O, "#%u", Imm);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Imm;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -91,7 +91,7 @@
if (RmSize == 32) {
Ext = "uxtw";
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].ext = ARM64_EXT_UXTW;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].ext = ARM64_EXT_UXTW;
} else {
Ext = "lsl";
}
@@ -100,11 +100,11 @@
if (RmSize == 32) {
Ext = "sxtw";
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].ext = ARM64_EXT_SXTW;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].ext = ARM64_EXT_SXTW;
} else {
Ext = "sxtx";
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].ext = ARM64_EXT_SXTX;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].ext = ARM64_EXT_SXTX;
}
break;
default:
@@ -120,11 +120,11 @@
SStream_concat(O, " #%u", ShiftAmt);
if (MI->detail) {
if (doing_mem) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].shift.type = ARM64_SFT_LSL;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].shift.value = ShiftAmt;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].shift.value = ShiftAmt;
} else {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = ShiftAmt;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = ShiftAmt;
}
}
} else if (IsLSL) {
@@ -144,9 +144,9 @@
else
SStream_concat(O, "#%u"PRIu64, Imm12);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Imm12;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Imm12;
+ MI->flat_insn.arm64.op_count++;
}
}
}
@@ -157,8 +157,8 @@
SStream_concat(O, ", lsl #12");
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = 12;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = 12;
}
}
@@ -171,9 +171,9 @@
else
SStream_concat(O, "%"PRIu64, imm);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = imm;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -188,9 +188,9 @@
else
SStream_concat(O, "#%u", LSB);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = LSB;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = LSB;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -221,9 +221,9 @@
SStream_concat(O, "#%u", (ImmS - ImmR + 1));
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = ImmS - ImmR + 1;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = ImmS - ImmR + 1;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -233,9 +233,9 @@
SStream_concat(O, "c%"PRIu64, MCOperand_getImm(CRx));
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_CIMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = MCOperand_getImm(CRx);
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_CIMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = MCOperand_getImm(CRx);
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -248,9 +248,9 @@
else
SStream_concat(O, "#%u", 64 - MCOperand_getImm(ScaleOp));
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = 64 - MCOperand_getImm(ScaleOp);
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = 64 - MCOperand_getImm(ScaleOp);
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -282,9 +282,9 @@
//o << '#' << format("%.8f", Val);
SStream_concat(O, "#%.8f", Val);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_FP;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].fp = Val;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_FP;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].fp = Val;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -292,9 +292,9 @@
{
SStream_concat(O, "#0.0");
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_FP;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].fp = 0;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_FP;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].fp = 0;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -303,7 +303,7 @@
MCOperand *MO = MCInst_getOperand(MI, OpNum);
SStream_concat(O, A64CondCodeToString((A64CC_CondCodes)(MCOperand_getImm(MO))));
if (MI->detail)
- MI->pub_insn.arm64.cc = MCOperand_getImm(MO) + 1;
+ MI->flat_insn.arm64.cc = MCOperand_getImm(MO) + 1;
}
static void printLabelOperand(MCInst *MI, unsigned OpNum,
@@ -327,9 +327,9 @@
SImm += MI->address;
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = SImm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = SImm;
+ MI->flat_insn.arm64.op_count++;
}
if (SImm > HEX_THRESHOLD)
@@ -349,9 +349,9 @@
else
SStream_concat(O, "#%"PRIu64, Val);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Val;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Val;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -370,11 +370,11 @@
if (MI->detail) {
if (doing_mem) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.disp = Imm;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.disp = Imm;
} else {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Imm;
+ MI->flat_insn.arm64.op_count++;
}
}
}
@@ -403,8 +403,8 @@
else
SStream_concat(O, " #%u", imm);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = Shift + 1;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = imm;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = Shift + 1;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = imm;
}
}
@@ -420,9 +420,9 @@
else
SStream_concat(O, "#%"PRIu64, imm);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = imm;
+ MI->flat_insn.arm64.op_count++;
}
if (MCOperand_getImm(ShiftMO) != 0) {
@@ -432,8 +432,8 @@
else
SStream_concat(O, ", lsl #%u", shift);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = shift;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = shift;
}
}
@@ -457,9 +457,9 @@
else
SStream_concat(O, "#%"PRIu64, imm);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = imm;
+ MI->flat_insn.arm64.op_count++;
}
}
}
@@ -509,9 +509,9 @@
else
SStream_concat(O, "lsl #%u", shift);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = shift;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].ext = Ext - 4;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = shift;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].ext = Ext - 4;
}
return;
}
@@ -530,7 +530,7 @@
}
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].ext = Ext - 4;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].ext = Ext - 4;
MCOperand *MO = MCInst_getOperand(MI, OpNum);
if (MCOperand_getImm(MO) != 0) {
unsigned int shift = MCOperand_getImm(MO);
@@ -539,8 +539,8 @@
else
SStream_concat(O, " #%u", shift);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = shift;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = shift;
}
}
}
@@ -557,11 +557,11 @@
SStream_concat(O, "#%u", Imm * MemScale);
if (MI->detail) {
if (doing_mem) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.disp = Imm * MemScale;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.disp = Imm * MemScale;
} else {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Imm * MemScale;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Imm * MemScale;
+ MI->flat_insn.arm64.op_count++;
}
}
}
@@ -575,9 +575,9 @@
SStream_concat(O, "%s", Name);
free(Name);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_REG;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].reg = Reg;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_REG;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].reg = Reg;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -589,15 +589,15 @@
SStream_concat(O, getRegisterName(Reg));
if (MI->detail) {
if (doing_mem) {
- if (MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.base == ARM64_REG_INVALID) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.base = Reg;
+ if (MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.base == ARM64_REG_INVALID) {
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.base = Reg;
} else {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.index = Reg;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.index = Reg;
}
} else {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_REG;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].reg = Reg;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_REG;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].reg = Reg;
+ MI->flat_insn.arm64.op_count++;
}
}
} else if (MCOperand_isImm(Op)) {
@@ -608,11 +608,11 @@
SStream_concat(O, "#%"PRIu64, imm);
if (MI->detail) {
if (doing_mem) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.disp = imm;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.disp = imm;
} else {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = imm;
+ MI->flat_insn.arm64.op_count++;
}
}
}
@@ -660,11 +660,11 @@
return;
SStream_concat(O, ", lsl");
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_LSL;
} else {
SStream_concat(O, ", msl");
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.type = ARM64_SFT_MSL;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.type = ARM64_SFT_MSL;
}
if (Imm > HEX_THRESHOLD)
@@ -672,7 +672,7 @@
else
SStream_concat(O, " #%"PRIu64, Imm);
if (MI->detail)
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count - 1].shift.value = Imm;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count - 1].shift.value = Imm;
}
static void printNeonUImm0Operand(MCInst *MI, unsigned OpNum, SStream *O)
@@ -680,9 +680,9 @@
SStream_concat(O, "#0");
// FIXME: vector ZERO
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = 0;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = 0;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -700,9 +700,9 @@
else
SStream_concat(O, "#%u", Imm);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Imm;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Imm;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -721,7 +721,7 @@
if (MI->detail) {
if (doing_mem) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].mem.disp = Imm;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].mem.disp = Imm;
} else {
// FIXME: never has false branch??
}
@@ -750,9 +750,9 @@
else
SStream_concat(O, "#%"PRIu64, Mask);
if (MI->detail) {
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].type = ARM64_OP_IMM;
- MI->pub_insn.arm64.operands[MI->pub_insn.arm64.op_count].imm = Mask;
- MI->pub_insn.arm64.op_count++;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].type = ARM64_OP_IMM;
+ MI->flat_insn.arm64.operands[MI->flat_insn.arm64.op_count].imm = Mask;
+ MI->flat_insn.arm64.op_count++;
}
}
@@ -802,11 +802,11 @@
#define PRINT_ALIAS_INSTR
#include "AArch64GenAsmWriter.inc"
-void AArch64_post_printer(csh handle, cs_insn *pub_insn, char *insn_asm)
+void AArch64_post_printer(csh handle, cs_insn *flat_insn, char *insn_asm)
{
// check if this insn requests write-back
if (strrchr(insn_asm, '!') != NULL)
- pub_insn->arm64.writeback = true;
+ flat_insn->detail->arm64.writeback = true;
}
void AArch64_printInst(MCInst *MI, SStream *O, void *Info)
diff --git a/arch/AArch64/mapping.c b/arch/AArch64/mapping.c
index d4eb255..cf8c8f0 100644
--- a/arch/AArch64/mapping.c
+++ b/arch/AArch64/mapping.c
@@ -6,6 +6,7 @@
#include "../../include/arm64.h"
#include "../../utils.h"
+#include "../../cs_priv.h"
#include "mapping.h"
@@ -2996,23 +2997,23 @@
insn->id = insns[i].mapid;
if (detail) {
- memcpy(insn->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
- insn->regs_read_count = count_positive(insns[i].regs_use);
+ cs_struct handle;
+ handle.detail = detail;
+ memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
+ insn->detail->regs_read_count = count_positive(insns[i].regs_use);
- memcpy(insn->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
- insn->regs_write_count = count_positive(insns[i].regs_mod);
+ memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
+ insn->detail->regs_write_count = count_positive(insns[i].regs_mod);
- memcpy(insn->groups, insns[i].groups, sizeof(insns[i].groups));
- insn->groups_count = count_positive(insns[i].groups);
+ memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
+ insn->detail->groups_count = count_positive(insns[i].groups);
- // call cs_reg_write() with handle = 1 to bypass handle check
- // we only need to find if this insn modifies ARM64_REG_NZCV
- insn->arm64.update_flags = cs_reg_write(1, insn, ARM64_REG_NZCV);
+ insn->detail->arm64.update_flags = cs_reg_write((csh)&handle, insn, ARM64_REG_NZCV);
if (insns[i].branch || insns[i].indirect_branch) {
// this insn also belongs to JUMP group. add JUMP group
- insn->groups[insn->groups_count] = ARM64_GRP_JUMP;
- insn->groups_count++;
+ insn->detail->groups[insn->detail->groups_count] = ARM64_GRP_JUMP;
+ insn->detail->groups_count++;
}
}
}