编译原理

高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误可分为静态语义和动态语义错误

语法错误:语言结构上的错误

静态语义错误:编译时能发现的程序含义上的错误

动态语义错误:只有程序运行时才能表现出来

 

程序编译过程

过程:词法分析、语法分析、语义分析

  • 词法分析:从左到右逐字符读入源程序
  • 语法分析:基于词法分析,如“程序”、“语句”、“表达式”等语法单位
  • 语义分析:为代码生成阶段收集类型信息,常见错误有死循环和除数为0

**词法错误、语法错误、静态语义错误都可在编译程序时检查出

**编译过程,词法分析、语法分析、语义分析、目标代码生成是必须的,代码优化和中间代码生成不是必须

 

存储器分类

访问方式可分为

  • 按地址访问的存储器
  • 按内容访问的存储器:相联存储器,把数据或数据一部分作为关键字

寻址方式可分为

  • 随机存储器(RAM):可对任何存储单元存入或读取数据,访问任何一个存储单元所需时间是相同的
  • 顺序存储器(SAM):访问数据所需时间与数据所在存储位置相关,磁带是典型的顺序存储器
  • 直接存储器(DAM):介于RAM和SAM之间,磁盘是一种直接存储器,它对磁道的寻址是随机的,而在一个磁道内,则是顺序寻址

 

虚拟存储器

包含主存、辅存

基本思路:先进入辅存,再进入主存

 

寻址方式

  • 立即寻址:直接指出操作数本身
  • 直接寻址:直接指出操作数地址
  • 间接寻址:给出存放操作数地址的主存单元的地址
  • 寄存器寻址:指定的寄存器中存放着操作数
  • 隐含寻址:在指令中隐含着操作数的地址

 

总线系统

  • 三总线结构:地址总线、数据总线、控制总线
  • 数据总线:传输数据信息,CPU传输数据的总线带宽
  • 控制总线:传送控制信号和时序信号,如读/写
  • 地址总线:传送地址,寻址空间

 

CPU

CPU其他部件

  • 指令寄存器IR保存当前正在执行的一条指令,位数取决于指令字长
  • 数据寄存器MDR:保存操作数和运算结果信息
  • 地址寄存器AR保存当前CPU所访问的内存单元的地址
  • 累加寄存器AC:专门存放算术或逻辑运算的操作数和运算结果的寄存器
  • 算术逻辑单元ALU:CPU执行单元,主要负责运算工作,包含加法器
  • 程序计数器PC保存待执行指令的地址,程序猿应该要能控制其所编写程序的执行过程,这需要利用程序计数器来实现,因为程序猿能访问的是程序计数器

运算器组成

算术逻辑单元ALU、累加寄存器、数据缓冲寄存器和状态条件寄存器  

控制器组成

程序计数器PC、指令寄存器IR、地址寄存器AR、指令译码器ID、时序部件

作用:保证指令的正确执行,处理异常事件

 

指令集计算机

  • CISC:复杂指令集计算机
  • RISC:精简指令集计算机

RISC优势:

1、包含频率高但不负责指令

2、更多寄存器

3、指令长度固定

4、不用微程序控制技术

5、采用流水技术

6、只有存取指令访问主存

 

周期

指令周期:取出并执行一条指令的时间

总线周期:也就是一个访存储器或I/O端口操作所用的时间

时钟周期:又称震荡周期,是处理操作的最基本单位

机器周期:完成一个基本操作的时间单元,如取指周期、取数周期

**一个指令周期由若干个总线周期组成,而一个总线周期时间又包含若干个时钟周期

**一个总线周期包含一个(只有取址周期)或多个机器周期(CPU响应DMA请求是在总线周期)

 

防火墙

功能

1、包过滤

2、审计和报警过程,记录访问过程

3、代理

4、流量控制

防护墙不能过滤的是

存在安全威胁的URL地址(属于应用层数据)

防火墙能过滤的是

源和目的IP、IP协议号、源和目的端口

防火墙功能不包含

不提供漏洞扫描功能

 

不同的管理程序

  • 字处理程序:用于文字
  • 设备驱动程序:使计算机和设备通信的程序,控制硬件设备
  • 语言翻译程序:编译程序、解释程序
  • 文件目录和目录项:组织和管理外存信息

 

DMA

数据在内存与I/O设备间的成块传送,不需要CPU的任何干涉,只需要DMA硬件完成

 

中断向量

中断服务程序的入口地址。

 

编译和解释区别

是否生成目标程序文件,解释

 

cache系统

由硬件实现并完成