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

Public Member Functions

def decode
 
def encode
 
def fromstring
 

Public Attributes

 expr
 
 value
 

Static Public Attributes

 parser = shiftimm_off_sc
 
string shift_op = 'slice_at'
 

Detailed Description

Definition at line 1181 of file arch.py.

Member Function Documentation

def miasm2.arch.aarch64.arch.aarch64_imm_hw_sc.decode (   self,
  v 
)

Definition at line 1185 of file arch.py.

1186  def decode(self, v):
1187  size = 64 if self.parent.sf.value else 32
1188  expr = m2_expr.ExprInt(v, size)
1189  amount = m2_expr.ExprInt(16 * self.parent.hw.value, size)
1190  if self.parent.hw.value:
1191  self.expr = m2_expr.ExprOp(self.shift_op, expr, amount)
1192  else:
1193  self.expr = expr
1194  return True
def miasm2.arch.aarch64.arch.aarch64_imm_hw_sc.encode (   self)

Definition at line 1195 of file arch.py.

1196  def encode(self):
1197  if isinstance(self.expr, m2_expr.ExprInt):
1198  if self.expr.arg > 0xFFFF:
1199  return False
1200  self.value = int(self.expr.arg)
1201  self.parent.hw.value = 0
1202  return True
1203 
1204  if not (isinstance(self.expr, m2_expr.ExprOp) and
1205  self.expr.op == self.shift_op and
1206  len(self.expr.args) == 2 and
1207  isinstance(self.expr.args[0], m2_expr.ExprInt) and
1208  isinstance(self.expr.args[1], m2_expr.ExprInt)):
1209  return False
1210  if set_imm_to_size(self.parent.args[0].expr.size, self.expr.args[0]) is None:
1211  return False
1212  if set_imm_to_size(self.parent.args[0].expr.size, self.expr.args[1]) is None:
1213  return False
1214  arg, amount = [int(arg.arg) for arg in self.expr.args]
1215  if arg > 0xFFFF:
1216  return False
1217  if amount % 16 or amount / 16 > 4:
1218  return False
1219  self.value = arg
1220  self.parent.hw.value = amount / 16
1221  return True
1222 
def miasm2.core.cpu.m_arg.fromstring (   self,
  s,
  parser_result = None 
)
inherited

Definition at line 604 of file cpu.py.

605  def fromstring(self, s, parser_result=None):
606  if parser_result:
607  e, start, stop = parser_result[self.parser]
608  self.expr = e
609  return start, stop
610  try:
611  v, start, stop = self.parser.scanString(s).next()
612  except StopIteration:
613  return None, None
614  self.expr = v[0]
615  return start, stop
616 

+ Here is the call graph for this function:

Member Data Documentation

miasm2.arch.aarch64.arch.aarch64_imm_hw_sc.expr

Definition at line 1190 of file arch.py.

miasm2.arch.aarch64.arch.aarch64_imm_hw_sc.parser = shiftimm_off_sc
static

Definition at line 1182 of file arch.py.

string miasm2.arch.aarch64.arch.aarch64_imm_hw_sc.shift_op = 'slice_at'
static

Definition at line 1183 of file arch.py.

miasm2.arch.aarch64.arch.aarch64_imm_hw_sc.value

Definition at line 1199 of file arch.py.


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