307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
# File 'lib/micro_cisc/compile/instruction.rb', line 307
def validate_reg(arg)
valid = arg.first == 0 && arg.last == 'reg'
valid = valid || ([1, 2, 3].include?(arg.first) && arg.last == 'mem')
valid = valid || (arg.first == 4 && arg.last == 'val')
valid = valid || ([1, 2, 3].include?(arg.first) && arg.last == 'reg')
if valid
reg = arg.first
reg += 4 if [1, 2, 3].include?(arg.first) && 'reg' == arg.last
reg
else
raise ArgumentError, "Invalid register: #{arg.first.to_s}.#{arg.last}"
end
end
|