当前位置: 首页 > article >正文

[RISCV]

详细说明

表格1:函数概述

函数名称功能描述处理的RISC-V指令
InstructionMapFind根据给定的指令代码查找对应的指令映射(InstructionMap)。所有通过映射表定义的RISC-V指令
Instruction::to_str将指令对象转换为对应的汇编语言字符串表示。所有通过映射表定义的RISC-V指令
Instruction::code_from_tokens根据分词后的指令生成对应的指令代码。所有通过基本和伪指令映射表定义的RISC-V指令
Instruction::pseudo_from_tokens将伪指令转换为一系列真实指令代码。伪指令如 nop, la, li, call, tail, sext.b, sext.h, zext.h, zext.w
Instruction::base_from_tokens解析基本指令并生成指令代码。所有通过基本指令映射表定义的RISC-V指令
Instruction::parse_field解析指令的单个字段(如寄存器、立即数)并将其编码到指令代码中。所有需要字段解析的RISC-V指令
Instruction::update更新指令中的某个字段的值,并重新编码该字段。所有RISC-V指令(通用)
Instruction::modify_pseudoinst_imm根据伪指令的修饰符调整立即数值。需要立即数值调整的伪指令
TokenizedInstruction::from_line将一行汇编指令字符串分词,提取出指令的名称和参数。所有RISC-V指令(通用)
Instruction::append_recognized_instructions将所有已识别的指令名称添加到给定的QStringList列表中,用于语法高亮或自动补全。所有通过映射表定义的RISC-V指令及已识别的伪指令
Instruction::append_recognized_registers将所有已识别的寄存器名称添加到给定的QStringList列表中,用于寄存器名的自动补全或语法高亮。所有RISC-V寄存器
Instruction::extend对给定的值进行符号扩展,确保负数的正确表示。所有需要符号扩展的RISC-V指令
Instruction::set_symbolic_registers启用或禁用符号化寄存器名称,决定指令显示时使用符号名称(如x1)还是数字编号。影响所有RISC-V指令的寄存器显示方式
Instruction::operator==重载等于运算符,比较两个指令对象是否相同。所有RISC-V指令(基于指令代码)
Instruction::operator!=重载不等于运算符,比较两个指令对象是否不同。所有RISC-V指令(基于指令代码)
Instruction::code_from_string将字符串形式的指令转换为对应的指令代码。所有RISC-V指令(通过分词和解析)

表格2:指令映射表概述

映射表名称功能描述包含的RISC-V指令
LOAD_map映射加载指令。lb, lh, lw, ld, lbu, lhu, lwu
STORE_map映射存储指令。sb, sh, sw, sd
OP_IMM_map映射立即数型算术指令。addi, slli, slti, sltiu, xori, srisrli, srai), ori, andi
SR_map映射右移指令。srl, sra
OP_ALU_map映射ALU操作指令。add, sub, sll, slt, sltu, xor, srl, sra, or, and
OP_MUL_map映射乘除法指令。mul, mulh, mulhsu, mulhu, div, divu, rem, remu
OP_map综合映射ALU和乘除法指令。add, sub, sll, slt, sltu, xor, srl, sra, or, and, mul, mulh, mulhsu, mulhu, div, divu, rem, remu
BRANCH_map映射分支指令。beq, bne, blt, bge, bltu, bgeu
ENVIRONMENT_AND_BREAKPOINTS_map映射环境调用和断点指令。ecall, ebreak
SYSTEM_PRIV_map映射特权系统指令。sret, mret
SYSTEM_map映射CSR(控制和状态寄存器)指令。csrrw, csrrs, csrrc, csrrwi, csrrsi, csrrci
MISC_MEM_map映射杂项内存指令。fence, fence.i
SRI_32_map映射32位右移指令。srliw, sraiw
OP_IMM_32_map映射32位立即数型算术指令。addiw, slliw, sriw
ADD_32_map映射32位加法指令。addw, subw
SR_32_map映射32位右移指令。srlw, sraw
OP_ALU_32_map映射32位ALU操作指令。addw, subw, sllw, srlw, sraw
OP_MUL_32_map映射32位乘除法指令。mulw, divw, divuw, remw, remuw
OP_32_map综合映射32位ALU和乘除法指令。addw, subw, sllw, srlw, sraw, mulw, divw, divuw, remw, remuw
I_inst_map顶层映射I型指令。load, misc-mem, op-imm, auipc, op-imm-32, store, amo, op, lui, op-32, branch, jalr, jal, system
PSEUDO_inst_map映射伪指令。伪指令如 .section, .global
R_inst_map映射R型指令。伪指令 vsetvl(RVV扩展指令)
C_inst_map映射压缩指令。I 型指令,R 型指令

说明

  1. 函数概述

    • 通用函数InstructionMapFindInstruction::to_strInstruction::code_from_tokens等,主要负责指令的查找、转换和编码,涵盖了所有定义在映射表中的RISC-V指令。
    • 伪指令处理函数如Instruction::pseudo_from_tokensInstruction::modify_pseudoinst_imm等,专门用于处理汇编中的伪指令,将其转换为实际的RISC-V指令序列。
    • 寄存器与符号化相关的函数如Instruction::append_recognized_registersInstruction::set_symbolic_registers,用于管理和显示寄存器名称。
  2. 指令映射表

    • 基本指令映射表LOAD_mapSTORE_mapOP_IMM_map等,分别对应RISC-V指令集中的不同类别指令,每个映射表包含了该类别下所有相关的具体指令。
    • 综合映射表OP_mapOP_32_map,将多个子类别指令整合在一起,便于统一处理。
    • 伪指令映射表PSEUDO_inst_map,定义了汇编语言中的伪指令及其对应的实际指令转换关系。

例子

  • 函数 Instruction::to_str

    • 功能:将指令对象转换为汇编语言字符串。
    • 处理的指令:例如,对于add x1, x2, x3指令,它会解析add操作及其三个寄存器参数,生成对应的字符串表示。
  • 映射表 LOAD_map

    • 功能:定义加载指令的编码与解析规则。
    • 包含的指令:例如,lw(加载字)、ld(加载双字)等

http://www.kler.cn/a/406996.html

相关文章:

  • 李宏毅机器学习课程知识点摘要(6-13集)
  • 力扣面试经典 150(上)
  • PyTorch图像预处理:计算均值和方差以实现标准化
  • 快速图像识别:落叶植物叶片分类
  • 常用的消息中间件
  • Android上运行Opencv(TODO)
  • 【【简单systyem verilog 语言学习使用三--- 新新adder加法器-覆盖率测试】】
  • av_image_get_buffer_size 和 av_image_fill_arrays
  • postsql 以二进制的数据导出sql内容
  • 矩阵的拼接
  • 已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不允许的 MIME 类型 (“text/plain”)。
  • LLM-Pruner: On the Structural Pruningof Large Language Models
  • iPhone或iPad接收的文件怎么找?怎样删除?
  • Window脚本自动化uiautomation详解_番茄出品
  • 【C++】继承(inheritance)
  • 【优先算法】专题——双指针
  • RSA算法
  • 4-测试viper读取配置文件数据 --开源项目obtain_data测试
  • el-table vue3统计计算数字
  • 深入理解Rust的模式匹配
  • qt 发布简单项目
  • 【项目日记】仿mudou的高并发服务器 --- 实现缓冲区模块,通用类型Any模块,套接字模块
  • IDEA中Spring Initializr jdk1.8 没有Java8选项问题处理办法
  • JavaScript的类型转换
  • 第二十六章 TCP 客户端 服务器通信 - $ZB 和 READ 命令
  • goframe开发一个企业网站 MongoDB 完整工具包19