about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <devnull@localhost>2012-11-28 16:29:55 +0100
committerserpilliere <devnull@localhost>2012-11-28 16:29:55 +0100
commitf75a23acd13655e50fbf7b87d65d6ca745f8daf6 (patch)
treea02904de8cfa692a60385e6044584eaf5f7dad20
parentdee93cbe8121c7aab4f31e78167898ff5daf7ece (diff)
downloadmiasm-f75a23acd13655e50fbf7b87d65d6ca745f8daf6.tar.gz
miasm-f75a23acd13655e50fbf7b87d65d6ca745f8daf6.zip
ia32_arch: push segment fix (louis granboulan)
-rw-r--r--miasm/arch/ia32_arch.py9
-rw-r--r--miasm/core/parse_ad.py2
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