Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 9
0
def avr_br(obj,k):
    off = env.cst(k.int(-1),16)
    obj.operands = [off]
    obj.type = type_control_flow
Esempio n. 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
Esempio n. 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
Esempio n. 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