计算机导论实验指导..doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机导论实验指导.

实验0 SimpSim模拟器环境及Visual C++编译调试环境 【实验目的】 1了解自然语言到机器语言的翻译过程 2 熟悉Simple Simulator模拟器环境,掌握使用Simple Simulator模拟程序的执行。 3 掌握SimpSim的单步运行方法,学会单步运行时对存储单元和各寄存器中值的进行观察。 4 熟悉Visual C++编译调试环境,掌握C语言源程序的建立、编辑、修改、保存。 5 掌握C语言程序的编译和程序调试。 【实验准备】 (1)自然语言到机器语言的翻译过程 任何计算机内部都是用0 和1的序列来表示的,这可以很容易地被计算机理解,但人们却不容易理解,另一方面,无论什么时候,在用像Visual C++ 这样高级语言编写程序的时候,我们使用了能被程序员所理解的一组指令或命令,但计算机却不容易理解。为了在人和机器之间搭建通信的桥梁,制定一个翻译过程是很有必要的。因为每台计算机只能理解它自己的语言(机器语言),所以最终必须将每个程序翻译为用机器语言书写的等价程序,这样计算机就能够理解并执行程序所指定的指令。执行这个翻译过程的计算机程序叫做翻译器,如图1.1 所示。翻译器通常对指定的语言进行工作。也就是说,C 程序的翻译器不能翻译Java语言程序,反之亦然。有两种特定类型的翻译器用来执行高级语言的转换过程: 编译器和解释器。 图1.1 翻译器的基本作用 编译器 翻译过程本身包含一系列对输入语言的转换。图1.2 显示了编译器的通用阶段。虽然对包含在每个阶段的行为的具体讨论超出了本书的范围,但了解翻译过程的一些方面,以及如何与编写的程序进行联系,有利于对计算机程序编译调试过程的理解。 在将程序递交到任何翻译器前,需要使用编辑器或文字处理程序来创建源程序。大部分翻译器需要文件扩展名,将程序保存为特定的类型。例如C 编译器要求包含C程序的文件以“.C ”作为扩展名。如果提交给翻译器的程序没有这个程序没有这个扩展名,编译器就不会对它进行翻译。 一旦创建了程序,它就被递交给预处理程序。正如其名字所指明的一样,该程序在“处理器”或编译器之前进行工作。它可能是一个独立于编译器的程序,也可能是具有不同名称的相同的编译器。预处理程序执行这样的任务,例如将一个或多个文件的内容合并入程序中,并在整个程序中用一个字符串取代另一个字符串。预处理程序扫描整个源代码,寻找 “预处理指令”。这些指令以特定的字符或字符组合开始。例如,C编译器当遇到#include时就将文件并入。同样的编译器在遇到像#define 这样的常量定义时就执行字符串替换操作。 图1.2 编译过程以及连接和装载 当预处理程序完成其任务后,编译器开始执行。编译器的第一个阶段(词法分析阶段) 检查源程序中每个单独的字符并将它们组合成叫着token 或Lexem 的逻辑单元。例如,当C 编译器读取下面的一系列字符时 If (ab) a++; 编译器读取到序列 “i 后紧跟着f”,在遇到左圆括号后就是一个叫着 “if”的逻辑单元,这个 “if”和后面的每个字符都被识别并翻译为预定义的数字代码集。这一阶段的逻辑允许编译器识别C 程序中每个可能的有效序列。从程序员的角度来看,这一阶段是很重要的,因为在这里编译器会产生类似“unidentified characters.” (不可识别的字符) 这样的错误。例如,考虑在C 程序中,程序员输入类似,“ń”这样不符合字母表的字符。当编译器 “看到”这个字符时,会产生一个错误,通知程序员已经发现了一个不可识别的符号。这种类型的错误属于“fatal errors ” (致命的错误),因为在检测到这样的错误后编译器就停止处理程序 并退出。 在这一阶段编译器产生的其他错误还有:“program too big”,“unexpected end of file”。后一个错误通常是由于多行注释语句没有结束。 编译器的第二阶段由语法分析器来执行,从程序员的角度来看也是很有意义的,因为在这时编译器要寻找C代码的任何语法错误。可以把这一阶段看作是英文的语法检查功能。例如,假定程序员想要输入赋值语句a=b;但是却输入成了a++b;语法分析的内置逻辑就会把这看作是“无效表达式”并产生错误。在这一阶段遇到的其他错误还有“missing;”( 缺少分号),“Unmatched number of parentless”(圆括号数不匹配),“missing funcution prototype”(没有函数原型等)。

文档评论(0)

s4as2gs2cI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档