扩展内容.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
扩展内容

第1章扩展内容 C程序的词素 词素(token)由一个或者多个字符构成,是构成源程序的基本词汇。C语言的词素分六类:关键字(keyword,保留字)、标识符(identifier)、常量(constant)、字符串常量(string constant)、运算符(operator)、分隔符(punctuator)。例如: #include stdio.h main() { int pen,eraser,sum; pen=12; eraser=6; sum=pen+eraser; printf(The sum is %d\n,sum); } 关键字是C语言中有确定含义的单词,例如int是关键字,其在C语言中的含义是确定的,表示整数类型。 标识符是程序员自己定义的单词,变量名、函数名、数据类型名等都属于标识符。例如:源程序中的变量名pen、eraser、sum都是标识符。main是主函数的名字,它的含义虽然是确定的,但也属于标识符。printf是库函数的名字,也属于标识符。 源程序中的12和6表示确切的整数数值,属于int型常量。The sum is %d\n表示确切的文字内容,属于字符串常量(一串文本数据),字符串常量需要用双引号引起来。 +属于运算符,参加运算的操作数称为源操作数,结果称为目的操作数。main后面的()也是运算符,表示main这个标识符是函数的名字。 大括号、逗号和分号属于分隔符。 C语句与机器语言指令的关系 在C语言中,语句是计算机可以执行的基本操作,相当于计算机可以理解并执行的命令。但从计算机原理上说,C语言的语句不能被计算机直接执行,计算机可以直接执行的是机器语言指令(二进制形式的命令)。C程序中的语句在编译的时候将翻译成机器语言指令。 机器语言指令通常包括两部分:操作码和操作数。操作码指明的是操作的性质,每种操作对应一个操作码。比如说,加减乘除属于不同的操作,那么它们对应的操作码也不相同。指令中的操作数可以是直接参加运算的数值,也可以是实际数值的存储地址。 例如:某A是一台功能非常简单的计算机,其可以执行的指令只有4种: (1)内存中两个操作数相加,结果保存在内存; (2)内存中两个操作数相减,结果保存在内存; (3)内存中两个操作数相乘,结果保存在内存; (4)内存中两个操作数相除,结果保存在内存。 在设计机器的时候,其可执行的4种指令的操作码必须不同,比如说,可以把A机器的操作码设计为: 加 0000 0000 减 0001 0000 乘 0010 0000 除 0011 0000 在设计机器的时候,还必须设计指令的格式,例如机器A的指令格式为: 操作码 源操作数1 源操作数2 目的操作数 此时,如果机器A要把内存中地址为1000H和2000H处的操作数相加,结果保存在3000H处,则执行的指令为: 0000 0000 0001 0000 0000 0000 0010 0000 0000 0000 0011 0000 0000 0000 其中,0000 0000为操作码,灰色背景的3个二进制数据为3个操作数的地址。 C程序的编译 C程序不能被计算机直接理解,必须编译成机器语言程序之后才能被计算机执行。C程序中的变量在编译之后就是内存单元。例如: int a, b, c; … c=a+b; 程序段有3个整型变量,在编译之后的机器语言程序中,3个变量将对应3个内存单元。假设3个内存单元的地址分别为:1000H,1004H,1008H,则语句c=a+b将被翻译成: 0000 0000 0001 0000 0000 0000 0001 0000 0000 0100 0001 0000 0000 1000 必须说明的是:(1)上面的涉及的语句比较简单,1条语句翻译成1条机器指令,C程序中功能比较强大的语句,可能要翻译成多条机器语言指令;(2)把C程序编译成机器语言程序由软件完成,通常我们称这类软件为编译器。 移植 移植指的是在一种计算机上运行的软件不需要修改就可以在另外类型的计算机上运行。移植可分为:机器语言代码级的移植、源代码级的移植。 所谓机器语言代码级的移植,就是说编译之后产生的机器语言程序可以在另外类型的计算机上运行。例如:机器B是一台功能简单的计算机,其可以执行的指令有4种,与机器A相同。但机器B的操作码设计方案与机器A不同,机器B的操作码设计方案为: 加 1010 0000 减 1011 0000 乘 1100 0000 除 1101 0000 显然,我们上面提到的机器语言指令 0000 0000 0001 0000 0000 0000 0001 0000 0000 0100 0001 0000 0000 1000 可以在机器A上执行,但不能在机器B上执行。

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档