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. 2020 wannafly camp 补题 day1

    题目可以从牛客上找到. 最简单的一个题应该是B B. 密码学 这个应该就是倒着推,题目给了你加密的顺序,所以我们逆推这个就可以得到每一次加密前的字符串. 1H. 最大公约数 题目大意就是给你一个范围1 ...

  2. Facebook 开源微光效果 Shimmer

    我的引言 晚上好,我是吴小龙同学,我的公众号「一分钟 GitHub」会推荐 GitHub 上好玩的项目,挖掘开源的价值,欢迎关注我. 今天要推荐的是 Facebook 开源的闪光效果:Shimmer, ...

  3. ocelot jwt 进行统一验证

    前一个帖子发了有关jwt 验证api的内容,这一次将jwt集成到ocelot网关中. ocelot集成jwt有一个很不错的nuget包,ocelot.jwtauthorize  ,但是这个包似乎支持n ...

  4. Spring Junit--第一个测试

    配置成功后,需要启动测试用例! package com.cml.controller; import javax.annotation.Resource; import org.junit.Test; ...

  5. python实现简单投资复利函数以及实现摇骰子猜大小函数

    复利函数: #!/user/bin/env python #-*-coding:utf-8 -*- #Author: qinjiaxi def invest(amount, rate, time): ...

  6. webpack指南(六)命令行环境配置

    webpack 命令行环境配置中,通过设置 --env 可以使你根据需要,传入尽可能多的环境变量.在 webpack.config.js 文件中可以访问到这些环境变量. webpack --env.N ...

  7. flask之Blueprint蓝图

    flask_Blueprint.py ''' flask中的Blueprint蓝图: (1)新建模块,例如Bp1.py,Bp2.py,在模块中创建蓝图实例 (2)通过app.register_blue ...

  8. Apache Module mod_reqtimeout

    Apache Module mod_reqtimeout Available Languages: en Description: Set timeout and minimum data rate ...

  9. 关于Android的真机测试

    步骤: 1.开启手机USB调试 2.数据线连接手机和电脑 3.eclipse需要重启 4.在eclipse的run里面的runconfig...里面设置为启动时总是提醒开发者选择 具体事例: 我的手机 ...

  10. poj2594最小路径覆盖+floyd

    Treasure Exploration Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 8909   Accepted: 3 ...