class LadderDrive::Asm

Constants

BIG_ENDIAN
LITTLE_ENDIAN

Attributes

codes[R]
endian[R]

Public Class Methods

new(source, endian = nil) click to toggle source
# File lib/ladder_drive/asm.rb, line 34
def initialize source, endian = nil
  @endian = endian || BIG_ENDIAN
  @lines = []
  line_no = 1
  address = 0
  source.each_line do |line|
    begin
      @lines << AsmLine.new(line, address, @endian)
      address = @lines.last.next_address
      line_no += 1
    rescue SyntaxError => e
      puts "#{e.class}: line:#{line_no}; #{line.chomp}; #{e.to_s} "
      throw
    end
  end
end

Public Instance Methods

dump() click to toggle source
# File lib/ladder_drive/asm.rb, line 51
def dump
  @codes.map do |c|
    c.to_s(16).rjust(2, "0")
  end
end
dump_line() click to toggle source
# File lib/ladder_drive/asm.rb, line 57
def dump_line
  @lines.map do |line|
    "#{line.address.to_s(16).rjust(4, "0")} #{line.dump_line}"
  end
  .join("\n") << "\n"
end

Private Instance Methods

parse(line) click to toggle source
# File lib/ladder_drive/asm.rb, line 72
def parse line
  @lines << AsmLine.new(line)
end