diff --git a/src/crab/arm/branch.cr b/src/crab/arm/branch.cr index ad8b42d..bf26d15 100644 --- a/src/crab/arm/branch.cr +++ b/src/crab/arm/branch.cr @@ -2,8 +2,7 @@ module ARM def arm_branch(instr : Word) : Nil link = bit?(instr, 24) offset = instr & 0xFFFFFF - offset = (~offset &+ 1).to_i32 if bit?(offset, 23) # negative - offset <<= 2 + offset = (offset << 8).to_i32! >> 6 @r[14] = @r[15] - 4 if link @r[15] &+= offset clear_pipeline