编译原理科目分析和解题方法.docx
《编译原理科目分析和解题方法.docx》由会员分享,可在线阅读,更多相关《编译原理科目分析和解题方法.docx(3页珍藏版)》请在三一办公上搜索。
1、编译原理科目分析和解题方法(转贴)编译原理科目分析和解题方法(转贴)初步了解编译原理考研的朋友很多都是计算机专业高年级(或者同等水平)的学生,对于编程已经不再陌生,甚至我们很多人都要把它作为一门安身立命的技术。这里先给大家出一个很小的题目,它不是考研试题,而是一个公司在一次招聘时出的考试题目,很有意思,题目是这样的:以DOS为操作系统,使用C语言,编写一个函数,功能是取得当时的BP寄存器的值,只能使用标准的C语句(也就是不能使用扩充的宏等其他手段如果大家在面试的时候遇到这道题目,头脑中能够马上反应出这到底考的是什么吗?这里实际上考的是编译程序的存储组织。下面我们简单分析一下该题。我们知道C语言
2、是栈式存储分配,局部变量的分配和参数传递都是通过栈来完成的,在调用函数的时候,首先把被调函数的参数从右向左依次压入栈,再把返向地址压入栈,然后转入被调函数内部,进入被调函数以后,首先执行固定的两条指令:PUSHBPMOVEBP,SP这样,通过BP寄存器,加上或者减去一定的偏移量,就可以对传递来的参数和函数内新分配的局部变量进行寻址了。到这里,我们就找到答案了,这个题目所要求的函数内不需要做任何实际的工作,只需要声明一个整数类型的变量,那么显然这个变量就在栈顶,而它的下面的两个字节保存的就是在调用这个函数之前BP寄存器的值(也就是上面说的指令PUSHBP所保存的内容),将这个值返回就可以了,也就
3、是把这个整型变量的地址加2后的内容返回即可。这里举这个小例子就是为了说明编译原理对于编程的重要性,它可以帮助我们更深刻地理解程序运行时内部的机制。编译原理科目分析和解题方法(2)2002年11月22日11:34:12网易教育前沿考试研究室这里我们回顾一下我们学习编程的历程:最初通常是学习一门高级语言,比如C或者PaSCa1,这样就掌握了编写一些简单程序的方法;然后又学习了数据结构,这是一门非常重要的课程,学习了数据结构,我们的头脑中建立了“算法”的概念,对编程有了更深的理解,遇到问题的时候,我们知道应该寻找相应的数据结构模型,设计适当的算法来解决问题;此外,我们通常还要学习汇编语言,尽管大多数
4、人并不会在实际中用汇编语言来进行开发,但实际上,这门课程是我们真正深入了解计算机内部的第一门课程。通过学习汇编语言,我们知道了每一条指令是如何在计算机内部运行的。而此时,我们已经可以编写很多程序了,但是我们还不知道高级语言最终是如何成为汇编语言,甚至机器语言的,这时,编译原理课程就可以帮助我们了解高级语言变成汇编语言的过程。更进一步,要想了解高级语言是如何变为机器语言,以及如何在CPU内部运行的,就要通过计算机组成原理的课程的学习了。这样,我们就可以清楚地认识到编译原理在计算机学科中所处的重要位置了。同时,我们也可以看出,它的复杂性和学习的难度都是很大的。1编译原理不好学编译原理课程的一个明显
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 科目 分析 解题 方法

链接地址:https://www.31ppt.com/p-6915360.html