zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/j_CgHU4PnY82NMwJzOqHYg

     

    简单介绍Variable ROM Generation。

     

     

    1. jalAbstract

     

    jalAbstract是一条指令,跳转到抽象命令的指令:

     

    Instruction.JAL是jump and link指令:

     

    GeneratedUJ用于生成一个UJ格式的指令结构:

    JAL属于J-format。

     

    GeneratedUJ的定义如下:

     

    jalAbstract.setImm(ABSTRACT(cfg) - WHERETO)把跳转地址设置为ABSTRACT:

    当pc=WHERETO时,跳转目标地址即是ABSTRACT。

     

    jalAbstract的值存放在地址WHERETO处,亦即jalAbstract是存放在WHERETO地址处的指令:

     

    2. goReg

     

    goReg是一个寄存器:

     

    其复位值为假:

     

    如果goAbstract为真,其值为真:

     

    如果hartGoingWrEn为真,其值为假:

     

    hartGoingWrEn是写GOING寄存器的标志:

    GOING寄存器位于核心访问的地址空间中,所以写GOING寄存器的是核心执行的指令。

     

    总结一下:

    a. 要执行抽象命令时(goAbstract=true)为真;

    b. 开始执行抽象命令时(begins executing Debug Mode Instructions)为假;

     

    3. goAbstract

     

    goAbstract是一个标志位:

     

    表示将要执行command寄存器中的命令:

     

    4. goCustom

     

    goCustom也是一个标志位:

     

    表示是否访问Custom地址区间的寄存器:

     

    5. flags

     

    flags由1024个flagsBundle组成:

     

    其中go的值由goReg确定:

     

    resume的值由resume请求确定:

     

    flags用于在FLAGS地址处生成一组只读寄存器:

                 

     

     

  • 相关阅读:
    CSS
    网络通信
    模块与包
    python异常处理
    python基础考试一整理
    面向对象最后进阶
    面向对象-反射和__getattr__系列
    property、staticmethod和classmethod
    多态和封装
    scala构造器实战
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12545510.html
Copyright © 2011-2022 走看看