当前课程知识点:汇编语言程序设计 >  一、基础知识 >  在计算机系统结构中的定位、指令系统概念及分类 >  在计算机系统结构中的定位,指令系统概念及分类

返回《汇编语言程序设计》慕课在线视频课程列表

在计算机系统结构中的定位,指令系统概念及分类在线视频

下一节:课程内容与目标

返回《汇编语言程序设计》慕课在线视频列表

在计算机系统结构中的定位,指令系统概念及分类课程教案、知识点、字幕

好 各位同学,非常高兴

我们今天开始这门新的课程

汇编语言 程序设计

那么第一讲呢 首先就是我们想

具体的讲一讲咱们这门课程的定位

就先把自己的位置搞清楚啦

具体的题目呢就是

《汇编语言与计算机系统结构》

两者之间的关系 大概呢

就包含以下三个部分

首先就是课程的定位

其次呢就是咱们主要的授课内容

再者呢就是各类指令集的一些介绍

那么第一讲里头呢 首先我们的重点呢

就放在我们的课程定位上面

这边呢有必要跟大家说一下

就是在清华计算机系的这个课程的

这个组合里头 咱们这个汇编课程

是属于计算机系统的课程

而不是软件或者说是这个编程方面的课程

那么计算机系统课组呢就属于这个有

汇编 有操作系统 编译 组成原理

还有体系结构等等 那么我的认为就是说呢

咱们把这个汇编课程啊

放到这个系统课组里 我觉得是合理的

因为在我看起来

就是所有计算机方面的研究呢应该分成两种

第一个呢就是怎么去用

第二个呢怎么去做一个计算机系统

当然这个系统呢不但包括是硬件

还有系统软件 都涵盖在这一方面

汇编程序呢 这门课程

是属于咱们计算机系统课组的一个入门课

咱们从背后这张图上面可以看到

它实际上起到了一个承上启下的作用

这很大程度上我们认为呢

什么是计算机体系结构

那么从一个狭义的定义上来说呢

所谓计算机体系结构

就计算机一个软硬件的接口

那么打个通俗的比方来说

比方说你买了一个处理器

那么处理器这东西该怎么用

得有一个规格 得有一个说明

得有一个接口让你去用

就好比家里买一个别的什么大件一样

有一个使用说明 有规格说明

那么咱们说计算机系统结构啊 狭义的定义呢

就是说是计算机系统软硬件的接口和规格

也就是说它告诉你 这个处理器

第一 它能完成什么功能

第二 怎么让它去完成这些功能

那么这些功能的对外体现

实际上就称之为指令集

或者说叫做指令集系统架构

而汇编语言呢

又可以认为是一个指令集的助记符

所以从这个层面上来讲呢 我们把汇编语言

作为计算机系统的课组的第一门课

是非常合理的 我们也看到 就是说

在整个的计算机系统的软硬件的架构上

我们可以看到 最上层就是计算机的应用

应用软件 那么往下呢就是操作系统

编译原理 而再往下就是汇编

汇编呢就恰好处于

这个软硬件的这个接口之间

当中这一层次

那么如果再往下的话就偏硬件了

叫计算机的组成 实际上就告诉你计算机

包括处理器的逻辑结构世界是什么

那么再往下就数字电路

就在电路层面是怎么实现的

整个的这个软硬件的层次就在这个地方

汇编呢正好是处于这个居中的

一个承上启下的地位

那么我们希望呢通过学习这门课程呢

给后续的 主要是系统课程 打下指令集

汇编编程 以及微体系结构的方面的一些知识

这都是属于计算机的核心的课组

就是说我们这门课程的定位

那么我们这门课程呢就是讲完之后呢

因为也开设了好几年

就这种课程的这种改革之后

也获得了这个后续课程的任课老师的认可

比方说

咱们这个计算机组成的任课老师就认为

我们汇编指令内容

可以直接用于本课程的处理器的设计

因为我们基本上在讲课的时候啊

希望大家强调 就是说

咱们这个课程呢有一个承上启下的作用

就是各个课程之间的

内在的逻辑关系应该定义好了 联系起来了

这个对于大家建立一个计算机系统的

整体的概念是非常有好处的

那么其他课程的老师呢

也是对我们有较高的评价

比方说这编译原理的老师 认为

我们简化了编译系统相关内容的

教授的这个难度 再者呢就是

还有操作系统的老师认为 原先的学生呢

不太熟悉 他们这个课程里所涉及的汇编指令

需要重新学习

现在这一块儿呢就是我们打通了内容之后

上手就非常快 这都是对我们一些正面的评价

当然我们还要不断地改进 那么我们再讲讲看

不同编程语言之间的比较和定位

这个呢就简单的讲一讲看 就是机器语言

实际上就不展开说了 我们知道

任何一个处理器 它所能识别的

就是一串二进制的机器语言的代码

这是它唯一能够识别的

你这个二进制串表示一个什么操作

命令它去做个什么事儿 是机器

这CPU所能唯一识别的

那么这个东西当然不好编程

不好记对不对 那么汇编语言呢 就是可以

就是在很大程度上可以认为

是机器语言的一种助记符 跟它一一对应

当然这个咱们要稍微说明一下就是

目前汇编语言

也是吸收了一些高层语言的一些特点 所以说

严格来讲也并不是一一对应的

但是大致上可以这么说

那么汇编语言的特点是什么呢

就是它是面向机器编程的

在“时间”和“空间”效率上比较高

那么这边呢说了它的一个缺点

那实际上呢我觉得是个特点

就是涉及到硬件细节 要求对计算机系统的

一些的组织结构啊 比较熟悉

这个稍微展开讲讲看 就是说首先就是我认为

就是任何一门编程语言呢 都是对你编程对象

这个机器的一个抽象

当然很多的抽象是非常高层的

比方说我们说java 那java的一个抽象就是

java虚拟机的一个抽象

那还有一系列的高层语言 它这种抽象

实际上就是完全脱离了你的目标计算机

你的目标处理器的这个概念

这是完全跟底层没有关系

比方说我们认为 在高级语言里面

相对比较低层的 就是C语言

实际上C语言我们在很大程度上啊 可以认为

C语言也是一种跨平台的语言

就是只要它的源代码是可以跨平台的

也就是说呢 它所表现的

并没有说是特别针对某种目标系统结构

它的一种抽象 那么再说一下

就是说唯一在C语言里面

能够认为是对目标计算机系统的系统结构

在底层的一个抽象

通过C语言接口暴露出来了

实际上这个比较明显的就是什么呢

就是指针 就是连续地址空间

通过指针可以连续的访问 这个是暴露出来的

其他的一些底层的细节并没有被暴露出来

那么从这个层面上来说 高级语言本身

是不特定于某个目标计算机系统的

当然这里头呢就是汇编语言是不一样

我们一般来说不会说

你的汇编语言本身是跨平台的

要么就是X86汇编 MIPS汇编 ARM汇编

就是说针对特定计算机系统结构的汇编

那么反过来讲

汇编语言是能够充分体现

你这个目标计算机系统底层结构的一种语言

这实际上是它的一个特点

这上面说这是它的一个缺点

但是也是它的一个特点

我们就想通过这个汇编语言作为这个入口

来了解计算机系统结构的一些原理

这是本课程的目标之一 刚才已经提到过了

就是编程语言呢我们认为

是对目标计算机系统结构的一种“抽象”

不同编程语言体现了不同层次的“抽象”

汇编语言呢因为它恰好位于软硬件之间

它就是比较精确地反映了

这个目标计算机系统结构

特别是指目标计算机处理器的一些

底层的一些特点 通过汇编语言能够反映出来

当然 我们后续课程里面会讲到 这种反映

实际上是一种抽象 一种简化的一种反映

物理上的组织结构

物理上的实现要比这个要复杂得多

但咱们就不太涉及了

好 现在继续 官方的层面

对计算机系统结构的定义是什么样子

我们就引用了百科全书第一版的定义

计算机系统的物理或者硬件结构

各部分组成的属性以及这些部分的相互联系

那这话本身呢就是系统描述性的话语

就是没有 实际上没有太透露太多的信息

我觉得这上面的第二条的定义是比较好的

就是说 系统软件开发人员所看到的

计算机的系统的功能行为 概念结构

系统软件人员 他所要写出

第一写一个正确的

第二写一个高效的程序 他所必须要了解到

我所面对的这个计算机系统 它的行为

它的规格是什么样子

我这类人员写这个程序所需要的

我所要理解到的 跟计算机系统的功能行为

概念结构相关的一些概念 这些东西的组合

它的定义就应该叫做计算机系统结构

这是一个定义 这个定义呢

实际上是一种狭义的一种定义 回头我们再讲

那么再往下的话呢 就是说

我们通过 这个计算机系统结构呢 就是

给你了一个软硬件之间接口的一个说明

一个规格 那么再往下

你这些硬件本身是怎么实现的

处理器本身是怎么实现的

这就属于计算机系统的结构与实现这块内容

当然 上面第三行 就是与计算机组成 啊

这门课程也是后续课程里面我们会讲到

计算机组成里头涉及到的内容

在我们这个课程里头呢

主要是介于软硬件之间 从这计算机系统结构

这个狭义的定义出发 讲软硬件的接口

讲软硬件的规格

通过这个汇编语言怎么体现出来

这是我们的目标 往下呢 也会涉及到一点

但是不会重点去讲

这张图呢实际上就给出了

这个计算机系统结构的一个定义的框图了

最上就是什么叫做计算机系统结构啊

(狭义)狭义的定义就是什么呢

就是系统程序员所看到的计算机系统的属性

系统程序员他要写程序 第一要写对

第二要运行正确 写得快 那么

他所要看到一些东西就叫计算机系统结构

再往下就是什么呢

就是计算机系统的逻辑实现 浅一点说

就是处理器在逻辑上是怎么设计出来的

这个也算作计算机系统结构的这个定义里头

但它就属于一种广义的定义啦

这就是计算机组成

再往下的话呢就是计算机系统的物理实现

这个就相当于 更偏电子 微电子那一块儿

当然我们课程 后续课程里面也可能会讲到

那么总的一句话就是说呢

计算机系统结构呢

是研究计算机系统自身的学科

计算机的学科呢 分成两种研究方向

第一 怎么用好计算机

第二 怎么设计好计算机

咱们就是说计算机系统啊

就属于怎么设计好计算机 而整个汇编语言

是这类课组里头的第一门入门课程

就是我们课程的总的定义

然后呢我们再回顾一下历史啦 就是历史上

这个系统结构的定义是怎么来的

1964年 IBM 360系列的总设计师 叫amdahl

amdahl定律

我们这个其他课程里面可能会讲到

他们提出了这个体系结构这个概念

这个很重要

实际上我觉得是一个划时代的一个东西 啊

展开说一说看 就是目前啊

咱们说IT技术日新月异 非常的火

养活了这么多人 推动了这个整机的发展

很大程度上 你IT的从业者为什么这么繁荣

应用这么广泛 非常大的一个原因就在于呢

就是当时提出了这个系列机的概念

提出了系统结构这个概念是非常有必要

非常有好处的 为什么呢

它就相当于非常清楚的定义了

软硬件之间的这个接口的规格

也就是所谓的体系结构这个狭义的定义

然后呢就是说我就把软件跟硬件呢

从当中切一刀 这不就截然给它分开了

是不是 那么这样的话呢 就有好处

就是说你硬件可以快速的自己往前走

系列机嘛 一代一代往前推

但是你这个整个机型这个架构

是后向兼容的 也就是说 你在原先的系列机上

所涉及的系统软件这一套

当然包括它上层应用软件

都是跟后面软件相兼容 那这样的话呢

就很大程度上是降低了

你软件应用的推广的这个成本

所以对于整个行业的推动的重要性

是不言而喻的 所以我觉得很重要

从程序员的角度

实际上就是系统程序员的角度

所看到的计算机系统的属性

是概念上的一种功能和行为啦

就是物理上未必是这样子

就是抽象成为这样子

那么这个程序员呢 就包括系统程序员 看到的

就是所谓

就是能够在机器上写正确运行的程序

所需要必须了解到的

一般认为这是一种狭义的定义

刚才我们就提到

就是计算机系统结构的狭义的定义

以及它历史上的渊源 那么广义定义是什么呢

啊 前面就跟大家简单说一下 首先就是

广义定义大概包括以下 当然不限于

这么几个部分 第一个就是指令系统 这个ISA

那么指令系统呢

实际上就是可以认为就是说是一种机器语言

那么机器语言 在它的助记符的表示

就叫做汇编啦 就是跟我们这门课的关系

那么除了机器语言之外呢 还包括机器字长

内存地址模式 处理器 寄存器等等

就是程序员可见的一些东西

包括系统状态和数据格式等等

那么再往下就是说 你这个指令系统

你所代表的计算机系统结构

这个指令集系统结构

它的底层 在硬件层面是怎么实现的

它的逻辑实现是什么 就叫做微体系结构

这是计算机组成的主要内容

那么再往上的话呢 整个计算机系统

包括其他的硬件 都包括在内

再往外 还有很多其他的内容 包括并行计算

集群 虚拟化等等

也属于计算机系统结构的

一个广义的这个范围

当然对于我们这门课来讲

主要是定位在第一步

就是指令系统 跟汇编语言相对应的指令系统

这是我们这门课的主要的内容

同时会稍微涉及一点微体系结构方面的

因为两者呢很多的关系上面是密不可分

所以我们也会往下涉及一点

那么指令系统 概念是什么呢

汇编语言呢可以看做是它的一种助记符

那么我们就定义什么呢 就是指令系统啊

是计算机处理器

所对外提供的主要接口和规格

这个不再赘述 我们说过了

就好比你买个硬件买个什么东西

第一 怎么去用它 你得有个说明书有规格吧

规格第一告诉你我是干什么的

第二告诉你怎么让我去干这个事儿

那么处理器呢就通过指令系统

把它这部分东西开放出来 给你个接口

给你个定义

那么可以看成是一个软硬件的分界

我们刚才也讲过了 往上 操作系统 编译器

包括你C语言的各种运行时库

和更上层的计算机的应用系统 运行于其上

那么往下呢 计算机组成 就你微体系结构

你处理器是怎么设计的 那么运作于其下

正好是软硬件的分界 这一刀就切在这个地方

那么也是系统程序员所看到的

计算机的主要属性 刚才都说过了

咱们再给它总结一点

那么接下来就简单的介绍一下

一会儿会继续再讲就是指令系统的分类

分成CISC 分成RISC

当然目前两种正在特征上正在进行融合

但是我们有必要 还从历史的角度

从演进的角度给大家介绍一下

一会儿我们会讲这个事儿 这个刚才说过了

这两者正在走向融合

汇编语言程序设计课程列表:

一、基础知识

-在计算机系统结构中的定位、指令系统概念及分类

--在计算机系统结构中的定位,指令系统概念及分类

-课程内容与目标

--课程内容与目标

-指令集简介

--指令集简介——CISC

--指令集简介——RISC

-整数的机器表示

--整数的机器表示(一)

--整数的机器表示(二)

-无符号整数与带符号整数

--无符号整数与带符号整数(一)

--无符号整数与带符号整数(二)

-浮点数的机器表示

--浮点数的机器表示

--浮点数的规格化与非规格化表示

--浮点数表示的特性

--如何给出浮点数表示

--C语言中的浮点数

--作业:浮点数的机器表示

二、X86体系结构初步

-80x86计算机系统初步

--80x86计算机系统初步

-80x86处理器与保护模式初步

--80x86处理器与保护模式初步

三、C与汇编语言

-80x86汇编与C语言-1

--汇编程序员眼中的系统结构

--第一条汇编指令

--寻址模式

--地址计算指令与其它-1

--地址计算指令与其它-2

--x86-64下的通用寄存器与汇编指令----初步

-80x86汇编与C语言-2

--条件码

--比较指令与测试指令

--读取条件码指令-1

--读取条件码指令-2

--x86-64下的读取条件码指令

--跳转指令

--条件移动指令

--作业:80x86汇编与C语言-2

-80x86汇编与C语言-2 (续)

--条件移动指令的体系结构背景-1

--条件移动指令的体系结构背景-2

--循环的汇编语言表示-1

--循环的汇编语言表示-2

--循环的汇编语言表示-3

--循环表示的体系结构背景

--Switch的汇编语言表示-1

--Switch的汇编语言表示-2

--Switch的汇编语言表示-3

-80x86汇编与C语言-3

--程序运行栈的基本操作-1

--程序运行栈的基本操作-2

--过程调用与栈

--栈帧

--一个实例

--寄存器使用惯例

--一个递归调用的实例-1

--一个递归调用的实例-2

--另一个递归调用的实例-1

--另一个递归调用的实例-2

--x86-32过程调用小结

-作业:80x86汇编与C语言-3

-80x86汇编与C语言-3(续)

--x86-64过程调用与运行栈-1

--x86-64过程调用与运行栈-2

--x86-64过程调用与运行栈-3

--x86-64过程调用与运行栈-4

--x86-64过程调用与运行栈-5

-80x86汇编与C语言-4

--数组的存储

--数组的访问-1

--数组的访问-2

--数组的访问-3

--数组的访问-4

--数组的访问-5

--二维数组示例-1

--二维数组示例-2

--二维数组示例-3

--作业:80x86汇编与C语言-4

-80x86汇编与C语言-4(续)

--80x86汇编与C语言-4(结构的存储-1)

--80x86汇编与C语言-4(结构的存储-2)

--80x86汇编与C语言-4(结构的存储-3)

--80x86汇编与C语言-4(结构的存储-4)

--结构数组的存储

--数据结构的存储小结

四、 汇编编程

-80x86汇编编程-1

--hello world-1

--汇编指示-1

--汇编指示-2

--hello world-2

--C程序的内存布局

--作业:80x86汇编编程-1

--第一个汇编编程程序-1

--第一个汇编编程程序-2

--系统调用

--汇编编程示例-处理命令行参数

--汇编编程示例-调用libc库函数

--汇编编程小结

--补充-算术操作指令

--汇编编程示例-过程调用-1

--汇编编程示例-过程调用-2

-80x86汇编编程-1(续)

--汇编编程示例-递归调用

--汇编编程示例-文件处理-1

--汇编编程示例-文件处理-2

--汇编编程示例-文件处理-3

--汇编编程示例-文件处理-4

--Vid汇编编程示例-文件处理-5

--汇编编程示例-文件处理-6

--汇编编程示例-文件处理-7

--汇编编程示例-文件处理-8

--汇编编程示例-共享库文件

-80x86汇编编程-2(程序链接)

--程序链接-1

--程序链接-2

--程序链接-3

--程序链接-4

--程序链接-5

--程序链接-6

--程序链接-7

--程序链接-8

--程序链接-9

--程序链接-10

--程序链接-11

--作业:80x86汇编编程-2(程序链接)

-80x86汇编编程-2(内存管理)

--汇编编程示例-内存管理-1

--汇编编程示例-内存管理-2

--汇编编程示例-内存管理-3

--汇编编程示例-内存管理-4

--汇编编程示例-内存管理-5

五、MIPS汇编

-MIPS32架构与指令集初步

--MIPS32架构与指令集初步-1

--MIPS32架构与指令集初步-2

--MIPS32架构与指令集初步-3

--MIPS32架构与指令集初步-4

--MIPS32架构与指令集初步-5

--MIPS32架构与指令集初步-6

--MIPS32架构与指令集初步-7

--MIPS32架构与指令集初步-8

-MIPS32指令集与编程

--MIPS32指令集与编程-1

--MIPS32指令集与编程-2

--MIPS32指令集与编程-3

--MIPS32指令集与编程-4

--MIPS32指令集与编程-5

--MIPS32指令集与编程-6

--MIPS32指令集与编程-7

--作业:MIPS32指令集与编程

-MIPS32异常处理

--基本概念

--异常处理向量

--异常处理流程

--异常处理实例

-虚存与MIPS32内存管理

--虚存设计背景

--虚存设计背景详述-1

--虚存设计背景详述-2

--虚存地址转换

--MIPS32内存管理-1

--MIPS32内存管理-2

在计算机系统结构中的定位,指令系统概念及分类笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。