• Rocket core Consts


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

     

    简单介绍Consts的实现。

     

     

    1. ScalarOpConstants

     

    定义标量操作相关的常量:

     

    1) MT

     

    定义操作的内存类型:

     

    如下图所示load指令中的使用:

     

     

    mtSize表示操作数的大小,以字节数为单位,其值为2的幂,即:

    操作数的字节数 = 2^mtSize

     

    mtSigned表示操作数是有符号数还是无符号数;

     

    2) BR

     

    定义branch的类型:

     

    如下图所示Branch指令中使用:

     

    3) A1

     

    定义参数1(argument 1)的信息:

    其中:

    a. A1_ZERO:表示参数1为0;

    b. A1_RS1:表示参数1使用RS1;

    c. A1_PC:表示参数1使用PC的值;

     

    4) IMM

     

    定义立即数的类型:

     

    根据指令格式的不同,立即数的编码方式也不相同:

     

    5) A2

     

    定义参数2(argument 2)的信息:

    其中:

    a. A2_ZERO:表示参数2的值为0;

    b. A2_SIZE:表示参数2的值是一个大小,比如jal指令中为距离当前pc的大小;

    c. A2_RS2:使用RS2作为参数2;

    d. A2_IMM:使用立即数作为参数2;

     

    6) Y/N/X

     

    定义三个基本的Patten:

    a. X:值未知的一个比特;

    b. Y:值为1的一个比特;

    c. N:置位0的一个比特;

     

    7) DW

     

    定义操作数的宽度:

    a. DW_32:表示操作数为32位宽;

    b. DW_64:表示操作数为64位宽;

    c. DW_XPR:表示操作数的宽度与寄存器宽度一致;这里DW_XPR = DW_64,表示当前配置下XLen = 64;这里没有从全局的配置中获取,而是直接写死,是修改时需要注意的一个点。

     

    2. MemoryOpConstants

     

    定义内存操作相关的常量:

     

    1) M

     

    定义指令内存操作的相关信息:

     

    各操作含义如下表格:

     

    LR/SC指令描述如下:

     

    2) isXXX

     

    定义一些简便方法:

    a. isAMOLogical:是否原子逻辑运算;

    b. isAMOArithmetic:是否原子数学运算;

    c. isAMO:是否原子操作;

    d. isPrefetch:是否预处理;

    e. isRead:是否读操作;

    f. isWrite:是否写操作;

    g. isWriteIntent:是否想要写;

     

  • 相关阅读:
    初步掌握HBase
    基于HBase0.98.13搭建HBase HA分布式集群
    获取当前目录中的文件个数
    MapReduce链接作业
    MapReduce二次排序
    使用map端连接结合分布式缓存机制实现Join算法
    字符串匹配算法-BM
    统计电视机顶盒中无效用户数据,并以压缩格式输出有效用户数据
    字符串匹配算法-KMP
    MapReduce中的Join算法
  • 原文地址:https://www.cnblogs.com/wjcdx/p/16041065.html
Copyright © 2020-2023  润新知