2012-02-19 39 views
0

在下面的代碼:大會 - JMP條件使用標籤

Gloat: mov eax, 0 
      jmp [(ebx*4)+Tab] 
    Tab: dd F4 
      dd F3 
      dd F2 
      dd F1 
    F1: add eax, 4 
    F2: add eax, 4 
    F3: add eax, 4 
    F4: ret 

我不明白的[(ebx*4)+Tab]什麼意思。例如,如果ebx包含2,我會得到什麼jmp條件? jmp [8+Tab],但是什麼是Tab

謝謝。

+1

這被稱爲「分支表」或「跳轉表」。 – ninjalj 2012-02-19 09:16:43

回答

4

Tab是保持所述跳轉目標(F1F2等)的地址的表,選擇ebx * 4從該表中的條目(通過添加到Tab地址,然後解引用該地址),然後將其上升到。

因此,在你的榜樣,如果EBX是2,我們得到JMP [Tab + 8]成爲JMP F2,因爲F2地址是從Tab開始8個字節。