2019-10-03 21:07:55 +03:00
|
|
|
module SlotMachine
|
2019-09-11 20:17:43 +03:00
|
|
|
class Putstring < Macro
|
2019-09-11 18:53:20 +03:00
|
|
|
def to_risc(compiler)
|
|
|
|
builder = compiler.builder(compiler.source)
|
2020-03-11 22:31:16 +02:00
|
|
|
integer = builder.prepare_int_return # makes integer_tmp variable as return
|
2020-03-16 17:31:14 +02:00
|
|
|
word = Risc.syscall_reg(1).set_compiler(compiler)
|
|
|
|
length = Risc.syscall_reg(2).set_compiler(compiler)
|
2019-09-11 18:53:20 +03:00
|
|
|
builder.build do
|
2020-03-16 17:31:14 +02:00
|
|
|
string = message[:receiver].to_reg.known_type(:Word)
|
|
|
|
integer << string[:char_length]
|
|
|
|
word << string # into right
|
|
|
|
length << integer # registers
|
2019-09-11 18:53:20 +03:00
|
|
|
end
|
2019-10-03 21:07:55 +03:00
|
|
|
SlotMachine::Macro.emit_syscall( builder , :putstring )
|
2019-09-11 18:53:20 +03:00
|
|
|
compiler
|
|
|
|
end
|
|
|
|
end
|
2019-08-12 13:16:15 +03:00
|
|
|
end
|