2015-05-03 101 views
-3

我正在嘗試反彙編Hex「8B EC」。反彙編器給我mov ebp, esp在x86反彙編中「EC」的含義

  • 「8B」 - MOV指令;
  • 「EC」 - ???;

反彙編程序如何知道「EC」是ebp, esp

+4

這就是所謂的「ModR/M」字節。它在[Intel架構手冊](https://www-ssl.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)的第2A卷中有記載。看看[這個問題](https://stackoverflow.com/questions/3829602/hex-values-of-registers-x86?lq=1)有幫助。 – DCoder

+1

反彙編器的知道方式與執行CPU的知道方式完全相同 - 該字節包含兩個3位寄存器代碼和按體系結構定義的某種方式打包的2位尋址模式。 – Notlikethat

回答

3

EC不是特別的ebp, esp,它可能意味着各種事情取決於它前面的操作碼。

這可能意味着

  • /5 esp(例如,在83 EC 10 sub esp, 16
  • esp, ebp(例如,在89 EC mov esp, ebp
  • ebp, esp(例如,在8B EC mov ebp, esp
  • ah, ch(例如,在00 EC add ah, ch
  • ch, ah(for例如,在02 EC add ch, ah
  • mm5, mm4(例如,在0F FC EC paddb mm5, mm4
  • xmm5, xmm4(例如,在66 0F FC EC paddb xmm5, xmm4
  • sp, gs(例如,在8C EC mov sp, gs
  • gs, sp(例如,在8E EC mov gs, sp
  • st, st(4)(例如在DB EC fucomi st, st(4)中)
  • st(4), st(例如在中)

實際上還有更多。所以,我建議不要單獨爲ModRM指定太多的含義,它的操作碼(和前綴)非常重要。