https://mp.weixin.qq.com/s/0zKSTktxgzo5uCUphqaWSQ

介绍抽象命令的解码和生成。

1. accessRegisterCommandReg

accessRegisterCommandReg是从COMMANDReg取值解析而来的一个带结构变量:

解析出来的结构是ACCESS_REGISTERFields:

这是当command为访问寄存器时的结构:

注:我手上使用的代码比较老了,一直使用所以没有更新。

quick access命令暂时没有实现:

2. GeneratedI

用于生成I-type的指令:

其定义为:

3. GeneratedS

用于生成S-type的指令:

4. GeneratedUJ

用于生成U-type/J-type类型的指令:

5. abstractGeneratedMem

用于存放根据抽象命令生成的两条指令:

abstractGeneratedMem中的值用于生成核心地址空间地址ABSTRACT处的值(两条指令):

6. abstractGeneratedI

用于存放一条I-type的指令:

这是一条LW指令,用于把DATA中的值传到regno代表的寄存器中:

LW/SW指令的定义如下:

7. abstractGeneratedS

用于存放一条S-type的指令:

这是一条SW指令,用于把regno代表的寄存器中的值写入到DATA地址处:

8. nop

用于存放一条I-type指令:

这是一条ADDI指令,没有实际的意义:

ADDI指令定义如下:

9. goAbstract

如果goAbstract为真,即要执行抽象命令,则把生成的指令填入到abstractGeneratedMem中:

1) abstractGeneratedMem(0)

a. 如果transfer为假,则使用nop;

b. 如果transfer为真,从LW/SW中选择;

c. 如果write为真,则使用abstractGeneratedI把DATA中的值传到regno代表的寄存器中(LW);

d. 如果write为假,则使用abstractGeneratedS把regno代表的寄存器中的值写入到DATA地址处(SW);

2) abstractGeneratedMem(1)

如果postexec为假,则使用EBREAK指令。执行EBREAK指令可以退出执行,把控制权交给调试器:

如果postexec为真,则使用nop。执行nop没有操作,一个效果就是会紧接着执行下一条指令。而下一条指令就是Program Buffer的第一条指令:

这也是postexec的用意,即执行完抽象命令之后,立即执行Program Buffer中的指令:

Rocket - debug - TLDebugModuleInner - Abstract Command Decoding & Generation的更多相关文章

  1. Rocket - debug - TLDebugModuleInner - Abstract Command State Machine

    https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...

  2. Rocket - debug - TLDebugModuleInner - Abstract Data

    https://mp.weixin.qq.com/s/DOLkEi-_qQt6lWOhJ2hxVQ 简单介绍TLDebugModuleInner中抽象数据寄存器的实现. 1. abstractData ...

  3. Rocket - debug - TLDebugModuleInner

    https://mp.weixin.qq.com/s/jkiHceU0HaJbHGvHiU-QOA 简单介绍TLDebugModuleInner的实现. 1. 引入全局配置 1) cfg 引入Debu ...

  4. Rocket - debug - TLDebugModuleInner - COMMAND

    https://mp.weixin.qq.com/s/Lz_D43YdhbRhiGiyoCBxDg 简单介绍TLDebugModuleInner中COMMAND寄存器的实现. 1. COMMANDRe ...

  5. Rocket - debug - TLDebugModuleInner - ROM Generation

    https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg 简单介绍Variable ROM Generation. 1. jalAbstract jalAbs ...

  6. Rocket - debug - TLDebugModuleInner - DMI Register Control and Status

    https://mp.weixin.qq.com/s/tI41wu0xaIQ5PRq6F82tNw 简单介绍TLDebugModuleInner中生成DMI控制和状态寄存器使用到的状态. 1. abs ...

  7. Rocket - debug - TLDebugModuleInner - Hart Bus Access

    https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...

  8. Rocket - debug - TLDebugModuleInner - ABSTRACTAUTO

    https://mp.weixin.qq.com/s/adSB7lmKcqmwVd80-gmdIw 简单介绍TLDebugModuleInner中ABSTRACTAUTO寄存器的实现. 1. ABST ...

  9. Rocket - debug - TLDebugModuleInner - Drive Custom Access

    https://mp.weixin.qq.com/s/1bIqzDYXM36MIfSsjvvYIw 简单介绍TLDebugModuleInner中的针对Custom的访问. 1. customNode ...

随机推荐

  1. W - Doom HDU - 5239 线段树 找取模的规律+求一个很大的数的平方对一个数取模的写法 特别的模数==2^63-2^31

    这个题目一开始感觉还是有点难的,这个模数这么大,根本就不知道怎么写,然后去搜了题解,知道了怎么去求当x很大的时候x的平方对一个数取模怎么样不会爆掉. 然后还顺便发现了一个规律就是当一个数更新一定次数之 ...

  2. maven的安装及环境变量配置

    1.下载maven 2.解压至该路径 3. 新建环境变量MAVEN_HOME , 值为maven包点开路径 环境变量配置: 4. 编辑环境变量Path,追加%MAVEN_HOME%\bin\ 5.一路 ...

  3. 王颖奇 201771010129《面向对象程序设计(java)》第一周学习总结

    <面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com wangyingqi 程序 ...

  4. 软路由OpenWrt(LEDE)2020.4.6编译 UnPnP+NAS+多拨+网盘+DNS优化

    近期更新:2020.04.06编译-基于OpenWrt R2020.3.19版本,源码截止2020.04.06.   2020.04.06更新记录: 以软件包形式提供ServerChan(微信推送) ...

  5. 【华为云技术分享】MongoDB经典故障系列五:sharding集群执行sh.stopBalancer()命令被卡住怎么办?

    [摘要] MongoDB sharding集群执行sh.stopBalancer()命令时被卡住怎么办?别慌,华为云数据库来给您支招,收下这份方案指南,让您分分钟远离被自建MongoDB数据库支配的恐 ...

  6. Linux下安装JDK11

    Linux下安装JDK11 Linux下安装JDK可分为三步: 下载相应版本的压缩包 解压缩并移置相应目录 配置环境变量 验证结果 一.下载相应版本的压缩包 下载压缩包可以通过官网下载,如图: 下载前 ...

  7. [hdu3364]xor方程组消元

    题意:n个灯,m个开关,给定每个开关控制的灯,全部的灯初始时全部熄灭,开关按一下其所控制的灯的状态全部反转,开关最多只能按一下.问达到目标状态的方案数. 思路:xor方程组的模型. 1 2 3 4 5 ...

  8. [csu1605]数独(精确覆盖问题)

    题意 :给定数独的某些初始值,规定每个格子的得分,求得分最大的数独的解. 思路:这是某年的noip的原题,高中时就写过,位运算也就是那个时候学会的--.这题明显是暴搜,但是需要注意两点,一是需要加一些 ...

  9. PC端软件配置

    一,cmder软件安装 二,Snipaste软件安装 三,vwmare虚拟机安装 四,sublime安装 五,notepad++安装 六,Python环境 anaconda navigator安装 七 ...

  10. 05 返回静态文件的多线程web框架

    05 返回静态文件的多线程web框架 服务器server端python程序(多线程版): import socket from threading import Thread,currentThrea ...