rubyx/lib/arm/instructions/instruction.rb
Torsten Ruger c2d450f779 fold position module and object position
simpler that way, aslo code is moving to listners
2018-06-02 21:59:41 +03:00

32 lines
821 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)
# set my position to set next according to rules
Risc::InstructionListener.init(instruction , my_pos.get_code)
end
end
end