Class: Fisk::UnresolvedRIPInstruction
Instance Method Summary
collapse
#comment?, #has_temp_registers?, #jump?, #label?, #lazy?
Constructor Details
402
403
404
405
406
407
408
|
# File 'lib/fisk.rb', line 402
def initialize insn, form, operands
@insn = insn
@form = form
@operands = operands
@retry = false
@saved_pos = 0
end
|
Instance Method Details
#encode(buffer, labels) ⇒ Object
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
# File 'lib/fisk.rb', line 412
def encode buffer, labels
operands = @operands.map do |op|
if op.rip? && op.unresolved?
if labels.key?(op.displacement.name)
Registers::Rip.new labels[op.displacement.name] - @saved_pos
else
Registers::Rip.new 0x0CAFE
end
else
op
end
end
@form.encodings.first.encode buffer, operands
@saved_pos = buffer.pos
end
|
#retry? ⇒ Boolean
410
|
# File 'lib/fisk.rb', line 410
def retry?; true; end
|