問題描述
如何在裝配中進行十六進制偏移計算 (how to do hex offset calculation in assembly)
據我了解,0x11(sp) 表示 sp 的當前內存位置加 11。例如,如果 sp 的當前內存地址為 43ec,則 0x11(sp) 表示 43ec+11=43fd。但是當我從內存轉儲中計數時,它實際上在偏移量 17 處。任何人都可以向我解釋一下。isnt 0x11(sp) 表示 sp 的偏移量 11?
assembly code:
4574: b012 f845 call #0x45f8 <puts>
4578: f190 3800 1100 cmp.b #0x38, 0x11(sp)
457e: 0624 jeq #0x458c <login+0x60>
memeory dump:
sp
43e0: 0300 1c46 0000 0a00 0000 7845 4141 4141 ...F......xEAAAA
43f0: 4141 4141 4141 4141 4141 4141 4138 0044 AAAAAAAAAAAAA8.D
sp+11
參考解法
方法 1:
Decimal:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
Hexadecimal:
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...
(by zifan yan、500 ‑ Internal Server Error)