Class: Fisk::Registers::Register

Inherits:
Operand
  • Object
show all
Includes:
OperandSize
Defined in:
lib/fisk.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from OperandSize

#compute_size

Methods inherited from Operand

#rex_value

Methods included from OperandPredicates

#absolute_location?, #immediate?, #memory?, #rip?, #temp_register?, #unresolved?

Constructor Details

#initialize(name, type, value) ⇒ Register

Returns a new instance of Register.



70
71
72
73
74
75
# File 'lib/fisk.rb', line 70

def initialize name, type, value
  @name = name
  @type = type
  @value = value
  @size = compute_size(type)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



68
69
70
# File 'lib/fisk.rb', line 68

def name
  @name
end

#sizeObject (readonly)

Returns the value of attribute size.



68
69
70
# File 'lib/fisk.rb', line 68

def size
  @size
end

#typeObject (readonly)

Returns the value of attribute type.



68
69
70
# File 'lib/fisk.rb', line 68

def type
  @type
end

#valueObject (readonly)

Returns the value of attribute value.



68
69
70
# File 'lib/fisk.rb', line 68

def value
  @value
end

Instance Method Details

#extended_register?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/fisk.rb', line 86

def extended_register?
  @value > 7 || EXTENDED_R8.include?(self)
end

#integer?Boolean

Returns:

  • (Boolean)


92
# File 'lib/fisk.rb', line 92

def integer?; false; end

#op_valueObject



82
83
84
# File 'lib/fisk.rb', line 82

def op_value
  value
end

#register?Boolean

Returns:

  • (Boolean)


90
# File 'lib/fisk.rb', line 90

def register?; true; end

#to_iObject



94
# File 'lib/fisk.rb', line 94

def to_i; @value; end

#to_registerObject



96
97
98
# File 'lib/fisk.rb', line 96

def to_register
  self
end

#works?(op) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
# File 'lib/fisk.rb', line 77

def works? op
  type = op.type
  type == self.name || type == self.type
end