难以理解不同类型的调用语句

3 assembly reverse-engineering

考虑到以下类型的CALL语句,我无法清楚地理解其中的差异.

CALL EAX
Run Code Online (Sandbox Code Playgroud)

CALL DWORD PTR[EAX]
Run Code Online (Sandbox Code Playgroud)

Xeo*_*Xeo 7

CALL EAX
Run Code Online (Sandbox Code Playgroud)

会打电话给任何地址eax.如果eax直接存储函数地址,这是正确的方法.

CALL DWORD PTR[EAX]
Run Code Online (Sandbox Code Playgroud)

首先取消引用任何地址eax并跳转到结果.如果eax存储函数指针,这是正确的方法.


fre*_*low 6

第一种形式调用其地址存储在eax中的函数.

第二个调用函数,其地址存储在内存位置,其地址依次存储在eax中(这只是一个间接级别).