diff options
Diffstat (limited to '')
| -rw-r--r-- | miasm2/arch/x86/sem.py | 148 | ||||
| -rw-r--r-- | miasm2/expression/expression_helper.py | 19 | ||||
| -rw-r--r-- | test/arch/x86/unit/mn_daa.py | 76 | ||||
| -rw-r--r-- | test/arch/x86/unit/mn_das.py | 106 | ||||
| -rw-r--r-- | test/expression/simplifications.py | 33 | ||||
| -rw-r--r-- | test/test_all.py | 2 |
6 files changed, 360 insertions, 24 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index 6b5ae583..f99d2d9d 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -20,6 +20,7 @@ import miasm2.expression.expression as m2_expr from miasm2.expression.simplifications import expr_simp from miasm2.arch.x86.regs import * from miasm2.arch.x86.arch import mn_x86, repeat_mn, replace_regs +from miasm2.expression.expression_helper import expr_cmps, expr_cmpu from miasm2.ir.ir import ir, irbloc import math import struct @@ -1212,7 +1213,9 @@ def jz(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(zf, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(zf, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e = [m2_expr.ExprAff(meip, dst_o), m2_expr.ExprAff(ir.IRDst, dst_o), ] @@ -1224,7 +1227,8 @@ def jcxz(ir, instr, dst): meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) dst_o = m2_expr.ExprCond(mRCX[instr.mode][:16], - n, dst).zeroExtend(instr.mode) + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1235,7 +1239,8 @@ def jecxz(ir, instr, dst): meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) dst_o = m2_expr.ExprCond(mRCX[instr.mode][:32], - n, dst).zeroExtend(instr.mode) + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1245,7 +1250,9 @@ def jrcxz(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(mRCX[instr.mode], n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(mRCX[instr.mode], + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1255,7 +1262,9 @@ def jnz(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(zf, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(zf, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1265,7 +1274,9 @@ def jp(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(pf, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(pf, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1275,7 +1286,9 @@ def jnp(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(pf, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(pf, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1285,7 +1298,9 @@ def ja(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(cf | zf, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(cf | zf, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1295,7 +1310,9 @@ def jae(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(cf, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(cf, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1305,7 +1322,9 @@ def jb(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(cf, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(cf, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1315,7 +1334,9 @@ def jbe(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(cf | zf, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(cf | zf, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1325,7 +1346,9 @@ def jge(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(nf - of, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(nf - of, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1335,7 +1358,9 @@ def jg(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(zf | (nf - of), n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(zf | (nf - of), + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1345,7 +1370,9 @@ def jl(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(nf - of, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(nf - of, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1355,7 +1382,9 @@ def jle(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(zf | (nf - of), dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(zf | (nf - of), + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1365,7 +1394,9 @@ def js(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(nf, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(nf, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1375,7 +1406,9 @@ def jns(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(nf, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(nf, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1385,7 +1418,9 @@ def jo(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(of, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(of, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1395,7 +1430,9 @@ def jno(ir, instr, dst): e = [] meip = mRIP[instr.mode] n = m2_expr.ExprId(ir.get_next_label(instr), dst.size) - dst_o = m2_expr.ExprCond(of, n, dst).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(of, + n.zeroExtend(instr.mode), + dst.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1410,7 +1447,9 @@ def loop(ir, instr, dst): n = m2_expr.ExprId(ir.get_next_label(instr), instr.mode) c = myecx - m2_expr.ExprInt_from(myecx, 1) - dst_o = m2_expr.ExprCond(c, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(c, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(myecx, c)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) @@ -1432,7 +1471,9 @@ def loopne(ir, instr, dst): c &= zf ^ m2_expr.ExprInt1(1) e.append(m2_expr.ExprAff(myecx, myecx - m2_expr.ExprInt_from(myecx, 1))) - dst_o = m2_expr.ExprCond(c, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(c, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -1451,7 +1492,9 @@ def loope(ir, instr, dst): m2_expr.ExprInt1(0)) c &= zf e.append(m2_expr.ExprAff(myecx, myecx - m2_expr.ExprInt_from(myecx, 1))) - dst_o = m2_expr.ExprCond(c, dst, n).zeroExtend(instr.mode) + dst_o = m2_expr.ExprCond(c, + dst.zeroExtend(instr.mode), + n.zeroExtend(instr.mode)) e.append(m2_expr.ExprAff(meip, dst_o)) e.append(m2_expr.ExprAff(ir.IRDst, dst_o)) return e, [] @@ -2416,9 +2459,65 @@ def rdtsc(ir, instr): return e, [] -# XXX TODO def daa(ir, instr): - return [], None + e = [] + r_al = mRAX[instr.mode][:8] + + cond1 = expr_cmpu(r_al[:4], m2_expr.ExprInt_fromsize(4, 0x9)) | af + e.append(m2_expr.ExprAff(af, cond1)) + + + cond2 = expr_cmpu(m2_expr.ExprInt8(6), r_al) + cond3 = expr_cmpu(r_al, m2_expr.ExprInt8(0x99)) | cf + + + cf_c1 = m2_expr.ExprCond(cond1, + cf | (cond2), + m2_expr.ExprInt1(0)) + new_cf = m2_expr.ExprCond(cond3, + m2_expr.ExprInt1(1), + m2_expr.ExprInt1(0)) + e.append(m2_expr.ExprAff(cf, new_cf)) + + al_c1 = m2_expr.ExprCond(cond1, + r_al + m2_expr.ExprInt8(6), + r_al) + + new_al = m2_expr.ExprCond(cond3, + al_c1 + m2_expr.ExprInt8(0x60), + al_c1) + e.append(m2_expr.ExprAff(r_al, new_al)) + return e, [] + +def das(ir, instr): + e = [] + r_al = mRAX[instr.mode][:8] + + cond1 = expr_cmpu(r_al[:4], m2_expr.ExprInt_fromsize(4, 0x9)) | af + e.append(m2_expr.ExprAff(af, cond1)) + + + cond2 = expr_cmpu(m2_expr.ExprInt8(6), r_al) + cond3 = expr_cmpu(r_al, m2_expr.ExprInt8(0x99)) | cf + + + cf_c1 = m2_expr.ExprCond(cond1, + cf | (cond2), + m2_expr.ExprInt1(0)) + new_cf = m2_expr.ExprCond(cond3, + m2_expr.ExprInt1(1), + cf_c1) + e.append(m2_expr.ExprAff(cf, new_cf)) + + al_c1 = m2_expr.ExprCond(cond1, + r_al - m2_expr.ExprInt8(6), + r_al) + + new_al = m2_expr.ExprCond(cond3, + al_c1 - m2_expr.ExprInt8(0x60), + al_c1) + e.append(m2_expr.ExprAff(r_al, new_al)) + return e, [] def aam(ir, instr, a): @@ -3272,6 +3371,7 @@ mnemo_func = {'mov': mov, 'cqo': cqo, 'daa': daa, + 'das': das, 'aam': aam, 'aad': aad, 'aaa': aaa, diff --git a/miasm2/expression/expression_helper.py b/miasm2/expression/expression_helper.py index 3555530a..196ad5cd 100644 --- a/miasm2/expression/expression_helper.py +++ b/miasm2/expression/expression_helper.py @@ -533,3 +533,22 @@ class ExprRandom(object): cls.generated_elements = {} return got + +def _expr_cmp_gen(arg1, arg2): + return (arg2 - arg1) ^ ((arg2 ^ arg1) & ((arg2 - arg1) ^ arg2)) + +def expr_cmpu(arg1, arg2): + """ + Returns a one bit long Expression: + * 1 if @arg1 is strictly greater than @arg2 (unsigned) + * 0 otherwise. + """ + return (_expr_cmp_gen(arg1, arg2) ^ arg2 ^ arg1).msb() + +def expr_cmps(arg1, arg2): + """ + Returns a one bit long Expression: + * 1 if @arg1 is strictly greater than @arg2 (signed) + * 0 otherwise. + """ + return _expr_cmp_gen(arg1, arg2).msb() diff --git a/test/arch/x86/unit/mn_daa.py b/test/arch/x86/unit/mn_daa.py new file mode 100644 index 00000000..cb96a22b --- /dev/null +++ b/test/arch/x86/unit/mn_daa.py @@ -0,0 +1,76 @@ +#! /usr/bin/env python +from asm_test import Asm_Test + + +class Test_DAA(Asm_Test): + TXT = ''' + main: + MOV EBP, ESP + LEA ESI, DWORD PTR [array_al] + loop: + + ; load original cf + LODSB + MOV BL, AL + ; load original af + LODSB + SHL AL, 4 + OR AL, BL + MOV AH, AL + SAHF + ; load original al + LODSB + + DAA + MOV BL, AL + + LAHF + MOV CL, AH + + ; test cf + LODSB + MOV DL, CL + AND DL, 1 + CMP DL, AL + JNZ BAD + + MOV DL, CL + SHR DL, 4 + AND DL, 1 + ; test af + LODSB + CMP DL, AL + JNZ BAD + + ; test value + LODSB + CMP AL, BL + JNZ BAD + + CMP ESI, array_al_end + JB loop + + + end: + RET + +BAD: + INT 0x3 + RET + +array_al: +.byte 0, 1, 0x08, 0, 1, 0x0E +.byte 0, 1, 0x09, 0, 1, 0x0F +.byte 0, 1, 0x0A, 0, 1, 0x10 +.byte 0, 1, 0x98, 0, 1, 0x9E +.byte 0, 1, 0x99, 0, 1, 0x9F +.byte 0, 1, 0x9A, 1, 1, 0x00 +array_al_end: +.long 0 + ''' + def check(self): + pass + + +if __name__ == "__main__": + [test()() for test in [Test_DAA]] diff --git a/test/arch/x86/unit/mn_das.py b/test/arch/x86/unit/mn_das.py new file mode 100644 index 00000000..ba84abdd --- /dev/null +++ b/test/arch/x86/unit/mn_das.py @@ -0,0 +1,106 @@ +#! /usr/bin/env python +from asm_test import Asm_Test + + +class Test_DAS(Asm_Test): + TXT = ''' + main: + MOV EBP, ESP + LEA ESI, DWORD PTR [array_al] + loop: + + ; load original cf + LODSB + MOV BL, AL + ; load original af + LODSB + SHL AL, 4 + OR AL, BL + MOV AH, AL + SAHF + ; load original al + LODSB + + DAS + MOV BL, AL + + LAHF + MOV CL, AH + + ; test cf + LODSB + MOV DL, CL + AND DL, 1 + CMP DL, AL + JNZ BAD + + MOV DL, CL + SHR DL, 4 + AND DL, 1 + ; test af + LODSB + CMP DL, AL + JNZ BAD + + ; test value + LODSB + CMP AL, BL + JNZ BAD + + CMP ESI, array_al_end + JB loop + + + end: + RET + +BAD: + INT 0x3 + RET + +array_al: +.byte 0, 0, 0x05, 0, 0, 0x05 +.byte 0, 1, 0x05, 1, 1, 0xFF +.byte 1, 0, 0x05, 1, 0, 0xA5 +.byte 1, 1, 0x05, 1, 1, 0x9F +.byte 0, 0, 0x06, 0, 0, 0x06 +.byte 0, 1, 0x06, 0, 1, 0x00 +.byte 1, 0, 0x06, 1, 0, 0xA6 +.byte 1, 1, 0x06, 1, 1, 0xA0 +.byte 0, 0, 0x07, 0, 0, 0x07 +.byte 0, 1, 0x07, 0, 1, 0x01 +.byte 1, 0, 0x07, 1, 0, 0xA7 +.byte 1, 1, 0x07, 1, 1, 0xA1 +.byte 0, 0, 0x08, 0, 0, 0x08 +.byte 0, 1, 0x08, 0, 1, 0x02 +.byte 1, 0, 0x08, 1, 0, 0xA8 +.byte 1, 1, 0x08, 1, 1, 0xA2 +.byte 0, 0, 0x09, 0, 0, 0x09 +.byte 0, 1, 0x09, 0, 1, 0x03 +.byte 1, 0, 0x09, 1, 0, 0xA9 +.byte 1, 1, 0x09, 1, 1, 0xA3 +.byte 0, 0, 0x0A, 0, 1, 0x04 +.byte 0, 1, 0x0A, 0, 1, 0x04 +.byte 1, 0, 0x0A, 1, 1, 0xA4 +.byte 1, 1, 0x0A, 1, 1, 0xA4 +.byte 0, 0, 0x98, 0, 0, 0x98 +.byte 0, 1, 0x98, 0, 1, 0x92 +.byte 1, 0, 0x98, 1, 0, 0x38 +.byte 1, 1, 0x98, 1, 1, 0x32 +.byte 0, 0, 0x99, 0, 0, 0x99 +.byte 0, 1, 0x99, 0, 1, 0x93 +.byte 1, 0, 0x99, 1, 0, 0x39 +.byte 1, 1, 0x99, 1, 1, 0x33 +.byte 0, 0, 0x9A, 1, 1, 0x34 +.byte 0, 1, 0x9A, 1, 1, 0x34 +.byte 1, 0, 0x9A, 1, 1, 0x34 +.byte 1, 1, 0x9A, 1, 1, 0x34 +array_al_end: +.long 0 + ''' + def check(self): + pass + + +if __name__ == "__main__": + [test()() for test in [Test_DAS]] diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py index 1f5a5c5b..6290a807 100644 --- a/test/expression/simplifications.py +++ b/test/expression/simplifications.py @@ -3,6 +3,7 @@ # from pdb import pm from miasm2.expression.expression import * +from miasm2.expression.expression_helper import expr_cmpu, expr_cmps from miasm2.expression.simplifications import expr_simp, ExpressionSimplifier from miasm2.expression.simplifications_cond import ExprOp_inf_signed, ExprOp_inf_unsigned, ExprOp_equal @@ -264,6 +265,38 @@ to_test = [(ExprInt32(1) - ExprInt32(1), ExprInt32(0)), a[:16]), ((a << ExprInt32(16))[24:32], a[8:16]), + (expr_cmpu(ExprInt32(0), ExprInt32(0)), + ExprInt1(0)), + (expr_cmpu(ExprInt32(10), ExprInt32(0)), + ExprInt1(1)), + (expr_cmpu(ExprInt32(10), ExprInt32(5)), + ExprInt1(1)), + (expr_cmpu(ExprInt32(5), ExprInt32(10)), + ExprInt1(0)), + (expr_cmpu(ExprInt32(-1), ExprInt32(0)), + ExprInt1(1)), + (expr_cmpu(ExprInt32(-1), ExprInt32(-1)), + ExprInt1(0)), + (expr_cmpu(ExprInt32(0), ExprInt32(-1)), + ExprInt1(0)), + (expr_cmps(ExprInt32(0), ExprInt32(0)), + ExprInt1(0)), + (expr_cmps(ExprInt32(10), ExprInt32(0)), + ExprInt1(1)), + (expr_cmps(ExprInt32(10), ExprInt32(5)), + ExprInt1(1)), + (expr_cmps(ExprInt32(5), ExprInt32(10)), + ExprInt1(0)), + (expr_cmps(ExprInt32(-1), ExprInt32(0)), + ExprInt1(0)), + (expr_cmps(ExprInt32(-1), ExprInt32(-1)), + ExprInt1(0)), + (expr_cmps(ExprInt32(0), ExprInt32(-1)), + ExprInt1(1)), + (expr_cmps(ExprInt32(-5), ExprInt32(-10)), + ExprInt1(1)), + (expr_cmps(ExprInt32(-10), ExprInt32(-5)), + ExprInt1(0)), ] diff --git a/test/test_all.py b/test/test_all.py index f59e3781..55e69e70 100644 --- a/test/test_all.py +++ b/test/test_all.py @@ -36,6 +36,8 @@ for script in ["x86/sem.py", "x86/unit/mn_strings.py", "x86/unit/mn_float.py", "x86/unit/mn_stack.py", + "x86/unit/mn_daa.py", + "x86/unit/mn_das.py", "arm/arch.py", "arm/sem.py", "msp430/arch.py", |