call命令和ret命令来实现子模块调用
来源:互联网 发布:java自定义注解的作用 编辑:程序博客网 时间:2024/05/16 10:58
说到子模块调用,感觉有点抽象,简单说就是函数调用,从function1中调用function2的功能,如果用高级语言来实现很容易,相信每个有过编程经验的人也都很明白,那么汇编是怎么实现的呢?这就用到了call 命令,和ret命令;
从字面意思来理解,call 可以直观理解为调用,call function,也就是调用某个函数,那么ret命令呢,我觉得应该是return的简写,意思是返回,为啥叫返回,我们举个例子:
int main()
{
printf(sth.....);
fuction1();//调用函数
printf(sth);
}
function1()
{
do sth........
return ;
}
大家可以看到,function1的执行,我们就认为是call命令操作,当function1执行完毕以后,我们还想继续往下执行main函数的下一行代码,如果不从函数中跳转回来是不行的,这就是return的必须了,有人说我们有的是void,不用返回啊? 这里有个误区,void不是不返回,而是不返回任何数据类型,每一个函数都要返回他的入口地址,也就是调用函数的代码所在内存地址,这样cpu才能顺利的执行call函数之后的代码。
由此来说的话,其实call 和ret 就完成了汇编语言中的函数调用功能,是不是很简单呢? 当然高级语言可能没有类似的指令,但其函数思想是完全一致的,不管是面向对象还是面向过程,我们其实面向的都是数据类型的入口地址,在多个地址之间来回跳转腾挪,完成比较复杂的业务逻辑。 经过这些,我觉得基本的汇编调用 ,很多人应该是理解的了,水平有限,权当抛砖引玉,本人在进行深一步的研究。
- call命令和ret命令来实现子模块调用
- 汇编语言子程序调用call和ret
- 用call和ret实现子程序
- 十八、使用call和ret指令实现子程序的调用和返回
- Shellcode中ret调用和call调用函数区别
- 关于CALL和RET
- call和ret
- CALL和RET指令
- call和ret指令
- call 和 ret 指令
- CALL和RET指令
- 十九、用call和ret指令实现模块化程序设计
- 数据结构-子模块调用函数
- ret和call的原理
- 汇编语言--call和ret指令
- call指令和ret指令
- call和ret指令用法
- Android5.0 Settings各个子模块跳转和布局实现
- C语言文件操作
- 新手必读:PhoneGap入门六大问题
- IRP完成函数:IofCompleteRequest
- Darwin
- Mac OS
- call命令和ret命令来实现子模块调用
- iOS
- 泛C++开发: 如何用C++写跨平台应用
- 寒假之旅DRP
- SQL SERVER 开窗函数简介
- 源码公开的嵌入式实时操作系统T-Kernel
- 四个女人和一个男人
- 闲话操作系统
- POJ 1006 Biorhythms 中国剩余定理/扩展欧几里得