mirror of
https://github.com/mattrberry/crab.git
synced 2025-01-17 06:11:52 +01:00
simplify register rotates a little bit
This commit is contained in:
parent
655bd67855
commit
b8a7fc1428
1 changed files with 4 additions and 5 deletions
|
@ -72,14 +72,13 @@ module ARM
|
||||||
def rotate_register(instr : Word, carry_out : Pointer(Bool), allow_register_shifts : Bool) : Word
|
def rotate_register(instr : Word, carry_out : Pointer(Bool), allow_register_shifts : Bool) : Word
|
||||||
reg = bits(instr, 0..3)
|
reg = bits(instr, 0..3)
|
||||||
shift_type = bits(instr, 5..6)
|
shift_type = bits(instr, 5..6)
|
||||||
if allow_register_shifts && bit?(instr, 4)
|
immediate = !(allow_register_shifts && bit?(instr, 4))
|
||||||
|
if immediate
|
||||||
|
shift_amount = bits(instr, 7..11)
|
||||||
|
else
|
||||||
shift_register = bits(instr, 8..11)
|
shift_register = bits(instr, 8..11)
|
||||||
# todo weird logic if bottom byte of reg > 31
|
# todo weird logic if bottom byte of reg > 31
|
||||||
shift_amount = @r[shift_register] & 0xFF
|
shift_amount = @r[shift_register] & 0xFF
|
||||||
immediate = false
|
|
||||||
else
|
|
||||||
shift_amount = bits(instr, 7..11)
|
|
||||||
immediate = true
|
|
||||||
end
|
end
|
||||||
case shift_type
|
case shift_type
|
||||||
when 0b00 then lsl(@r[reg], shift_amount, carry_out)
|
when 0b00 then lsl(@r[reg], shift_amount, carry_out)
|
||||||
|
|
Loading…
Reference in a new issue