Assembly 程序集-使用标签的jmp条件
在下一个代码中:Assembly 程序集-使用标签的jmp条件,assembly,x86,Assembly,X86,在下一个代码中: 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+选项卡],
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+选项卡],但是选项卡是什么
谢谢。选项卡
是一个包含跳转目标地址的表(F1
,F2
等),ebx*4
从该表中选择一个条目(通过添加到选项卡的地址,然后取消对该地址的引用),然后跳转到
因此,在您的示例中,如果EBX
是2,我们得到JMP[Tab+8]
,它变成JMP F2
,因为F2
的地址是从Tab
开始的8个字节Tab
是一个包含跳转目标地址的表(F1
,F2
等),ebx*4
从该表中选择一个条目(通过添加到选项卡的地址,然后取消对该地址的引用),然后跳转到
因此,在您的示例中,如果EBX
为2,我们得到JMP[Tab+8]
,它变成JMP F2
,因为F2
的地址是从Tab开始的8个字节,这称为“分支表”或“跳转表”。这称为“分支表”或“跳转表”。