汇编模拟执行器,执行单元的设计
来源:互联网 发布:2017电视直播软件港台 编辑:程序博客网 时间:2024/05/18 01:49
在完成对汇编语言翻译的工作后,项目上需要在软件层面模拟汇编语言的执行,验证汇编语言实现算法的正确性。根据冯诺依曼体系,程序的执行包括输入、输出、运算器、存储和控制器。因此为了实现模拟器,需要建立负责运算的执行单元,存储的寄存器及相关存储和发射指令的控制器。如图

本文主要就执行单元的设计做出描述,软件执行单元的重点不在对指令的执行上,指令的执行依靠编程语言的运算完成,比如mov指令用赋值=,add指令用+实现。执行单元关注的是管理方式,包括流水和非流水两种。
流水单元是指在没有寄存器锁定的条件下,每一拍能进入一条指令,不用等待上条指令执行完,在每拍中并行执行单元流水线内的所有指令。反之,非流水单元,是串行的执行,只有在上条指令执行完才能开始新的指令,需要等待指令排空后才能进入新指令。
同时,由于同一单元内指令周期并不相同,因此流水指令需要记录所有指令的执行周期,并在执行时,减减每条指令的剩余周期,当周期为0时,代表本条流水指令执行完毕。
根据以上分析,执行单元的属性包括单元名,单元名枚举值,流水/非流水标示,最大流水级数,当前执行指令数,流水指令剩余周期和统计信息等。具有的方法有,加入流水/非流水指令,执行一周期,打印统计等。如下图

在实现时,设计执行单元类来模拟不同执行单元,设计执行单元管理类管理所有执行单元。除此外,还实现了非流水指令的缓冲存储和自动执行。

本文主要就执行单元的设计做出描述,软件执行单元的重点不在对指令的执行上,指令的执行依靠编程语言的运算完成,比如mov指令用赋值=,add指令用+实现。执行单元关注的是管理方式,包括流水和非流水两种。
流水单元是指在没有寄存器锁定的条件下,每一拍能进入一条指令,不用等待上条指令执行完,在每拍中并行执行单元流水线内的所有指令。反之,非流水单元,是串行的执行,只有在上条指令执行完才能开始新的指令,需要等待指令排空后才能进入新指令。
同时,由于同一单元内指令周期并不相同,因此流水指令需要记录所有指令的执行周期,并在执行时,减减每条指令的剩余周期,当周期为0时,代表本条流水指令执行完毕。
根据以上分析,执行单元的属性包括单元名,单元名枚举值,流水/非流水标示,最大流水级数,当前执行指令数,流水指令剩余周期和统计信息等。具有的方法有,加入流水/非流水指令,执行一周期,打印统计等。如下图

在实现时,设计执行单元类来模拟不同执行单元,设计执行单元管理类管理所有执行单元。除此外,还实现了非流水指令的缓冲存储和自动执行。
0 0
- 汇编模拟执行器,执行单元的设计
- Win32程序的执行单元
- win32程序的执行单元
- Windows用户态程序高效排错 -- 汇编,CPU执行指令的最小单元
- 防止程序重复执行的单元
- 防止程序重复执行的单元
- 汇编指令的执行过程
- 汇编函数的执行过程
- Delphi7中单元文件内各个部分的执行顺序
- 同步_一个执行单元等待另一个执行单元执行完某事
- struts2的action执行过程模拟
- (1)win32程序执行单元--多线程
- maven执行单元和集成测试
- runnable接口中的线程执行逻辑单元
- 模拟执行不完全恢复
- 模拟执行灾难恢复
- 汇编、连接与执行程序
- 8051的汇编控制指令,占用字节,执行周期列表
- strust2的应用之三
- Poj3278 Catch That Cow ( BFS
- MySQL学习笔记
- JAVA实现百度OCR文字识别功能
- 基于maven整合SSM
- 汇编模拟执行器,执行单元的设计
- 栈的压入、弹出序列
- 文件组织方式
- Yaf学习之整合yii
- java:AWT绘图
- 多旋翼无人机动力系统发展历程
- session地址的重写
- java:链表排序
- Android开发过程中常用到的工具类HttpUtils,SDCardUtils