Method: MicroCisc::Compile::Instruction#validate_dest

Defined in:
lib/micro_cisc/compile/instruction.rb

#validate_dest(arg) ⇒ Object



322
323
324
325
326
327
328
329
330
331
332
333
# File 'lib/micro_cisc/compile/instruction.rb', line 322

def validate_dest(arg)
  valid = arg.last == 'mem' && [1, 2, 3].include?(arg.first)
  valid = valid || (arg.last == 'reg' && [0, 4, 1, 2, 3].include?(arg.first))

  if valid
    reg = arg.first
    reg += 4 if [1, 2, 3].include?(arg.first) && arg.last == 'reg'
    reg
  else
    raise ArgumentError, "Invalid destination: #{arg.first.to_s}.#{arg.last}"
  end
end