博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145228 《信息安全系统设计基础》第六周学习总结 (1)
阅读量:5442 次
发布时间:2019-06-15

本文共 1214 字,大约阅读时间需要 4 分钟。

教材学习内容总结

Y86指令集体系结构

定义一个指令集体系结构,包括定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理。

•Y86处理器状态类似于I32。可以访问和修改程序寄存器、条件码、程序计数器和存储器,状态码指明程序是否运行正常。

(1)RF:程序寄存器 %eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp

(2)CC:条件码 ZF、SF、OF(都是一位条件码,用来保存最近的算术或逻辑指令所造成影响的有关信息。)

(3)PC:程序计数器 存放当前正在执行的指令

(4)DMEM:存储器 很大的字节数组,保存着程序和数据。Y86程序用虚拟地址来引用存储器位置

•IA32的movl指令分成了4个不同的指令:irmovl、rrmovl、mrmovl和rmmovl。分别显示地指明源和目的的格式。

•指令编码长度从1个字节到6个字节不等,一条指令含有一个单字节的指令指示符,可能含有一个单字节的寄存器指示符,还可能含有一个四字节的常数字。字段fn指明是某个整数操作(OPL)、数据移动条件(cmovXX)或是分支条件(jXX)。所有数值都用十六进制表示

指令编码

•每条指令的第一个字节表明指令的类型。这个字节分为两个部分,每部分4位:高4位是代码部分,低4位是功能部分。功能值只有在一组相关指令共用一个代码时才有用。

•分支指令里代码部分均为7,-传送指令里代码部分均为2

•指令集的一个重要性质就是字节编码必须有唯一的解释。这个性质保证了处理器可以无二义性地执行目标代码程序。即使代码嵌入在程序的其他字节中,只要从序列的第一个字节开始处理,我们仍然可以很容易地确定指令序列。反过来说,如果不知道一段代码序列的起始位置,我们就不能准确地确定怎样将序列划分成单独的指令。

•Y86代码与IA32代码的主要区别:

1、Y86可能需要多条指令来执行一条IA32指令所完成的功能。

2、Y86没有伸缩寻址模式。

•执行pushl和popl指令时,处理器的行为是不确定的,因为要入栈的寄存器会被同一条指令修改。通常有两种约定:

压入/弹出%esp的原始值

压入/弹出%esp-/+4后的值

逻辑设计和硬件控制语言HCL

数字系统三个主要组成部分

1、计算对位进行操作的函数的组合逻辑

2、存储位的存储器元素

3、控制存储器元素更新的时钟信号

Y86异常

a.状态码Stat,描述程序执行的总体状态

b.代码值1,命名为AOK,表示程序执行正常

c.代码值2,命名为HLT,表示处理处执行一条halt指令

d.代码值3,命名为ADR,表示处理器试图从一个非法存储器地址读或者向一个非法存储器地址写,可能是当取指令的时候,也可能是当读或者写数据的时候。

e.异常处理程序、信号处理程序。

部分代码截图

887033-20161020222332560-1074287022.png

887033-20161020222341248-610116826.png

转载于:https://www.cnblogs.com/J000/p/5982887.html

你可能感兴趣的文章
uva 10954 Add All
查看>>
如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。
查看>>
ArcGIS Server 10.1 错误 service failed to start,
查看>>
MYSQL中case when then else end 用法
查看>>
C语言::模拟实现strlen函数
查看>>
利用NABCD模型进行竞争性需求分析
查看>>
Vue的ref,父节点,获取子节点数据的一个手段
查看>>
好文推荐系列--------(1)bower---管理你的客户端依赖
查看>>
一些常用的基本知识收录
查看>>
1044 火星数字
查看>>
数据劫持,订阅者模式,双向绑定
查看>>
关于使用别人方法的效率问题
查看>>
svn第一篇----入门指南
查看>>
按钮 是否可用 的控制
查看>>
隐马尔科夫模型(HMM) 举例讲解
查看>>
JedisUtils工具类模板
查看>>
NOIP2011题解
查看>>
[Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
查看>>
[唐胡璐]QTP技巧 - ALT+G快捷键
查看>>
P2746 [USACO5.3]校园网Network of Schools
查看>>