Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 程序集-使用标签的jmp条件_Assembly_X86 - Fatal编程技术网

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个字节,这称为“分支表”或“跳转表”。这称为“分支表”或“跳转表”。