Class: Fisk::Registers::Temp

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

#works?

Methods included from OperandPredicates

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

Constructor Details

#initialize(name, type) ⇒ Temp

Returns a new instance of Temp.



135
136
137
138
139
140
141
# File 'lib/fisk.rb', line 135

def initialize name, type
  @name        = name
  @type        = type
  @start_point = nil
  @end_point   = nil
  @size        = compute_size(type)
end

Instance Attribute Details

#end_pointObject

Returns the value of attribute end_point.



133
134
135
# File 'lib/fisk.rb', line 133

def end_point
  @end_point
end

#nameObject (readonly)

Returns the value of attribute name.



132
133
134
# File 'lib/fisk.rb', line 132

def name
  @name
end

#registerObject

Returns the value of attribute register.



133
134
135
# File 'lib/fisk.rb', line 133

def register
  @register
end

#sizeObject (readonly)

Returns the value of attribute size.



132
133
134
# File 'lib/fisk.rb', line 132

def size
  @size
end

#start_pointObject

Returns the value of attribute start_point.



133
134
135
# File 'lib/fisk.rb', line 133

def start_point
  @start_point
end

#typeObject (readonly)

Returns the value of attribute type.



132
133
134
# File 'lib/fisk.rb', line 132

def type
  @type
end

Instance Method Details

#extended_register?Boolean

Returns:

  • (Boolean)


150
151
152
# File 'lib/fisk.rb', line 150

def extended_register?
  reg.extended_register?
end

#op_valueObject



146
147
148
# File 'lib/fisk.rb', line 146

def op_value
  reg.op_value
end

#regObject



166
167
168
169
170
171
172
# File 'lib/fisk.rb', line 166

def reg
  unless @register
    raise Errors::UnassignedRegister, "Temporary register #{name} hasn't been assigned a real register"
  end

  @register
end

#register?Boolean

Returns:

  • (Boolean)


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

def register?; true; end

#rex_valueObject



154
155
156
# File 'lib/fisk.rb', line 154

def rex_value
  reg.rex_value
end

#temp_register?Boolean

Returns:

  • (Boolean)


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

def temp_register?; true; end

#to_registerObject



162
163
164
# File 'lib/fisk.rb', line 162

def to_register
  self
end

#valueObject



158
159
160
# File 'lib/fisk.rb', line 158

def value
  reg.value
end