about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xexample/disas_and_graph.py7
-rw-r--r--miasm/arch/ia32_sem.py12
-rw-r--r--miasm/core/asmbloc.py2
3 files changed, 11 insertions, 10 deletions
diff --git a/example/disas_and_graph.py b/example/disas_and_graph.py
index 07030ea4..c7ec26aa 100755
--- a/example/disas_and_graph.py
+++ b/example/disas_and_graph.py
@@ -162,17 +162,18 @@ for (n,f), ads in dll_dyn_funcs.items():
 
 def my_disasm_callback(ad):
     admode = opmode = u32
+    kargs = {}
     if options.machine_options:
         if options.machine_options in ['u16', 'u32']:
             admode = opmode = options.machine_options
+            kargs = {"admode":admode, "opmode":admode}
         else:
             raise ValueError('bad machine options')
     all_bloc = asmbloc.dis_bloc_all(mnemo, in_str, ad, set(),
                                     symbol_pool=symbol_pool,
-                                    opmode = admode,
-                                    admode = admode,
                                     dontdis_retcall = options.dontdiscallret,
-                                    follow_call = options.followcall)
+                                    follow_call = options.followcall,
+                                    **kargs)
     g = asmbloc.bloc2graph(all_bloc)
     open('graph.txt', 'w').write(g)
     if mnemo == ia32_arch.x86_mn:
diff --git a/miasm/arch/ia32_sem.py b/miasm/arch/ia32_sem.py
index 114540f6..8738d264 100644
--- a/miasm/arch/ia32_sem.py
+++ b/miasm/arch/ia32_sem.py
@@ -1557,7 +1557,7 @@ def fst(info, a):
     return e
 
 def fstp(info, a):
-    e = fst(a)
+    e = fst(info, a)
     e+=float_pop(a)
     return e
 
@@ -1567,25 +1567,25 @@ def fist(info, a):
     return e
 
 def fistp(info, a):
-    e = fist(a)
+    e = fist(info, a)
     e+=float_pop(a)
     return e
 
 def fild(info, a):
     #XXXXX
     src = ExprOp('int_%.2d_to_double'%a.get_size(), a)
-    return fld(src)
+    return fld(info, src)
 
 def fldz(info):
-    return fld(ExprOp('int_32_to_double', ExprInt(uint32(0))))
+    return fld(info, ExprOp('int_32_to_double', ExprInt(uint32(0))))
 
 def fld1(info):
-    return fld(ExprOp('int_32_to_double', ExprInt(uint32(1))))
+    return fld(info, ExprOp('int_32_to_double', ExprInt(uint32(1))))
 
 def fldl2e(info):
     x = struct.pack('d', 1/math.log(2))
     x = struct.unpack('Q', x)[0]
-    return fld(ExprOp('mem_64_to_double', ExprInt(uint64(x))))
+    return fld(info, ExprOp('mem_64_to_double', ExprInt(uint64(x))))
 
 def fadd(info, a, b = None):
     if b == None:
diff --git a/miasm/core/asmbloc.py b/miasm/core/asmbloc.py
index 46ea01fc..0de965a8 100644
--- a/miasm/core/asmbloc.py
+++ b/miasm/core/asmbloc.py
@@ -227,7 +227,7 @@ def dis_bloc(mnemo, pool_bin, cur_bloc, offset, job_done, symbol_pool,
     while True:
         lines_cpt+=1
         if lines_wd !=None and lines_cpt>lines_wd:
-            log_asmbloc.warning( "lines watchdog reached at %X"%int(offset))
+            #log_asmbloc.warning( "lines watchdog reached at %X"%int(offset))
             offsets_to_dis = []
             break