猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
有了解“汇编call”的命令解析是什么的大佬吗??
使用汇编语言中的call命令 ,伴随着一些内容的入栈,那么,入栈的都是一些什么内容呢?它们入栈的顺序是什么样的?
小唯快跑啊
浏览 122
回答 1
1回答
暮色呼如
不同的CPU可能有不同的规定。下面只说常见的简单CPU的指令。常见的CPU的CALL指令(“调用”指令)的功能,就是以下两点:(1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈,(2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序)。而子程序结尾处通常都要编写一条RET指令(“返回”指令),RET指令的功能就是一条:从栈中取出一条数据送入PC。从上面叙述可以看出,正常情况下,RET指令从栈中取出的一条数据,也就是当初被CALL指令所入栈的下一条指令的所在地址。因此,RET指令后,CPU的下一条指令就回去执行当初的CALL指令的下一条了。至于其他操作,如sweetsugar123兄所说的“保护寄存器现场”等等,一般并非CALL指令的功能,而是需要程序员自行在子程序内编写程序实现的。这些操作通常也需要用到堆栈。基于堆栈的“后进先出”性质,这些操作可以不干扰CALL和RET指令的“保存返回地址”的功能。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续