Class: Unarm::ArmIns
Constant Summary collapse
- @@size =
4
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
Instance Method Summary collapse
-
#initialize(ins, addr = 0, loc = Unarm.cpu.to_s) ⇒ ArmIns
constructor
A new instance of ArmIns.
-
#is_compare_operation? ⇒ Boolean
(also: #is_compare_op?)
does opcode compare a register with another value?.
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) ⇒ ArmIns
Returns a new instance of ArmIns.
706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 |
# File 'lib/unarm/unarm.rb', line 706 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_arm_ins", ins), method(:free_arm_ins)) if Unarm.symbols syms = Unarm.get_raw_syms(loc) @str = CStr.new(send(:"#{Unarm.cpu.to_s}_arm_ins_to_str_with_syms", @ptr, syms.ptr, syms.count, addr, 0)) else @str = CStr.new(send(:"#{Unarm.cpu.to_s}_arm_ins_to_str", @ptr)) end @arguments = Arguments.new(send(:"#{Unarm.cpu.to_s}_arm_ins_get_args", @ptr)) @opcode_id = send(:"#{Unarm.cpu.to_s}_arm_ins_get_opcode_id", @ptr) @conditional = arm_ins_is_conditional(@ptr) @data_op = arm_ins_is_data_operation(@ptr) @sets_flags = arm_ins_updates_condition_flags(@ptr) end |
Instance Method Details
#is_compare_operation? ⇒ Boolean Also known as: is_compare_op?
does opcode compare a register with another value?
726 727 728 |
# File 'lib/unarm/unarm.rb', line 726 def is_compare_operation? # does opcode compare a register with another value? [:cmn, :cmp, :teq, :tst].include? opcode end |