give arm own instruction base class back
This commit is contained in:
35
lib/arm/instructions/instruction.rb
Normal file
35
lib/arm/instructions/instruction.rb
Normal file
@ -0,0 +1,35 @@
|
||||
require "util/list"
|
||||
module Arm
|
||||
# Arm instruction base class
|
||||
# Mostly linked list functionality that all instructions have
|
||||
class Instruction
|
||||
include Constants
|
||||
include Attributed
|
||||
include Util::List
|
||||
|
||||
def initialize( source , nekst = nil )
|
||||
@source = source
|
||||
@next = nekst
|
||||
return unless source
|
||||
raise "Source must be string or Instruction, not #{source.class}" unless source.is_a?(String) or source.is_a?(Mom::Instruction)
|
||||
end
|
||||
attr_reader :source
|
||||
|
||||
def total_byte_length
|
||||
ret = 0
|
||||
self.each{|ins| ret += ins.byte_length}
|
||||
ret
|
||||
end
|
||||
|
||||
def set_position( position )
|
||||
Positioned.set_position(self,position)
|
||||
position += byte_length
|
||||
if self.next
|
||||
self.next.set_position( position )
|
||||
else
|
||||
position
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user