|
|
|
@ -23,9 +23,9 @@ static FORCE_INLINE void* AllocBuffer(size_t size) {
|
|
|
|
|
#define glue(x, y) x ## y
|
|
|
|
|
#define INTERPRETER_TRANSLATE(s) glue(InterpreterTranslate_, s)
|
|
|
|
|
|
|
|
|
|
shtop_fp_t get_shifter_op(unsigned int inst);
|
|
|
|
|
get_addr_fp_t get_calc_addr_op(unsigned int inst);
|
|
|
|
|
get_addr_fp_t get_calc_addr_op_loadstoret(unsigned int inst);
|
|
|
|
|
shtop_fp_t GetShifterOp(unsigned int inst);
|
|
|
|
|
get_addr_fp_t GetAddressingOp(unsigned int inst);
|
|
|
|
|
get_addr_fp_t GetAddressingOpLoadStoreT(unsigned int inst);
|
|
|
|
|
|
|
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(adc)(unsigned int inst, int index)
|
|
|
|
|
{
|
|
|
|
@ -41,7 +41,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(adc)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -62,7 +62,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(add)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -83,7 +83,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(and)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -126,7 +126,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(bic)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -237,7 +237,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(cmn)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->I = BIT(inst, 25);
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -253,7 +253,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(cmp)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->I = BIT(inst, 25);
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -289,7 +289,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(cpy)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->S = BIT(inst, 20);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15) {
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -310,7 +310,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(eor)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -336,7 +336,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldm)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
if (BIT(inst, 15)) {
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -368,7 +368,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldr)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
if (BITS(inst, 12, 15) == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -386,7 +386,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrcond)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
if (BITS(inst, 12, 15) == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -435,7 +435,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrb)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -449,7 +449,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrbt)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op_loadstoret(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOpLoadStoreT(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -463,7 +463,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrd)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -503,7 +503,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrh)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -517,7 +517,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrsb)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -531,7 +531,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrsh)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -545,7 +545,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(ldrt)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op_loadstoret(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOpLoadStoreT(inst);
|
|
|
|
|
|
|
|
|
|
if (BITS(inst, 12, 15) == 15) {
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -618,7 +618,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(mov)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->S = BIT(inst, 20);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15) {
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -706,7 +706,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(mvn)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->S = BIT(inst, 20);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15) {
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -728,7 +728,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(orr)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -883,7 +883,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(rfe)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -902,7 +902,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(rsb)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -923,7 +923,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(rsc)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -982,7 +982,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(sbc)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -1292,7 +1292,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(srs)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1349,7 +1349,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(stm)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
|
static ARM_INST_PTR INTERPRETER_TRANSLATE(sxtb)(unsigned int inst, int index)
|
|
|
|
@ -1377,7 +1377,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(str)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1422,7 +1422,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(strb)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1436,7 +1436,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(strbt)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op_loadstoret(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOpLoadStoreT(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1449,7 +1449,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(strd)(unsigned int inst, int index){
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1490,7 +1490,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(strh)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1504,7 +1504,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(strt)(unsigned int inst, int index)
|
|
|
|
|
inst_base->br = TransExtData::NON_BRANCH;
|
|
|
|
|
|
|
|
|
|
inst_cream->inst = inst;
|
|
|
|
|
inst_cream->get_addr = get_calc_addr_op_loadstoret(inst);
|
|
|
|
|
inst_cream->get_addr = GetAddressingOpLoadStoreT(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1522,7 +1522,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(sub)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
if (inst_cream->Rd == 15)
|
|
|
|
|
inst_base->br = TransExtData::INDIRECT_BRANCH;
|
|
|
|
@ -1635,7 +1635,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(teq)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->I = BIT(inst, 25);
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
@ -1653,7 +1653,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(tst)(unsigned int inst, int index)
|
|
|
|
|
inst_cream->Rn = BITS(inst, 16, 19);
|
|
|
|
|
inst_cream->Rd = BITS(inst, 12, 15);
|
|
|
|
|
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
|
|
|
|
inst_cream->shtop_func = get_shifter_op(inst);
|
|
|
|
|
inst_cream->shtop_func = GetShifterOp(inst);
|
|
|
|
|
|
|
|
|
|
return inst_base;
|
|
|
|
|
}
|
|
|
|
|