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_Gdb_Disassembly - Fatal编程技术网

Assembly 汇编jmp内存表达式

Assembly 汇编jmp内存表达式,assembly,gdb,disassembly,Assembly,Gdb,Disassembly,我正在为一个项目做准备,我遇到了以下几行 jmp *0x80498c0(,%eax,4) 跳转指令到底想做什么? 这是在gdb环境中 谢谢请参见“引用内存:部分” 32位寻址如下所示(AT&T格式) immed32(基指针、索引指针、索引刻度) 这被转换为地址处的值,由 immed32+basepointer+indexpointer*indexscale 例如,要处理一个[i],其中“a”是一个整数数组,您可以 (%eax,%ebx,4) 这样eax寄存器保存a的基指针,ebx具有索引i。这

我正在为一个项目做准备,我遇到了以下几行

jmp *0x80498c0(,%eax,4)
跳转指令到底想做什么? 这是在gdb环境中

谢谢

请参见“引用内存:部分”
32位寻址如下所示(AT&T格式)

immed32(基指针、索引指针、索引刻度)

这被转换为地址处的值,由

immed32+basepointer+indexpointer*indexscale

例如,要处理一个[i],其中“a”是一个整数数组,您可以

(%eax,%ebx,4)


这样eax寄存器保存a的基指针,ebx具有索引i。

这是一个间接跳转

该指令计算位置
[0x80498c0+eax*4]
,加载存储在那里的值并跳转到此位置存储的地址

这类代码在跳转表中非常常见,通常在C
开关
指令或等效指令之后


编辑:
*
特定于AT&T语法。它是一个用于取消引用的助记符,就像在C中一样。如果大括号中的部分丢失,则需要使用它-
jmp 0x80498c0
将直接跳转到此地址,其中
jmp*0x80498c0
跳转到存储在0x80498c0中的指针的目标。

您能在这里总结一下您链接到的页面中适用于OP问题的部分吗?我现在有点理解了,但立即数之前的星号(*)是什么意思?