mor on sys call implementation
This commit is contained in:
@ -4,7 +4,7 @@ module Arm
|
||||
def run block
|
||||
block.codes.dup.each do |code|
|
||||
next unless code.is_a? Register::GetSlot
|
||||
load = ArmMachine.ldr( code.value , code.reference , code.index )
|
||||
load = ArmMachine.ldr( code.register , code.array , code.index )
|
||||
block.replace(code , load )
|
||||
end
|
||||
end
|
||||
|
@ -4,7 +4,7 @@ module Arm
|
||||
def run block
|
||||
block.codes.dup.each do |code|
|
||||
next unless code.is_a? Register::SetSlot
|
||||
store = ArmMachine.str( code.value , code.reference , code.index )
|
||||
store = ArmMachine.str( code.register , code.array , code.index )
|
||||
block.replace(code , store )
|
||||
end
|
||||
end
|
||||
|
16
lib/arm/passes/syscall_implementation.rb
Normal file
16
lib/arm/passes/syscall_implementation.rb
Normal file
@ -0,0 +1,16 @@
|
||||
module Arm
|
||||
|
||||
class SyscallImplementation
|
||||
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 )
|
||||
block.replace(code , new_codes )
|
||||
end
|
||||
end
|
||||
end
|
||||
Virtual.machine.add_pass "Arm::SetImplementation"
|
||||
end
|
Reference in New Issue
Block a user