zoukankan      html  css  js  c++  java
  • Rocket

    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中的指令:

                 

     

     

  • 相关阅读:
    Git 常用命令 Better
    HTTP Cookie 总结 Better
    clientWidth, offsetWidth, scrollWidth的区别 Better
    Math.round() 0.5时的特殊性 Better
    screenY、pageY、clientY、offsetY的区别 Better
    Oracle 数据快速导出工具:sqluldr2
    使用 barman的备份和归档PostgreSQL
    Android RK 内置应用 不可卸载
    AS SerialPort 编译依赖库
    RK 看门狗 WatchDog
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12545550.html
Copyright © 2011-2022 走看看