编译原理
高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误可分为静态语义和动态语义错误
语法错误:语言结构上的错误
静态语义错误:编译时能发现的程序含义上的错误
动态语义错误:只有程序运行时才能表现出来
程序编译过程
过程:词法分析、语法分析、语义分析
- 词法分析:从左到右逐字符读入源程序
- 语法分析:基于词法分析,如“程序”、“语句”、“表达式”等语法单位
- 语义分析:为代码生成阶段收集类型信息,常见错误有死循环和除数为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系统
由硬件实现并完成
--参考链接