Class: Unarm::ThumbIns

Inherits:
Ins
  • Object
show all
Defined in:
lib/unarm/unarm.rb

Constant Summary collapse

@@size =
2

Constants included from UnarmBind

UnarmBind::ARGUMENT_KIND, UnarmBind::ARGUMENT_KIND_MAP, UnarmBind::Arg, UnarmBind::Args, UnarmBind::CONDITION, UnarmBind::CONDITION_MAP, UnarmBind::CO_REG, UnarmBind::CO_REG_MAP, UnarmBind::ENDIAN, UnarmBind::ENDIAN_MAP, UnarmBind::OPCODE, UnarmBind::OPCODE_MNEMONIC, UnarmBind::REGISTER, UnarmBind::REGISTER_MAP, UnarmBind::SHIFT, UnarmBind::SHIFT_MAP, UnarmBind::STATUS_REG, UnarmBind::STATUS_REG_MAP

Instance Attribute Summary

Attributes inherited from Ins

#address, #arguments, #raw

Instance Method Summary collapse

Methods inherited from Ins

#branch_destination, #branch_to_register?, #eql?, #function_end?, #has_imod?, #is_conditional?, #is_data_operation?, #is_illegal?, #is_unconditional?, #mnemonic, #opcode, #sets_flags?, #size, #string, #target_address

Constructor Details

#initialize(ins, addr = 0, loc = Unarm.cpu.to_s) ⇒ ThumbIns

Returns a new instance of ThumbIns.



736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
# File 'lib/unarm/unarm.rb', line 736

def initialize(ins, addr = 0, loc = Unarm.cpu.to_s)
  @raw = ins
  @address = addr ? addr : nil
  @ptr = FFI::AutoPointer.new(send(:"#{Unarm.cpu.to_s}_new_thumb_ins", ins), method(:free_thumb_ins))

  if Unarm.symbols
    syms = Unarm.get_raw_syms(loc)
    @str = CStr.new(send(:"#{Unarm.cpu.to_s}_thumb_ins_to_str_with_syms", @ptr, syms.ptr, syms.count, addr, 0))
  else
    @str = CStr.new(send(:"#{Unarm.cpu.to_s}_thumb_ins_to_str", @ptr))
  end

  @arguments = Arguments.new(send(:"#{Unarm.cpu.to_s}_thumb_ins_get_args", @ptr))
  @opcode_id = send(:"#{Unarm.cpu.to_s}_thumb_ins_get_opcode_id", @ptr)

  @conditional = thumb_ins_is_conditional(@ptr)
  @data_op     = thumb_ins_is_data_operation(@ptr)
  @sets_flags  = thumb_ins_updates_condition_flags(@ptr)
end