如何在汇编中进行十六进制偏移计算
how to do hex offset calculation in assembly
据我理解,0x11(sp)表示sp的当前内存位置加11。
例如,如果 sp 的当前内存地址为 43ec,则 0x11(sp) 表示 43ec+11=43fd。但是当我从内存转储中计算时,它实际上位于偏移量 17。谁能给我解释一下。不是 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
十进制:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
十六进制:
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...
据我理解,0x11(sp)表示sp的当前内存位置加11。 例如,如果 sp 的当前内存地址为 43ec,则 0x11(sp) 表示 43ec+11=43fd。但是当我从内存转储中计算时,它实际上位于偏移量 17。谁能给我解释一下。不是 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
十进制:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
十六进制:
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...