use arm shift at runtime

arm indexes are in bytes (x4) at compile time
but at runtime we only have the array indexes, iw word indexes
arm has the nice barrel shifter to save us an extra instruction
This commit is contained in:
Torsten Ruger
2015-11-19 12:48:13 +02:00
parent 4871a52d37
commit a8453c126d
2 changed files with 3 additions and 5 deletions

View File

@ -38,20 +38,18 @@ module Arm
end
def translate_GetSlot code
# times 4 because arm works in bytes, but vm in words
if(code.index.is_a? Numeric)
ArmMachine.ldr( code.register , code.array , arm_index(code) )
else
ArmMachine.ldr( code.register , code.array , code.index )
ArmMachine.ldr( code.register , code.array , code.index , :shift_lsl => 2 )
end
end
def translate_SetSlot code
# times 4 because arm works in bytes, but vm in words
if(code.index.is_a? Numeric)
ArmMachine.str( code.register , code.array , arm_index(code) )
else
ArmMachine.str( code.register , code.array , code.index )
ArmMachine.str( code.register , code.array , code.index , :shift_lsl => 2 )
end
end