Exemplo n.º 1
0
def dw_op_gnu(obj, enc, data):
    sz = env.op_ptr.size
    if data.size < sz: raise InstructionError(obj)
    result = XXX
    obj.operands = [env.cst(XXX.int(), sz)]
    obj.bytes += pack(result)
    obj.type = type_data_processing
Exemplo n.º 2
0
def dw_op_const(obj, data):
    sz = 8 * obj.sz
    if data.size < sz: raise InstructionError(obj)
    result = data[0:sz]
    obj.operands = [env.cst(result.int(obj.sign), WORD)]
    obj.bytes += pack(result)
    obj.type = type_data_processing
Exemplo n.º 3
0
def dw_op_addr(obj, data):
    sz = env.op_ptr.size
    if data.size < sz:
        raise InstructionError(obj)
    result = data[0:sz]
    obj.operands = [env.cst(result.int(), sz)]
    obj.bytes += pack(result)
    obj.type = type_data_processing
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
def dw_op_const(obj, data):
    sz = env.op_ptr.size
    if data.size < sz: raise InstructionError(obj)
    data = pack(data)
    result, blen = read_leb128(data, obj.sign)
    obj.operands = [env.cst(result, WORD)]
    obj.bytes += data[:blen]
    obj.type = type_data_processing
Exemplo n.º 6
0
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
Exemplo n.º 7
0
 def dw_op_lit(obj, _num):
     obj.operands = [env.cst(_num, WORD)]
     obj.type = type_data_processing
Exemplo n.º 8
0
def dw_op_leb128(obj, data):
    data = pack(data)
    result, blen = read_leb128(data)
    obj.operands = [env.cst(result, WORD)]
    obj.bytes += data[:blen]
    obj.type = type_data_processing
Exemplo n.º 9
0
def dw_op_jmp(obj, offset):
    obj.operands = [env.cst(offset.int(-1), WORD)]
    obj.type = type_control_flow