rubyx/lib/slot_machine/macro/putstring.rb
Torsten 4bae5c418b fix register use in putstring
was off by one, the syscall is write 
and the first arg is file_descriptor
ie 1 == stdout
2020-03-26 11:24:56 +02:00

19 lines
625 B
Ruby

module SlotMachine
class Putstring < Macro
def to_risc(compiler)
builder = compiler.builder(compiler.source)
integer = builder.prepare_int_return # makes integer_tmp variable as return
word = Risc.syscall_reg(2).set_compiler(compiler)
length = Risc.syscall_reg(3).set_compiler(compiler)
builder.build do
string = message[:receiver].to_reg.known_type(:Word)
integer << string[:char_length]
word << string # into right
length << integer # registers
end
SlotMachine::Macro.emit_syscall( builder , :putstring )
compiler
end
end
end