过程调用讨论题

上传人:二*** 文档编号:243726804 上传时间:2024-09-29 格式:PPT 页数:8 大小:171KB
返回 下载 相关 举报
过程调用讨论题_第1页
第1页 / 共8页
过程调用讨论题_第2页
第2页 / 共8页
过程调用讨论题_第3页
第3页 / 共8页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,有关“过程调用”的练习,假设,P,为调用过程,,Q,为被调用过程,程序在,IA-32,处理器上执行,以下有关过程调用的叙述中,错误的是( )。,A. C,语言程序中的函数调用就是过程调用,B.,从,P,传到,Q,的实参无需重新分配空间存放,C.,从,P,跳转到,Q,执行应使用,CALL,指令,D.,从,Q,跳回到,Q,执行应使用,RET,指令,有关“过程调用”的练习,假设,P,为调用过程,,Q,为被调用过程,程序在,IA-32,处理器上执行,以下是,C,语言程序中过程调用所涉及的操作:, 过程,Q,保存,P,的现场,并为非静态局部变量分配空间, 过程,P,将实参存放到,Q,能访问到的地方, 过程,P,将返回地址存放到特定处,并跳转到,Q,执行, 过程,Q,取出返回地址,并跳转回到过程,P,执行, 过程,Q,恢复,P,的现场,并释放局部变量所占空间, 执行过程,Q,的函数体,过程调用的正确执行步骤是( )。,A.,B.,C.,D.,以下是有关,IA-32,的过程调用的叙述,错误的是( )。,A.,在过程中通常先使用被调用者保存寄存器,B.,每个非叶子过程都有一个栈帧,其大小为,16B,的倍数,C. EBP,寄存器中的内容指向对应栈帧(,stack frame,)的底部,D.,每个栈帧底部单元中存放其调用过程的,EBP,内容,以下是有关,IA-32,的过程调用所使用的栈和栈帧的叙述,错误的是( )。,A.,每进行一次过程调用,用户栈从高地址向低地址增长出一个栈帧,B.,从被调用过程返回调用过程之前,被调用过程会释放自己的栈帧,C.,只能通过将栈指针,ESP,作为基址寄存器来访问用户栈中的数据,D.,过程嵌套调用深度越深,栈中栈帧个数越多,严重时会发生栈溢出,有关“过程调用”的练习,有关“过程调用”的练习,以下是有关,C,程序的变量作用域和生存期的叙述,错误的是( )。,A.,静态(,static,型)变量和非静态局部变量都分配在对应栈帧中,B.,因为非静态局部变量被分配在栈中,所以其作用域仅在过程体内,C.,非静态局部变量可以与全局变量同名,因为它们被分配在不同存储区,D.,不同函数中非静态局部变量可以同名,因为它们被分配在不同栈帧中,以下有关递归过程调用的叙述中,错误的是( )。,A.,每次递归调用都会额外执行多条指令,因而时间开销大,B.,每次递归调用都会生成一个新的栈帧,因而空间开销大,C.,每次递归调用在栈帧中保存的返回地址都不相同,D.,递归过程第一个参数的有效地址为,Rebp+8,有关“过程调用”的练习,以下是一个,C,语言程序代码:,int,add(int,x,int,y),return,x+y,;,int,caller( ),int,t1=100 ;,int,t2=200;,int,sum=add(t1, t2);,return sum;,以下关于上述程序代码在,IA-32,上执行的叙述中,错误的是( )。,A.,变量,t1,、,t2,和,sum,被分配在,caller,函数的栈帧中,B.,传递参数时,t2,和,t1,的值从高地址到低地址依次存入栈中,C.,入口参数,t1,和,t2,的值被分配在,add,函数的栈帧中,D. add,函数返回时返回值存放在,EAX,寄存器中,有关“过程调用”的,讨论,为什么以下程序输出结果是,x=-1217400844,而不是,x=100,?在你的机器上执行结果是什么?每次执行结果都一样吗?,反汇编后的机器级代码,如何支持你的分析?,int,x=100,;,void main ( ),int,x;,printf(,“,x,=%,dn,”, x),;,int,x=100,;,void main ( ),int,x=10;,printf(,“,x,=%,dn,”, x),;,int,x=100,;,void main ( ),static,int,x;,printf(,“,x,=%,dn,”, x),;,稍作修改后输出结果是什么?,以下是网上的一个帖子,请将程序的可执行文件反汇编(基于,IA-32,),,并对汇编代码进行分析以正确回答该贴中的问题。,该贴给出的结果是在,Linux,还是,Windows,上得到的?为什么?,有关“过程调用”的讨论,有关“过程调用”的讨论,以下是一段,C,语言代码:,#include ,main(),double a = 10;,printf(a,= %,dn, a);,在你的机器上执行结果是什么?,请根据汇编指令解释你的结果。,当,a,说明成,float,类型又怎样呢?,百度招聘题,如果改成以下代码,结果如何?,#include ,main(),int,a = 10;,printf(a,= %,fn, a);,在你的机器上执行结果是什么?,请根据汇编指令解释你的结果。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!