CPU-x86_64-InstructionWriter

 view release on metacpan or  search on metacpan

lib/CPU/x86_64/InstructionWriter/RipRelative.pm  view on Meta::CPAN

package CPU::x86_64::InstructionWriter::RipRelative;
our $VERSION = '0.005'; # VERSION
use strict;
use warnings;
use Carp;
use Scalar::Util 'weaken';

# ABSTRACT: Object representing an offset to a label


sub instruction { weaken($_[0]{instruction}= $_[1]) if @_ > 1; $_[0]{instruction} }
sub target { @_ > 1 && carp "Read-only"; $_[0]{target} }
sub name  { 'rip-to-' . $_[0]{target}->name }
sub value {
	my $self= shift;
	if (($self->instruction->relative_to||0) == ($self->target->relative_to||0)) {
		my $rip_ofs= $self->instruction->offset + $self->instruction->len;
		my $label_ofs= $self->target->offset;
		return defined $label_ofs? $label_ofs - $rip_ofs : undef;
	} else {
		my $start= $self->instruction->relative_to->value;



( run in 0.760 second using v1.01-cache-2.11-cpan-65fba6d93b7 )