• 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:是否想要写;

     

  • 相关阅读:
    python之面向对象编程
    python的模块引用和查找路径
    python的迭代器、生成器、三元运算、列表解析、生成器表达式
    python文件操作
    lesson4-图像分类-小象cv
    lesson3-神经序列模型I-小象
    fast ai环境配置
    YOLO
    lesson2-cnn-fastai
    mask-code-python
  • 原文地址:https://www.cnblogs.com/wjcdx/p/16041065.html
Copyright © 2020-2023  润新知