我遇到下面的一段代碼: 十六進制表示很奇怪
我知道系統中六的作品,我認爲這是一個32位處理器(它如果我沒記錯意味着每個存儲器地址的長度應該是32位,每個命令也應該是32位)。 如果是這樣的話,8048384的命令長度是多長(7 * 2 * 4)?一般來說,這裏大多數命令的長度似乎很奇怪。 我錯過了什麼嗎?如果這是一款64位處理器,它會有意義嗎?
我希望我對ASM的理解是正確的,我不只是錯過了一個基本概念。
謝謝大家提前:)
我遇到下面的一段代碼: 十六進制表示很奇怪
我知道系統中六的作品,我認爲這是一個32位處理器(它如果我沒記錯意味着每個存儲器地址的長度應該是32位,每個命令也應該是32位)。 如果是這樣的話,8048384的命令長度是多長(7 * 2 * 4)?一般來說,這裏大多數命令的長度似乎很奇怪。 我錯過了什麼嗎?如果這是一款64位處理器,它會有意義嗎?
我希望我對ASM的理解是正確的,我不只是錯過了一個基本概念。
謝謝大家提前:)
你有沒有什麼看起來像一個32位Intel處理器的代碼,就像你說的。英特爾IA32指令集具有可變長度的指令,如您在此處所見。在這方面,64位英特爾處理器(x86_64)類似。
如果您習慣於只使用一個指令長度的處理器(例如MIPS),反彙編英特爾程序肯定會看起來很奇怪。不過,這些處理器是如何設計的。
還有其他架構可以安裝在圍欄的兩側,甚至是兩側。例如,ARM的ARM指令集僅具有32位指令,但ARM Thumb和Thumb2指令集均具有16位和32位指令。英特爾只是在指令長度的地圖上。
通過閱讀Intel Software Developer’s Manuals的第2卷,您可以瞭解有關英特爾指令集的更多信息。
如果存在超過32位(56位)的指令,爲什麼這看起來像32位處理器?
有些是數據
C7 O4 24 84 84 04 08
C7 04 24的指令?
84 84 04 08爲$ 0x8048484向後,數值數據
像dw65534是FF FE但打印向後作爲FE FF
另一種可能的混淆是:「存儲器地址的長度」是一個字節,8位。 –
這是一個x86處理器。它具有可變長度指令,很容易從第二列的字節看到。 –
x86指令的長度可以是1到15之間的任何值。 – harold