64位arm函数内跳转

ios开发 myhloli 6734次浏览 已收录 9个评论

64位arm内函数的跳转

向下跳转

前8位0101 0100与末尾位的0或1决定是BEQ还是BNE
中间的20位中,舍弃最高位,剩余24位的值乘2为当前地址向下跳转的距离
例如

向下跳转

5 4 0 0 0 0 C 0
0101 0100 0000 0000 0000 0000 1100 0000
=BEQ 0x18
54+末尾的0=BEQ
0x18=(0xC)*2
5 4 0 0 0 2 E 1
0101 0100 0000 0000 0000 0010 1110 0001
=BNE 0x5C
54+末尾的1=BNE
0x5C=(0x2E)*2

向上跳转

前8位0101 0100与末尾的0或1决定是BEQ或是BNE
中间的20位中,舍弃最高位,剩余的24位的补码的值乘2位当前地址向上跳转的距离
例如

向上跳转
5 4 F F F F 6 1
0101 0100 1111 1111 1111 1111 0110 0001
=BNE 0x14(向上)
111 1111 1111 1111 0110的补码是000 0000 0000 0000 1001+1=0x9+1=0xA
0x14=(0xA)*2

 

 

  萝莉社,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://myhloli.com/asm-ben-and-beq-in-arm64.html
喜欢 (49)
加载中……