您的位置:首页 > 其它

ARM 指令笔记

2015-11-25 10:39 239 查看
thumb BL指令计算

$s = 0x0019940A
$d = 0x0018D7C4
$offset = ($d-$s-4)/2
$low = $offset << (64-11) >> (64-11)
$hi = $offset << (64-22) >> (64-11)
$c1 = $hi + 0xF000
$c2 = $low + 0xF800
$code = $c1 | ($c2<<16)


例子

.text:0019940A F4 F7 DB F9                    BL      GetStrFromInt
.text:0018D7C4                                EXPORT GetStrFromInt


用公式计算得到

$s = 0x0019940A
0x0019940A
$d = 0x0018D7C4
0x0018D7C4
$offset = ( $d - $s - 4 ) / 2
$offset = ( 0xFFFF43BA - 4 ) / 2
$offset = 0xFFFF43B6 / 2
$offset = 0xFFFFA1DB
0xFFFFA1DB
$low = $offset << ( 64 - 11 ) >> ( 64 - 11 )
$low = $offset << 53 >> ( 64 - 11 )
$low = $offset << 53 >> 53
$low = 0x00000000 >> 53
$low = 0x000001DB
0x000001DB
$hi = $offset << ( 64 - 22 ) >> ( 64 - 11 )
$hi = $offset << 42 >> ( 64 - 11 )
$hi = $offset << 42 >> 53
$hi = 0x00000000 >> 53
$hi = 0x000007F4
0x000007F4
$c1 = $hi + 0x0000F000
$c1 = 0x0000F7F4
0x0000F7F4
$c2 = $low + 0x0000F800
$c2 = 0x0000F9DB
0x0000F9DB
$code = $c1 | ( $c2 << 16 )
$code = $c1 | 0xF9DB0000
$code = 0xF9DBF7F4
0xF9DBF7F4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: