rubyx/lib/arm/instructions/instruction.rb
Torsten Ruger ce3cc72f9e move all position setting into position
Position and subclasses handle the logic, external to
the classes, so it can be swapped out later
(at runtime positions can’t change)
2018-05-07 22:30:43 +03:00

31 lines
772 B
Ruby

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 insert(instruction)
super
my_pos = Risc::Position.get(self)
Risc::Position.set( my_pos + self.byte_length , 0 , my_pos.binary)
end
end
end