diff options
| author | serpilliere <devnull@localhost> | 2012-11-28 16:29:55 +0100 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2012-11-28 16:29:55 +0100 |
| commit | f75a23acd13655e50fbf7b87d65d6ca745f8daf6 (patch) | |
| tree | a02904de8cfa692a60385e6044584eaf5f7dad20 | |
| parent | dee93cbe8121c7aab4f31e78167898ff5daf7ece (diff) | |
| download | miasm-f75a23acd13655e50fbf7b87d65d6ca745f8daf6.tar.gz miasm-f75a23acd13655e50fbf7b87d65d6ca745f8daf6.zip | |
ia32_arch: push segment fix (louis granboulan)
| -rw-r--r-- | miasm/arch/ia32_arch.py | 9 | ||||
| -rw-r--r-- | miasm/core/parse_ad.py | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/miasm/arch/ia32_arch.py b/miasm/arch/ia32_arch.py index ee0f7ca6..67bb97ce 100644 --- a/miasm/arch/ia32_arch.py +++ b/miasm/arch/ia32_arch.py @@ -2065,7 +2065,14 @@ class x86_mn: a_pmem[x86_afs.ad] = u32 parsed_args.append(a_pmem) elif dib in segm_regs: - fds + good_c = False + for reg_code in x86_afs.reg_dict: + if x86_afs.reg_dict[reg_code] in args_sample[0]: + if reg_code == dib: + del args_sample[0] + good_c = True + break + else: raise ValueError('bad dib!!%X'%dib) diff --git a/miasm/core/parse_ad.py b/miasm/core/parse_ad.py index 8f5ca00d..8f069077 100644 --- a/miasm/core/parse_ad.py +++ b/miasm/core/parse_ad.py @@ -243,7 +243,7 @@ def p_opt_seg_colon_1(t): def p_opt_seg_1(t): '''opt_seg : OPTSEG ''' - t[0] = {x86_afs.segm:x86_afs.reg_sg.index(t[1])} + t[0] ={x86_afs.reg_dict[t[1]]:1, x86_afs.size : x86_afs.u32} def p_expression_9(t): '''expression : PTRSIZE PTRMEM LBRA expression RBRA |