def mostek_ld(obj, d, n): base = obj.misc["pfx"] if base is None: raise InstructionError(obj) disp = env.cst(d, 8).signextend(16) obj.operands = [env.mem(base, 8, disp=disp.value), env.cst(n, 8)] obj.type = type_data_processing
def mostek_bitset(obj,d,b): op1 = env.cst(b,3) base = obj.misc['pfx'] if base is None: raise InstructionError(obj) disp = env.cst(d,8).signextend(16) op2 = env.mem(base,8,disp=disp.value) obj.operands = [op1,op2] obj.type = type_data_processing
def mostek_bitset(obj, d, b): op1 = env.cst(b, 3) base = obj.misc['pfx'] if base is None: raise InstructionError(obj) disp = env.cst(d, 8).signextend(16) op2 = env.mem(base, 8, disp=disp.value) obj.operands = [op1, op2] obj.type = type_data_processing
def mostek_bitset(obj,b,r): if obj.misc['pfx'] is not None: raise InstructionError(obj) op1 = env.cst(b,3) op2 = getreg8(obj,r) obj.operands = [op1,op2] obj.type = type_data_processing
def mostek_jump(obj, e): # DD/FD prefix are ignored disp = env.cst(e, 8) obj.operands = [disp] if hasattr(obj, "cond"): obj.operands.insert(0, obj.cond[0]) obj.type = type_control_flow
def mostek_jump(obj,e): # DD/FD prefix are ignored disp = env.cst(e,8) obj.operands = [disp] if hasattr(obj,'cond'): obj.operands.insert(0,obj.cond[0]) obj.type = type_control_flow
def mostek_bitset(obj,b,r): if obj.misc['pfx'] is not None: raise InstructionError(obj) op1 = env.cst(b,3) op2 = getreg8(obj,r) obj.operands = [op1,op2] obj.type = type_data_processing
def mostek_rotshift(obj,r,d): base = obj.misc['pfx'] if base is None: raise InstructionError(obj) disp = env.cst(d,8).signextend(16) op1 = env.mem(base,8,disp=disp.value) obj.operands = [op1] if r!=0b110: obj.operands.append(getreg8(obj,r)) obj.type = type_data_processing
def mostek_arithmetic(obj,d): if obj.misc['pfx'] is None: raise InstructionError(obj) base = obj.misc['pfx'] disp = env.cst(d,8).signextend(16) src = env.mem(base,8,disp=disp.value) obj.operands = [env.a,src] if obj.mnemonic in ('INC','DEC'): obj.operands.pop(0) obj.type = type_data_processing
def mostek_arithmetic(obj, d): if obj.misc['pfx'] is None: raise InstructionError(obj) base = obj.misc['pfx'] disp = env.cst(d, 8).signextend(16) src = env.mem(base, 8, disp=disp.value) obj.operands = [env.a, src] if obj.mnemonic in ('INC', 'DEC'): obj.operands.pop(0) obj.type = type_data_processing
def mostek_rotshift(obj, r, d): base = obj.misc['pfx'] if base is None: raise InstructionError(obj) disp = env.cst(d, 8).signextend(16) op1 = env.mem(base, 8, disp=disp.value) obj.operands = [op1] if r != 0b110: obj.operands.append(getreg8(obj, r)) obj.type = type_data_processing
def mostek_ld(obj, d, rs): x = obj.misc["pfx"] if rs == 0b110 or x is None: raise InstructionError(obj) src = env.reg8[rs] disp = env.cst(d, 8).signextend(16) dst = env.mem(x, 8, disp=disp.value) obj.operands = [dst, src] obj.type = type_data_processing
def mostek_ld(obj,d,rs): x = obj.misc['pfx'] if rs==0b110 or x is None: raise InstructionError(obj) src = env.reg8[rs] disp = env.cst(d,8).signextend(16) dst = env.mem(x,8,disp=disp.value) obj.operands = [dst,src] obj.type = type_data_processing
def mostek_ld(obj,n): base = env.cst(0xff00,16)+n obj.operands = [env.a, env.mem(base,8)] obj.type = type_data_processing
def mostek_rst(obj, t): # DD/FD prefix are ignored p = (0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38)[t] obj.operands = [env.cst(p, 8)] obj.type = type_control_flow
def mostek_call(obj, nn): # DD/FD prefix are ignored obj.operands = [env.cst(nn, 16)] obj.type = type_control_flow
def mostek_ld(obj, dd, rev, nn): obj.operands = [getreg16(obj, dd), env.mem(env.cst(nn, 16), 16)] if not rev: obj.operands.reverse() obj.type = type_data_processing
def mostek_ld(obj,rev,nn): obj.operands = [env.mem(env.cst(nn,16),8), env.a] if rev: obj.operands.reverse() obj.type = type_data_processing
def mostek_ld(obj,n): disp = env.cst(n,8).signextend(16) obj.operands = [env.sp, disp] obj.type = type_data_processing
def mostek_ld(obj,dd,nn): dst = getreg16(obj,dd) obj.operands = [dst,env.cst(nn,16)] obj.type = type_data_processing
def mostek_ld(obj,n): base = env.cst(n,16) obj.operands = [env.mem(base,8), env.a] obj.type = type_data_processing
def mostek_ld(obj,n): base = env.cst(0xff00,16)+n obj.operands = [env.a, env.mem(base,8)] obj.type = type_data_processing
def mostek_ld(obj): base = env.composer([env.c, env.cst(0xff,8)]) obj.operands = [env.mem(base,8), env.a] obj.type = type_data_processing
def mostek_io(obj,n): # DD/FD prefix are ignored obj.operands = [env.a, env.cst(n,8)] if obj.mnemonic=='OUT': obj.operands.reverse() obj.type = type_other
def mostek_rst(obj,t): # DD/FD prefix are ignored p = (0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38)[t] obj.operands = [env.cst(p,8)] obj.type = type_control_flow
def mostek_ld(obj,dd,nn): dst = getreg16(obj,dd) obj.operands = [dst,env.cst(nn,16)] obj.type = type_data_processing
def mostek_ld(obj,nn): obj.operands = [env.mem(env.cst(nn,16),16), env.sp] obj.type = type_data_processing
def mostek_ld(obj,rev,nn): dst = getreg16(obj,0b10) obj.operands = [dst,env.mem(env.cst(nn,16),16)] if not rev: obj.operands.reverse() obj.type = type_data_processing
def mostek_call(obj,cc,nn): # DD/FD prefix are ignored obj.cond = env.CONDITION[cc] obj.operands = [obj.cond[0],env.cst(nn,16)] obj.type = type_control_flow
def mostek_ld(obj,nn): obj.operands = [env.mem(env.cst(nn,16),16), env.sp] obj.type = type_data_processing
def mostek_ld(obj, rev, nn): obj.operands = [env.mem(env.cst(nn, 16), 8), env.a] if rev: obj.operands.reverse() obj.type = type_data_processing
def mostek_arithmetic(obj,n): obj.operands = [env.a,env.cst(n,8)] obj.type = type_data_processing
def mostek_ld(obj,d,n): base = obj.misc['pfx'] if base is None: raise InstructionError(obj) disp = env.cst(d,8).signextend(16) obj.operands = [env.mem(base,8,disp=disp.value),env.cst(n,8)] obj.type = type_data_processing
def mostek_ld(obj,n): disp = env.cst(n,8).signextend(16) obj.operands = [env.sp, disp] obj.type = type_data_processing
def mostek_call(obj, cc, nn): # DD/FD prefix are ignored obj.cond = env.CONDITION[cc] obj.operands = [obj.cond[0], env.cst(nn, 16)] obj.type = type_control_flow
def mostek_arithmetic(obj,n): # DD/FD prefix are ignored obj.operands = [env.a,env.cst(n,8)] obj.type = type_data_processing
def mostek_io(obj, n): # DD/FD prefix are ignored obj.operands = [env.a, env.cst(n, 8)] if obj.mnemonic == "OUT": obj.operands.reverse() obj.type = type_other
def mostek_ld(obj,dd,rev,nn): obj.operands = [getreg16(obj,dd),env.mem(env.cst(nn,16),16)] if not rev: obj.operands.reverse() obj.type = type_data_processing
def mostek_ld(obj): base = env.composer([env.c, env.cst(0xff,8)]) obj.operands = [env.mem(base,8), env.a] obj.type = type_data_processing
def mostek_call(obj,nn): obj.operands = [env.cst(nn,16)] obj.type = type_control_flow
def mostek_ld(obj,n): base = env.cst(n,16) obj.operands = [env.mem(base,8), env.a] obj.type = type_data_processing
def mostek_rst(obj,t): p = (0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38)[t] obj.operands = [env.cst(p,8)] obj.type = type_control_flow
def mostek_ld(obj,rev,nn): dst = getreg16(obj,0b10) obj.operands = [dst,env.mem(env.cst(nn,16),16)] if not rev: obj.operands.reverse() obj.type = type_data_processing
def mostek_rst(obj,t): p = (0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38)[t] obj.operands = [env.cst(p,8)] obj.type = type_control_flow
def mostek_arithmetic(obj,n): obj.operands = [env.a,env.cst(n,8)] obj.type = type_data_processing
def mostek_ld(obj,r,n): dst = getreg8(obj,r) if r==0b110 and obj.misc['pfx'] is not None: raise InstructionError(obj) obj.operands = [dst,env.cst(n,8)] obj.type = type_data_processing
def mostek_arithmetic(obj,n): # DD/FD prefix are ignored obj.operands = [env.a,env.cst(n,8)] obj.type = type_data_processing
def mostek_call(obj,nn): # DD/FD prefix are ignored obj.operands = [env.cst(nn,16)] obj.type = type_control_flow
def mostek_jump(obj,e): disp = env.cst(e,8).signextend(16) obj.operands = [disp] if hasattr(obj,'cond'): obj.operands.insert(0,obj.cond[0]) obj.type = type_control_flow
def mostek_jump(obj,e): disp = env.cst(e,8).signextend(16) obj.operands = [disp] if hasattr(obj,'cond'): obj.operands.insert(0,obj.cond[0]) obj.type = type_control_flow
def mostek_call(obj,cc,nn): if cc>=0b100: raise InstructionError(obj) obj.cond = env.CONDITION[cc] obj.operands = [obj.cond[0],env.cst(nn,16)] obj.type = type_control_flow
def mostek_call(obj,nn): obj.operands = [env.cst(nn,16)] obj.type = type_control_flow
def mostek_ld(obj,r,n): dst = getreg8(obj,r) if r==0b110 and obj.misc['pfx'] is not None: raise InstructionError(obj) obj.operands = [dst,env.cst(n,8)] obj.type = type_data_processing
def mostek_call(obj,cc,nn): if cc>=0b100: raise InstructionError(obj) obj.cond = env.CONDITION[cc] obj.operands = [obj.cond[0],env.cst(nn,16)] obj.type = type_control_flow