def dw_op_regx(obj, data): data = pack(data) indx, blen = read_leb128(data) sz = env.op_ptr.size r = env.reg("reg%d" % indx, sz) obj.operands = [r] obj.bytes += data[:blen] obj.type = type_data_processing
def dw_op_breg(obj, data, _num): data = pack(data) result, blen = read_sleb128(data) sz = env.op_ptr.size offset = env.cst(result, blen * 8).signextend(sz) obj.operands = [env.reg("reg%d" % _num, sz) + offset] obj.bytes += data[:blen] obj.type = type_data_processing
def dw_op_bregx(obj, data): data = pack(data) indx, blen = read_leb128(data) sz = env.op_ptr.size r = env.reg("reg%d" % indx, sz) obj.bytes += data[:blen] data = data[blen:] result, blen = read_sleb128(data) offset = env.cst(result, blen * 8).signextend(sz) obj.operands = [r + offset] obj.bytes += data[:blen] obj.type = type_data_processing
def dw_op_reg(obj, _num): sz = env.op_ptr.size obj.operands = [env.reg("reg%d" % _num, sz)] obj.type = type_data_processing