计算机语言分为三个层次
高级语言–>汇编语言–>机器语言
机器语言
- 机器语言是由一串二进制数字组成的
例如:C706 0000 0002 (以由二进制转换为十六进制方便阅读)- 该条示例的翻译为:将数值2存放到地址0000中
- 由此可见机器语言表达习惯不适用于人类且记忆困难,编写困难,阅读困难等一系列问题,于是很快出现了汇编语言
汇编语言
- 汇编语言中引入了助记符
例如:MOV X,2 (假设X代表地址0000)- 该条语句执行了与上面的机器语言相同的功能
- 因引入了助记符,汇编语言相对于机器语言更加直观,更容易被人类所理解,但是汇编语言依赖于特定的机器,程序员需要熟悉目标机器的特性,非计算机专业人员使用受限,编写效率低,于是就出现了高级语言
高级语言
- 高级语言类似于数学定义或自然语言的简洁形式
例如:x = 2 该条语句完成了和前面两条语言相同的等价功能- 由此可见,高级语言更接近人类的表达习惯 不依赖与特定机器并且编写效率高
由高级语言或汇编语言编写的程序,最终都会被翻译成机器语言后交给目标机器运行
汇编语言翻译为机器语言称为汇编
高级语言翻译为汇编语言或机器语言称为编译
前者称为源语言,后者称为目标语言
编译的过程即将源语言翻译为目标语言
编译器在语言处理系统中的位置
- 源程序
{
把存储在不同文件中的源程序聚集在一起
把被称为宏的缩写语句转换为原始语句
}
- [ 预处理器 ]
- 经过预处理器的源程序
- [ 编译器 ]***
- 汇编语言程序
- [ 汇编器 ]
- 可重定位的机器代码
{
可重定位:在内存中存放的起始位置不是固定的
代码中的所有地址都是相对于起始位置的相对地址
起始位置+相对地址=绝对地址
}
- [ 连接器/加载器 ]
{
加载器:修改可重定位地址
将修改后的指令和数据放到内存中适当的位置
连接器:将多个可重定位的机器代码文件(包括库文件)链接到一起
解决外部内存地址问题(一个文件中的代码使用了另一个文件中的对象则这个对象对于当前文件来说即为外部内存地址)
}
- 目标机器代码