putstring unfolds length

which means sys call doesn’t need to
and also interpreter sometimes gets a symbol length
This commit is contained in:
Torsten Ruger
2015-11-16 18:03:29 +02:00
parent f92ea36fe5
commit 303b7eb1f8
3 changed files with 14 additions and 4 deletions

View File

@ -128,14 +128,13 @@ module Arm
end
def putstring int_code
codes = ArmMachine.ldr( :r2 , :r1 , 8 ) # String length
codes.append ArmMachine.add( :r1 , :r1 , 12 ) # adjust for object header
codes = ArmMachine.add( :r1 , :r1 , 12 ) # adjust for object header
codes.append ArmMachine.mov( :r0 , 1 ) # write to stdout == 1
syscall(int_code , codes )
end
def exit int_code
codes = Register::Label.new(nil , "exit")
codes = ArmMachine.ldr( :r0 , :r0 , arm_index(Register.resolve_index(:Message , :return_value)) )
syscall int_code , codes
end