如何在裝配中進行十六進制偏移計算 (how to do hex offset calculation in assembly)


問題描述

如何在裝配中進行十六進制偏移計算 (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 yan500 ‑ Internal Server Error)

參考文件

  1. how to do hex offset calculation in assembly (CC BY‑SA 2.5/3.0/4.0)

#offset #assembly #hex






相關問題

ASM 使用代碼查找偏移量 (ASM find offset with code)

沒有在偏移量 0 處映射 Win32 便攜式可執行文件的可能原因是什麼? (What are possible reasons for not mapping Win32 Portable Executable images at offset 0?)

Адлюстраванне тоста з зададзеным зрушэннем (Displaying toast at a given offset)

c - 刪除前 4 個字節的數據 (c - remove first 4 bytes of data)

PCM 樣本位置 [字節偏移] 在 flac (PCM sample position [byte offset] in flac)

到達 (window).scroll 上的中間元素 (Reach middle element on (window).scroll)

插入新元素時“LIMIT OFFSET”是否穩定? (Is 'LIMIT OFFSET' stable when new element inserted?)

如何從包含 Oracle 中時區偏移的日期/時間字符串中獲取 UTC 日期/時間 (How to get UTC date/time from a date/time string that contains timezone offset in Oracle)

嚴重性:警告消息:非法字符串偏移 'id' MY OWN PROJECT (Severity: Warning Message: Illegal string offset 'id' MY OWN PROJECT)

jquery 獲取和設置文檔偏移量(或位置?) (jquery get and set document offset (or position?))

在地址位移內還是在地址位移外相乘更有效? (Is it more efficient to multiply within the address displacement or outside it?)

如何在裝配中進行十六進制偏移計算 (how to do hex offset calculation in assembly)







留言討論