def A64_generic(obj, sf, shift, Rm, imm6, Rn, Rd): obj.datasize = 64 if (sf == 1) else 32 regs = env.Xregs if sf == 1 else env.Wregs obj.d = sp2z(regs[Rd]) obj.n = sp2z(regs[Rn]) if sf == 0 and imm6 > 31: raise InstructionError(obj) shift_type = {0: '<<', 1: '>>', 2: '//', 3: '>>>'}[shift] obj.m = env.oper(shift_type, sp2z(regs[Rm]), cst(imm6)) obj.operands = [obj.d, obj.n, obj.m] obj.type = type_data_processing
def A64_generic(obj, sf, S, shift, Rm, imm6, Rn, Rd): obj.datasize = 64 if (sf == 1) else 32 obj.setflags = S == 1 regs = env.Xregs if sf == 1 else env.Wregs if shift == 3: raise InstructionError(obj) if sf == 0 and imm6 > 31: raise InstructionError(obj) shift_type = {0: "<<", 1: ">>", 2: "//", 3: ">>>"}[shift] obj.m = env.oper(shift_type, sp2z(regs[Rm]), cst(imm6)) obj.n = sp2z(regs[Rn]) obj.d = sp2z(regs[Rd]) obj.operands = [obj.d, obj.n, obj.m] obj.type = type_data_processing