Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Public Member Functions | Private Attributes | Static Private Attributes | List of all members
miasm2.analysis.machine.Machine Class Reference
+ Inheritance diagram for miasm2.analysis.machine.Machine:
+ Collaboration diagram for miasm2.analysis.machine.Machine:

Public Member Functions

def __init__
 
def dis_engine
 
def mn
 
def ira
 
def ir
 
def jitter
 
def gdbserver
 
def log_jit
 
def log_arch
 
def base_expr
 
def available_machine
 

Private Attributes

 __log_jit
 
 __log_arch
 
 __base_expr
 
 __ir
 

Static Private Attributes

 __dis_engine = None
 
 __mn = None
 
 __ira = None
 
 __jitter = None
 
 __gdbserver = None
 
list __available
 

Detailed Description

Abstract machine architecture to restrict architecture dependant code

Definition at line 5 of file machine.py.

Constructor & Destructor Documentation

def miasm2.analysis.machine.Machine.__init__ (   self,
  machine_name 
)

Definition at line 19 of file machine.py.

19 
20  def __init__(self, machine_name):
21 
22  dis_engine = None
23  mn = None
24  ira = None
25  ir = None
26  jitter = None
27  gdbserver = None
28  jit = None
29  jitter = None
30  log_jit = None
31  log_arch = None
32 
33  # Import on runtime for performance issue
34  if machine_name == "arml":
35  from miasm2.arch.arm.disasm import dis_arml as dis_engine
36  from miasm2.arch.arm import arch, jit
37  mn = arch.mn_arm
38  jitter = jit.jitter_arml
39  from miasm2.arch.arm.ira import ir_a_arml as ira
40  from miasm2.arch.arm.sem import ir_arml as ir
41  elif machine_name == "armb":
42  from miasm2.arch.arm.disasm import dis_armb as dis_engine
43  from miasm2.arch.arm import arch, jit
44  mn = arch.mn_arm
45  jitter = jit.jitter_armb
46  from miasm2.arch.arm.ira import ir_a_armb as ira
47  from miasm2.arch.arm.sem import ir_armb as ir
48  elif machine_name == "aarch64l":
49  from miasm2.arch.aarch64.disasm import dis_aarch64l as dis_engine
50  from miasm2.arch.aarch64 import arch, jit
51  mn = arch.mn_aarch64
52  jitter = jit.jitter_aarch64l
53  from miasm2.arch.aarch64.ira import ir_a_aarch64l as ira
54  from miasm2.arch.aarch64.sem import ir_aarch64l as ir
55  elif machine_name == "aarch64b":
56  from miasm2.arch.aarch64.disasm import dis_aarch64b as dis_engine
57  from miasm2.arch.aarch64 import arch, jit
58  mn = arch.mn_aarch64
59  jitter = jit.jitter_aarch64b
60  from miasm2.arch.aarch64.ira import ir_a_aarch64b as ira
61  from miasm2.arch.aarch64.sem import ir_aarch64b as ir
62  elif machine_name == "armtl":
63  from miasm2.arch.arm.disasm import dis_armtl as dis_engine
64  from miasm2.arch.arm import arch
65  mn = arch.mn_armt
66  from miasm2.arch.arm.ira import ir_a_armtl as ira
67  from miasm2.arch.arm.sem import ir_armtl as ir
68  elif machine_name == "armtb":
69  from miasm2.arch.arm.disasm import dis_armtb as dis_engine
70  from miasm2.arch.arm import arch
71  mn = arch.mn_armt
72  from miasm2.arch.arm.ira import ir_a_armtb as ira
73  from miasm2.arch.arm.sem import ir_armtb as ir
74  elif machine_name == "sh4":
75  from miasm2.arch.sh4 import arch
76  mn = arch.mn_sh4
77  elif machine_name == "x86_16":
78  from miasm2.arch.x86.disasm import dis_x86_16 as dis_engine
79  from miasm2.arch.x86 import arch, jit
80  mn = arch.mn_x86
81  jitter = jit.jitter_x86_16
82  from miasm2.arch.x86.ira import ir_a_x86_16 as ira
83  from miasm2.arch.x86.sem import ir_x86_16 as ir
84  elif machine_name == "x86_32":
85  from miasm2.arch.x86.disasm import dis_x86_32 as dis_engine
86  from miasm2.arch.x86 import arch, jit
87  mn = arch.mn_x86
88  jitter = jit.jitter_x86_32
89  from miasm2.arch.x86.ira import ir_a_x86_32 as ira
90  from miasm2.arch.x86.sem import ir_x86_32 as ir
91  from miasm2.analysis.gdbserver import GdbServer_x86_32 as gdbserver
92  elif machine_name == "x86_64":
93  from miasm2.arch.x86.disasm import dis_x86_64 as dis_engine
94  from miasm2.arch.x86 import arch, jit
95  mn = arch.mn_x86
96  jitter = jit.jitter_x86_64
97  from miasm2.arch.x86.ira import ir_a_x86_64 as ira
98  from miasm2.arch.x86.sem import ir_x86_64 as ir
99  elif machine_name == "msp430":
100  from miasm2.arch.msp430.disasm import dis_msp430 as dis_engine
101  from miasm2.arch.msp430 import arch, jit
102  mn = arch.mn_msp430
103  jitter = jit.jitter_msp430
104  from miasm2.arch.msp430.ira import ir_a_msp430 as ira
105  from miasm2.arch.msp430.sem import ir_msp430 as ir
106  from miasm2.analysis.gdbserver import GdbServer_msp430 as gdbserver
107  elif machine_name == "mips32b":
108  from miasm2.arch.mips32.disasm import dis_mips32b as dis_engine
109  from miasm2.arch.mips32 import arch, jit
110  mn = arch.mn_mips32
111  jitter = jit.jitter_mips32b
112  from miasm2.arch.mips32.ira import ir_a_mips32b as ira
113  from miasm2.arch.mips32.sem import ir_mips32b as ir
114  elif machine_name == "mips32l":
115  from miasm2.arch.mips32.disasm import dis_mips32l as dis_engine
116  from miasm2.arch.mips32 import arch, jit
117  mn = arch.mn_mips32
118  jitter = jit.jitter_mips32l
119  from miasm2.arch.mips32.ira import ir_a_mips32l as ira
120  from miasm2.arch.mips32.sem import ir_mips32l as ir
121  else:
122  raise ValueError('Unknown machine: %s' % machine_name)
123 
124  # Loggers
125  if jit is not None:
126  log_jit = jit.log
127  log_arch = arch.log
128 
129  self.__dis_engine = dis_engine
130  self.__mn = mn
131  self.__ira = ira
132  self.__jitter = jitter
133  self.__gdbserver = gdbserver
134  self.__log_jit = log_jit
135  self.__log_arch = log_arch
136  self.__base_expr = arch.base_expr
137  self.__ir = ir

Member Function Documentation

def miasm2.analysis.machine.Machine.available_machine (   cls)

Definition at line 175 of file machine.py.

176  def available_machine(cls):
177  "Return a list of supported machines"
178  return cls.__available
def miasm2.analysis.machine.Machine.base_expr (   self)

Definition at line 171 of file machine.py.

172  def base_expr(self):
173  return self.__base_expr
def miasm2.analysis.machine.Machine.dis_engine (   self)

Definition at line 139 of file machine.py.

140  def dis_engine(self):
141  return self.__dis_engine
def miasm2.analysis.machine.Machine.gdbserver (   self)

Definition at line 159 of file machine.py.

160  def gdbserver(self):
161  return self.__gdbserver
def miasm2.analysis.machine.Machine.ir (   self)

Definition at line 151 of file machine.py.

152  def ir(self):
153  return self.__ir
def miasm2.analysis.machine.Machine.ira (   self)

Definition at line 147 of file machine.py.

148  def ira(self):
149  return self.__ira
def miasm2.analysis.machine.Machine.jitter (   self)

Definition at line 155 of file machine.py.

156  def jitter(self):
157  return self.__jitter

+ Here is the caller graph for this function:

def miasm2.analysis.machine.Machine.log_arch (   self)

Definition at line 167 of file machine.py.

168  def log_arch(self):
169  return self.__log_arch
def miasm2.analysis.machine.Machine.log_jit (   self)

Definition at line 163 of file machine.py.

164  def log_jit(self):
165  return self.__log_jit
def miasm2.analysis.machine.Machine.mn (   self)

Definition at line 143 of file machine.py.

144  def mn(self):
145  return self.__mn

Member Data Documentation

list miasm2.analysis.machine.Machine.__available
staticprivate
Initial value:
1 = ["arml", "armb", "armtl", "armtb", "sh4", "x86_16", "x86_32",
2  "x86_64", "msp430", "mips32b", "mips32l",
3  "aarch64l", "aarch64b"]

Definition at line 14 of file machine.py.

miasm2.analysis.machine.Machine.__base_expr
private

Definition at line 135 of file machine.py.

miasm2.analysis.machine.Machine.__dis_engine = None
staticprivate

Definition at line 8 of file machine.py.

miasm2.analysis.machine.Machine.__gdbserver = None
staticprivate

Definition at line 12 of file machine.py.

miasm2.analysis.machine.Machine.__ir
private

Definition at line 136 of file machine.py.

miasm2.analysis.machine.Machine.__ira = None
staticprivate

Definition at line 10 of file machine.py.

miasm2.analysis.machine.Machine.__jitter = None
staticprivate

Definition at line 11 of file machine.py.

miasm2.analysis.machine.Machine.__log_arch
private

Definition at line 134 of file machine.py.

miasm2.analysis.machine.Machine.__log_jit
private

Definition at line 133 of file machine.py.

miasm2.analysis.machine.Machine.__mn = None
staticprivate

Definition at line 9 of file machine.py.


The documentation for this class was generated from the following file: