Class: LadderDrive::Asm

Inherits:
Object
  • Object
show all
Defined in:
lib/ladder_drive/asm.rb

Constant Summary collapse

LITTLE_ENDIAN =
0
BIG_ENDIAN =
1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, endian = nil) ⇒ Asm

Returns a new instance of Asm.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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

Instance Attribute Details

#codesObject (readonly)

Returns the value of attribute codes.



28
29
30
# File 'lib/ladder_drive/asm.rb', line 28

def codes
  @codes
end

#endianObject (readonly)

Returns the value of attribute endian.



29
30
31
# File 'lib/ladder_drive/asm.rb', line 29

def endian
  @endian
end

Instance Method Details

#dumpObject



51
52
53
54
55
# File 'lib/ladder_drive/asm.rb', line 51

def dump
  @codes.map do |c|
    c.to_s(16).rjust(2, "0")
  end
end

#dump_lineObject



57
58
59
60
61
62
# 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