"PC": PC, "LR": LR, "nf": nf, "zf": zf, "cf": cf, "of": of, "cond2expr": cond2expr, "extend_arg": extend_arg, "ExprId": ExprId, "exception_flags": exception_flags, "interrupt_num": interrupt_num, "EXCEPT_DIV_BY_ZERO": EXCEPT_DIV_BY_ZERO, "EXCEPT_INT_XX": EXCEPT_INT_XX, } sbuild = SemBuilder(ctx) # instruction definition ############## @sbuild.parse def add(arg1, arg2, arg3): arg1 = arg2 + extend_arg(arg2, arg3) @sbuild.parse def sub(arg1, arg2, arg3): arg1 = arg2 - extend_arg(arg2, arg3) @sbuild.parse
IRDst = m2_expr.ExprId("IRDst") def get_next_instr(self, _): return asm_label("NEXT") def get_next_label(self, _): return asm_label("NEXT") def gen_label(self): return asm_label("GEN") class Instr(object): mode = 32 # Test sb = SemBuilder(m2_expr.__dict__) @sb.parse def test(Arg1, Arg2, Arg3): "Test docstring" Arg1 = Arg2 mem32[Arg1] = Arg2 mem32[Arg2] = Arg3 + i32(4) - mem32[Arg1] Arg3 = Arg3 if Arg2 else i32(0) tmpvar = 'myop'(i32(2)) Arg2 = ('myopsize%d' % Arg1.size)(tmpvar, Arg1) alias = Arg1[:24] if not Arg1: Arg2 = Arg3 else: