文档介绍:第二章 程序设计语言
§ 高级程序设计语言概述
§ 高级程序设计语言实现计算的方式
§ 高级程序设计语言的基本特征
§ 面向对象程序设计语言的基本特征
§ 网络计算机时代的编程语言
§ 小结
1
高级程序设计语言概述
程序的表达手段是程序设计语言。程序设计语言是人-机交换信息的媒体;是表达软件(程序)的工具;是人-人交换信息的工具。软件的开发和使用,协作开发、使用修改都要读程序,程序设计语言必须规范化和标准化。
操作码
操作数
操作数
备注
00000100
10100001
00101110
二进制指令
04H
A1H
2EH
十六进制指令
ADD
AX
2EH
汇编指令
最初的语言是机器语言。机器语言在内存中开辟两个区:数据区存放数据;指令区存放指令。CPU从指令区第一个地址开始逐条取出指令并释义执行,直到所有的指令都被执行完。一般的指令格式如下:
操作码操作数操作数
表中列出了三种类型的指令:
2
DATA SEGMENT
XX DB X
YY DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,XX
CMP AL,0
JGE BIGR
MOV AL,0FFH
MOV YY,AL
HLT
JE EQUT
BIGR: MOV AL,01H
MOV YY,AL
HLT
EQUT:MOV YY,AL
HLT
CODE ENDS
ENDSTART
;数据段开始
;X值存入XX单元
;YY单元留作存函数Y的值
;以上是数据段
;代码段开始
;CS段中装入代码,DS段中装入数据
;执行开始
;
;将XX中的值转移到运算器AL
;将运算器AL中的值与0比较
;如果大于等于0就跳BIGR
;X<0,将-1放入运算器
;将运算器中的数移到YY中
;停止
;若等于0就跳到EQUT
;将数01H移到运算器
;将运算器中的数移到YY中
;运算器中是0则移到YY中
;代码段结束
;结束
MASM写的汇编程序
3
main ( )
{
int x,y;
cin x;
if(x>0) y=1
else if(x=0) y=0
else y=-1
cout x,y;
}
用类VC编写的程序
VC程序更接近数学公式。与机器的运算器、寄存器和内存地址无关。高级语言是面向计算过程的,与解题的步骤有关。
4
高级程序设计语言实现计算的方式
机器只知道根据机器语言指令来执行程序,高级语言程序必须通过翻译变成机器语言程序,这个工作一般由翻译程序自动完成的。把一种语言翻译成另一种语言的程序叫做翻译器(如C++翻成C)。把高级语言程序翻译成机器语言程序有两种做法:编译和解释,相应的翻译程序分别叫做编译器和解释器。
5
编译器工作原理
第一步词法分析。一个高级语言程序是编译(程序)器的输入。编译器逐行扫描程序,首先是识别符号串:关键字、字面量、标识符(变量名、数据名)、运算符、注释行、特殊符号(续行、语句结束、数组等)这六类符号,分别归类等待处理。这个过程就是词法分析(Lexical Analysis)。
第二步作语法分析(Syntax Analysis)。这时一个语句就作为一串记号(token)流由语法分析器处理。按照语言的文法检查每个语法分析树,判定是否为合乎语法的句子。如果是合法句子就以内部格式把这个语法树保存起来,否则报错。这样直至检查完整个程序。
第三步做语义分析(Semantic Analysis )。对各句子的语法树做检查:运算符两边类型是否相兼容;作哪些类型转换(例如实数向整数赋值要取整);是否控制转移到不该去的地方;是否有重名或者使语义含糊的记号等。如果有错转到出错处理,否则生成中间代码。
6
,其形式尽可能和机器的汇编语言相似,以便下一步的代码生成。中间码不涉及具体机器的操作码和地址码。采用中间码的好处是可以在中间码上作优化。
第五步优化。对中间码程序做局部优化和全局优化,使运行更快,占用空间最小。局部优化是合并冗余操作、简化计算,例如x : =0;可用一条“清零”、减少调用次数和快速地址算法等。
第六步代码生成。由代码生成器生成目标机器的目标码(或汇编)程序,要作数据分段、选定寄存器等工作,然后生成机器可执行的代码。
第七步连接加载:高级语言源程序经编译后得到目标码程序,但它还不能立即装入机器执行,一般情况下