class Fisk::UnresolvedRIPInstruction

Public Class Methods

new(insn, form, operands) click to toggle source
# File lib/fisk.rb, line 330
def initialize insn, form, operands
  @insn      = insn
  @form      = form
  @operands  = operands
  @retry     = false
end

Public Instance Methods

encode(buffer, labels) click to toggle source
# File lib/fisk.rb, line 339
def encode buffer, labels
  # Use dummy values for any unresolvable operands
  operands = @operands.map do |op|
    if op.rip? && op.unresolved?
      # Try resolving the operands
      if labels.key?(op.displacement.name)
        Registers::Rip.new labels[op.displacement.name]
      else
        Registers::Rip.new 0x0CAFE
      end
    else
      op
    end
  end

  @form.encodings.first.encode buffer, operands
end
retry?() click to toggle source
# File lib/fisk.rb, line 337
def retry?; true; end