CALL和jmp近远调用的区别
2009-05-10 17:59
232 查看
1. 对于jmp的区别就是:一个是段内调用,一个是段间调用
2. 对于call则有很大的不同,因为call的调用会对栈产生影响:
(1)call的近调用不会改变使用的栈,但是栈的内容发生了变化:下一条指令被压入栈;如果有参数,参数被压入栈
(2)call的远调用会改变使用的栈,由于使用的栈发生变化,因此对于参数有一个拷贝的过程。
保存当前的ss和esp到被调用过程的栈中
拷贝参数
保存当前的cs和eip到被调用过程的栈中
2. 对于call则有很大的不同,因为call的调用会对栈产生影响:
(1)call的近调用不会改变使用的栈,但是栈的内容发生了变化:下一条指令被压入栈;如果有参数,参数被压入栈
(2)call的远调用会改变使用的栈,由于使用的栈发生变化,因此对于参数有一个拷贝的过程。
保存当前的ss和esp到被调用过程的栈中
拷贝参数
保存当前的cs和eip到被调用过程的栈中
相关文章推荐
- cdecl, stdcall, pascal,fastcall 调用约定区别
- CALL和JMP的区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- 函数调用的区别(__stdcall,__cdecl,__fastcall,thiscall,nake)
- oracle:exec和call调用procedure的区别
- 调用约定__stdcall,__cdecl,_cdecl,_stdcall,__fastcall,_fastcall 区别简介
- cdecl, stdcall, pascal,fastcall 调用约定区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- __cdecl,__fastcall, __stdcall 调用约定区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- Shellcode中ret调用和call调用函数区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- [转载]cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
- cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
- cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
- cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
- __cdecl、_stdcall 、_fastcall、_thiscall 函数调用方式与区别