Module: HackAssembler::ComputationTranslator

Defined in:
lib/hack_assembler/computation_translator.rb

Class Method Summary collapse

Class Method Details

.translate(computation) ⇒ Object

Raises:



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/hack_assembler/computation_translator.rb', line 3

def self.translate(computation)
  a_or_m_register = '0'
  if computation.include? 'M'
    a_or_m_register = '1'
  end

  generic_computation = computation.gsub(/X/, '$').gsub(/(A|M)/, 'X')

  operation_bytecode = @@translation_table[generic_computation]
  raise ParserError if operation_bytecode.nil?

  bytecode = a_or_m_register + operation_bytecode

  bytecode
end