持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第33天,点击查看活动详情
第三讲:程序开发和执行过程简介
机器语言编写程序,十分麻烦
因为要记住各个01数据的含义
因此,使用汇编语言开发程序
- 用助记符表示操作码
- 用标号表示位置
- 用助记符表示寄存器
用汇编语言编写的优点是:
- 不会因为增减指令而需要修改其他指令
- 不需记忆指令编码,编写方便
- 可读性比机器语言强
原理:用汇编程序将汇编语言转换为机器语言
左边为机器语言,右图为汇编语言
汇编语言程序由汇编指令构成
汇编指令:用助记符和标号来表示的指令(与机器指令一一对应)
指令:
-
包含操作码和操作数或其地址码(机器指令用二进制表示,汇编指令用符号表示)
-
只能描述∶取(或存一个数)
两个数加(或减、乘、除、、或等)
根据运算结果判断是否转移执行
下图为一些指令
但是,用汇编语言编写程序还是十分麻烦
用高级语言开发程序
但最终都是转换成机器语言程序
有两种转换方式:"编译" 和 "解释"
编译程序(Complier):将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可 解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并立即执行,不生成目标文件。
下图是GCC+Linux平台处理hello.c源程序的过程
数据经常在各存储部件间传送,因此大多采用缓存技术
所有过程都是在CPU执行指令所产生的控制信号的作用下进行的。
不同层次语言之间的等价交换
开发和运行程序需要什么支撑
第四讲计算机系统层次结构
早期计算机系统的层次
第一代:机器语言编程
第二代:汇编语言编程
现代:高级语言编程
语言处理系统包括:各种语言处理程序(如编译、汇编、链接)、运行时系统(如库函数,调试、优化等功能)
所有软件功能都建立在ISA之上
指令集体系结构(ISA)
ISA是一种规约,规定了如何使用硬件
- 可执行的指令的集合,包括指令格式,操作种类以及每种操作对应的操作数的相应规定
- 指令可以接受的操作数的类型
- 操作数所能存放的寄存器组的结构,包括每个寄存器的名称,编号,长度和用途
- 操作数所能存放的存储空间的大小和编址方式
- 操作数在存储空间存放时按照大端还是小端方式存放;
- 指令获取操作数的方式,即寻址方式;
- 指令执行过程的控制方式,包括程序计数器(PC)、条件码定义等。
!!!没有ISA,软件无法使用计算机硬件,一台计算机也无法被称为"通用计算机"
计算机组成(微体系结构)与ISA之间的关系
- 不同ISA规定的指令集不同,如,IA-32、MIPS、ARM等
- 计算机组成必须能够实现ISA规定的功能,如提供GPR、标志、运算电路等
- 同一种ISA可以有不同的计算机组成,如乘法指令可用ALU或乘法器实现
ISA是计算机组成的抽象
三个主题:
-
表示( Representation )
- 不同数据类型(包括带符号整数、 无符号整数、浮点数、数组、结构 等)在寄存器或存储器中如何表示和存储?
- 指令如何表示和编码(译码)?
- 存储地址(指针)如何表示?如何生成复杂数据结构中数据元素的地 址?
-
转换(Translation )
- 高级语言程序对应的机器级代码是怎样的?如何转换并链接生成可执 行文件?
-
执行控制流( Control flow )
- 计算机能理解的“程序”是如何组织和控制的?
- 如何在计算机中组织多个程序的并发执行?
- 逻辑控制流中的异常事件及其处理
- I/O操作的执行控制流(用户态→内核态)
题目总结:
1.指令和数据在形式上没有差别
4.汇编指令无法被计算机直接执行
6.软件分为系统软件和应用软件