diff --git a/lib/register/return_implementation.rb b/lib/register/return_implementation.rb index 16d3aad7..f6b4895c 100644 --- a/lib/register/return_implementation.rb +++ b/lib/register/return_implementation.rb @@ -3,8 +3,12 @@ module Register def run block block.codes.dup.each do |code| next unless code.is_a? Virtual::MethodReturn -# call = RegisterMachine.instance.call( code.method ) - block.replace(code , [] ) + to = RegisterReference.new(:r0) + tmp = RegisterReference.new(:r5) + pc = RegisterReference.new(:pc) + move1 = RegisterMachine.instance.ldr( to , tmp , 3 ) #TODO 3 == return reg, needs constant / layout + move2 = RegisterMachine.instance.ldr( pc , tmp ) + block.replace(code , [move1,move2] ) end end end