about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xexample/disas_and_graph.py2
-rw-r--r--miasm/arch/ia32_arch.py2
-rw-r--r--miasm/arch/ia32_sem.py7
3 files changed, 11 insertions, 0 deletions
diff --git a/example/disas_and_graph.py b/example/disas_and_graph.py
index 03519a70..71f943ec 100755
--- a/example/disas_and_graph.py
+++ b/example/disas_and_graph.py
@@ -9,6 +9,7 @@ from miasm.core import parse_asm
 from elfesteem import pe
 from miasm.arch import ia32_arch
 from miasm.arch import arm_arch
+from miasm.arch import ppc_arch
 from optparse import OptionParser
 
 try:
@@ -133,6 +134,7 @@ if options.machine:
     machine_dct = {"ia32":ia32_arch.x86_mn,
                    "arm":arm_arch.arm_mn,
                    "java":java_mn,
+                   "ppc":ppc_arch.ppc_mn,
                    }
     if not options.machine in machine_dct:
         raise ValueError('unknown machine', options.machine)
diff --git a/miasm/arch/ia32_arch.py b/miasm/arch/ia32_arch.py
index 9eb8ba0e..2d20d2d5 100644
--- a/miasm/arch/ia32_arch.py
+++ b/miasm/arch/ia32_arch.py
@@ -1011,6 +1011,8 @@ class x86allmncs:
 
         addop("set",   [0x0F, 0x90],       cond , [rmr]         , {}                 ,{w8:True}         , {},                         )
 
+        addop("setalc",[0xd6],             noafs, no_rm         , {}                 ,{}                , {},                         )
+
         addop("qfence",[0x0F, 0xAE],       d7   , no_rm         , {}                 ,{}                , {},                         )
         addop("sgdt",  [0x0F, 0x01],       d0   , no_rm         , {}                 ,{}                , {},                         )
 
diff --git a/miasm/arch/ia32_sem.py b/miasm/arch/ia32_sem.py
index 16d31dc9..2299f02b 100644
--- a/miasm/arch/ia32_sem.py
+++ b/miasm/arch/ia32_sem.py
@@ -1012,6 +1012,12 @@ def seto(info, a):
     e.append(ExprAff(a, ExprCond(ExprOp('==', of, ExprInt(uint32(1))), ExprInt(tab_uintsize[a.get_size()](1)), ExprInt(tab_uintsize[a.get_size()](0)))))
     return e
 
+def setalc(info):
+    a = eax[0:8]
+    e = []
+    e.append(ExprAff(a, ExprCond(ExprOp('==', cf, ExprInt(uint32(1))), ExprInt(tab_uintsize[a.get_size()](0xff)), ExprInt(tab_uintsize[a.get_size()](0)))))
+    return e
+
 
 def bswap(info, a):
     e = []
@@ -2072,6 +2078,7 @@ mnemo_func = {'mov': mov,
               'setns':setns,
               'sets':sets,
               'seto':seto,
+              'setalc':setalc,
               'bswap':bswap,
               'cmpsb':cmps,
               'cmpsw':cmps,