finish syscall
works, even had to fix parfait bug to see
This commit is contained in:
@ -4,13 +4,14 @@ module Arm
|
||||
def run block
|
||||
block.codes.dup.each do |code|
|
||||
next unless code.is_a? Register::Syscall
|
||||
new_codes = []
|
||||
load = ArmMachine.ldr( :r1 , code.constant )
|
||||
|
||||
store = ArmMachine.str( code.register , code.array , code.index )
|
||||
raise "uups" unless code.name == :putstring
|
||||
new_codes = [ ArmMachine.mov( :r1 , 20 ) ]
|
||||
new_codes << ArmMachine.ldr( :r0 , Virtual::Slot::MESSAGE_REGISTER, Virtual::SELF_INDEX)
|
||||
new_codes << ArmMachine.mov( :r7 , 4 )
|
||||
new_codes << ArmMachine.swi( 0 )
|
||||
block.replace(code , new_codes )
|
||||
end
|
||||
end
|
||||
end
|
||||
Virtual.machine.add_pass "Arm::SetImplementation"
|
||||
Virtual.machine.add_pass "Arm::SyscallImplementation"
|
||||
end
|
||||
|
Reference in New Issue
Block a user