Sha256: d3524dd4333dd2839b92fb7ef062373e1ddbe19380ac6a9d0e64ad6c1ac65839

Contents?: true

Size: 984 Bytes

Versions: 1

Compression:

Stored size: 984 Bytes

Contents

require_relative 'hack_assembler/version'
require_relative 'hack_assembler/parser_error'
require_relative 'hack_assembler/a_instruction'
require_relative 'hack_assembler/computation_translator'
require_relative 'hack_assembler/destination_translator'
require_relative 'hack_assembler/jump_translator'
require_relative 'hack_assembler/c_instruction'
require_relative 'hack_assembler/assembler'
require_relative 'hack_assembler/symbol_table'

module HackAssembler
  def self.translate_file(input_file, output_file)
    source_file = File.open(input_file)
    source_code = source_file.read

    symbol_table = SymbolTable.new

    label_less_code = Assembler.scan_and_remove_labels(source_code, symbol_table)
    processed_source = Assembler.process_symbols(label_less_code, symbol_table)
    machine_code = Assembler.translate(processed_source)

    File.open(output_file, 'w') { |file| file.write(machine_code); file.close }

    source_file.close
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hack_assembler-0.2.0 lib/hack_assembler.rb