编译原理
高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误可分为静态语义和动态语义错误
语法错误:语言结构上的错误
静态语义错误:编译时能发现的程序含义上的错误
动态语义错误:只有程序运行时才能表现出来
程序编译过程
过程:词法分析、语法分析、语义分析
- 词法分析:从左到右逐字符读入源程序
- 语法分析:基于词法分析,如"程序”、“语句”、“表达式"等语法单位
- 语义分析:为代码生成阶段收集类型信息,常见错误有死循环和除数为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系统
由硬件实现并完成
原文创作:小菠萝测试笔记
原文链接:https://www.cnblogs.com/poloyy/p/12171078.html
文章列表
- 软件评测师笔记四 操作系统
- 软件评测师笔记八 测试用例设计
- 软件评测师笔记三 软件测试
- 软件评测师笔记七 测试基础概念
- 软件评测师笔记一 网络相关
- 软件测试52讲 读书笔记 软测的核心竞争力
- 软件测试52讲 读书笔记 用户登录
- 软件测试52讲 读书笔记 如何高效填写软件缺陷报告?
- 软件测试52讲 读书笔记 如何设计一个“好的”测试用例
- 软件测试52讲 读书笔记 如何做好测试计划
- 软件测试52讲 读书笔记 你真的懂测试覆盖率吗?
- 软件测试52讲 读书笔记 为什么要做自动化测试
- 自定义博客cnblogs样式的必备前端小知识js、jq
- 自定义博客cnblogs样式的必备前端小知识css
- 测试工具Fiddler二 入门使用
- 测试工具Fiddler三 常见功能介绍
- 测试工具Fiddler一 基础知识
- 测试基础篇二 面试挺常见
- 测试基础篇一 面试终极常见
- 安全测试通用用例
- Linux-配置环境变量的几种方式
- Linux-Centos7+配置阿里云 yum 源
- Java-高级点的东西
- Java-集合、Map 相关
- Java-线程相关
- Java-基础
- HTTP图解笔记六 第6章 HTTP首部
- HTTP图解笔记一 第1章 了解Web及网络基础
- Git-本地 Git 绑定 Github 仓库
- Git-本地 Git 绑定 Gitee 仓库
- Git-Window 同一电脑配置多个 git 公钥
- Git-Linux 安装 Git
- Git-Linux 初始化 Git 环境
- Airtest入门篇