Пример #1
0
def avr_ld(obj,s,d,k):
    dst = env.R[d]
    adr = env.cst(k,16)
    adr.sf = False
    obj.operands = [dst,adr] if s==0 else [adr,dst]
    obj.misc['mem'] = s+1
    obj.type = type_data_processing
Пример #2
0
def avr_ld(obj,s,kh,ks,d,k):
    dst = env.R[16+d]
    adr = k//kh//ks//~ks
    adr = env.cst(adr.int(),16)
    obj.operands = [dst,adr] if s==0 else [adr,dst]
    obj.misc['mem'] = s+1
    obj.type = type_data_processing
Пример #3
0
def avr_default(obj,K,d,k):
    dst = env.R[16+d]
    imm = env.cst(k+(K<<4),8)
    if obj.mnemonic in ('ANDI','ORI'):
        imm.sf = False
    obj.operands = [dst,imm]
    obj.type = type_data_processing
Пример #4
0
def avr_default(obj, K, d, k):
    dst = (env.R[24], env.X, env.Y, env.Z)[d]
    if d == 0:
        obj.misc["W"] = (dst, )
    imm = env.cst(k + (K << 4), 16)
    obj.operands = [dst, imm]
    obj.type = type_data_processing
Пример #5
0
def avr_io(obj,A,r,a):
    port = env.cst(a+(A<<4),8)
    port.sf = False
    obj.operands = [port,env.R[r]]
    obj.type = type_other
Пример #6
0
def avr_io(obj,A,d,a):
    port = env.cst(a+(A<<4),8)
    port.sf = False
    obj.operands = [env.R[d],port]
    obj.type = type_other
Пример #7
0
def avr_io(obj,a,b):
    port = env.cst(a,5)
    port.sf = False
    obj.operands = [env.cst(a,5),env.cst(b,3)]
    obj.type = type_data_processing
Пример #8
0
def avr_call(obj,khi,k16,klo):
    adr = env.cst( (klo//k16//khi).int(), 22)
    adr.sf = False
    obj.operands = [adr]
    obj.type = type_control_flow
Пример #9
0
def avr_br(obj,k):
    off = env.cst(k.int(-1),16)
    obj.operands = [off]
    obj.type = type_control_flow
Пример #10
0
def avr_brc(obj,k,s,_cc):
    bit = env.SREG[s:s+1]
    off = env.cst(k.int(-1),16)
    obj.operands = [bit,off]
    obj.cond = (bit==_cc)
    obj.type = type_control_flow
Пример #11
0
def avr_ld(obj,q,q2,s,d,q3):
    dst = env.R[d]
    off = env.cst((q<<5)+(q2<<3)+q3,16)
    obj.operands = [dst,env.Z+off] if s==0 else [env.Z+off, dst]
    obj.misc['mem'] = True
    obj.type = type_data_processing
Пример #12
0
def avr_ld(obj,q,qh,s,d,ql):
    dst = env.R[d]
    off = env.cst((q<<5)+(qh<<3)+ql,16)
    obj.operands = [dst,env.Y+off] if s==0 else [env.Y+off, dst]
    obj.misc['mem'] = s+1
    obj.type = type_data_processing