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

专业的传媒行业网站开发广州一建建设集团

专业的传媒行业网站开发,广州一建建设集团,企业seo价格查询价格,重庆市建设网站首页前言 (1)此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。 (2)该课程相关代码gitee链接; (3)PLCT实验室实习生长期招聘:招聘信息链接 前置知识 RISC-V 汇编指令编码格式 &a…

前言

(1)此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。
(2)该课程相关代码gitee链接;
(3)PLCT实验室实习生长期招聘:招聘信息链接

前置知识

RISC-V 汇编指令编码格式

(1)在学习RISC-V的反汇编之前,我们需要先知道RISC-V的编码格式,RISC-V的编码格式有如下图6种。
(2)现在我们以RV32I为例子说明。RV32I的指令长度为32位,因此我们每次读取指令的时候,都是4字节4字节的抽取出来。
(3)RISC-V将一条指令分为了多个域(field),例如下面的R-type格式中32bit,有funct7rs2rs1funct3rd,opcode6个域(field)。每个域(field)都有自己的含义。
<1>funct3/funct7opcode 一起决定最终的指令类型。
<2>rs1,rs2表示寄存器被操作的寄存器。rd表对操作结束后,存放值的寄存器。
<3>imm,表示立即数,即一个有效数据。

在这里插入图片描述

大端序和小端序

(1)现在知道了RISC-V的数据长度和存储格式之后,我们还需要知道数据如何摆放的。这个就和C语言的大小端意思类似。
(2)RISC-V的指令在内存中按照 小端序 排列。
(3)大小端序就是看高位还是低位数据谁存放在低地址。大端序,高位数据存放在低地址。小端序,低位数据存放在低地址。为了方便理解,我举个例子。假设我们有数据地址从低到高:0x00 0x11 0x22 0x33 0x44 0x55 0x66 0x77
<1>首先抽4字节取出数据,0x00 0x11 0x22 0x330x44 0x55 0x66 0x77
<2>小端序,低位数据放在低地址,所以实际上读取的数据是0x332211000x77665544
<3>大端序,高位数据放在低地址,所以实际上读取的数据是0x001122330x44556677

在这里插入图片描述

实操

(1)很好,有了上面的认知之后,我们就可以开始反汇编了。现在我们尝试反汇编下面这四条汇编代码。
<1>首先,依照惯例,四字节抽取数据。
<2>因为RISC-V的指令是小端序,所以需要修改一下顺序。
<3>上面说了,funct3/funct7opcode 一起决定最终的指令类型。也就是bit[0:6]bit[12:14]bit[25:31]。从RISC-V 汇编指令编码格式可以知道,RISC-V有6种编码格式,但是一定会有opcode ,因此,我们优先查看bit[0:6]
<4>根据bit[0:6]我们即可知道此条命令的格式,如果没有funct3/funct7,那么这条命令就找到了,否则就开始对比funct3,如果之后还有funct7继续对比,最后就可以找到指令了。

_start:li x6,1li x7,-2add x5,x6,x7
stopj stop
-----------------
//四字节抽取数据
1303 1000
9303 e0ff
b302 7300
6f00 0000
-----------------
//小端序存储,改变数据位置
0010 0313
ffe0 0393
0073 02b3
0000 006f

在这里插入图片描述

(2)按照上述步骤,想必大家一定找到的是如下三条指令。

在这里插入图片描述

(3)这个时候肯定就会有人要问了,我们的汇编代码里面明明是jli命令呀,怎么这里找到的是jaladdi呢?这个就又涉及到另外的一个知识点了 — 伪指令。为了简化编程难度,大佬们将一些特殊的指令用基础指令封装起来了。这个有点类似与C语言的宏定义,如下:

#define register_base    0x6666
#define register_a       register_base
#define register_b       register_base + 0x08

在这里插入图片描述
在这里插入图片描述

参考

(1)riscv-spec-20191213.pdf;
(2)汪辰老师公开课;
(3)汪辰老师公开课第五课课件;
(4)大端序(Big-endian)和小端序(Little-endian)网络字节序;
(5)RISC-V-Reader-Chinese-v2p1.pdf;

http://www.yayakq.cn/news/309469/

相关文章:

  • 企业网站建设计划老王传奇新开网站
  • 如何搭建网站平台网站制作需求表
  • 牛商网专注营销型网站建设怎么在百度上打广告
  • 建设电子书阅读网站网站为什么被百度k了
  • 天津网站开发培训学校做模板下载网站挣钱吗
  • 苏中建设网站网站建设 橙
  • 制作一个静态网站源码房产公司网站建设方案
  • 万网网站备案多久新冠疫苗最新消息
  • 如何销售自己产品方法有哪些北京网站制作网站优化
  • wordpress数据库在哪网站建设 seo
  • 推广 电子商务网站建设app开发平台开发
  • 福建省建设法制协会网站浙江省建设厅老网站
  • 四川建设厅官方网站九大员通知html5网站链接标签
  • 没有网站怎么做链接视频播放器长沙网页制作模板的网站
  • 医院网站建设需要多少钱网站推广工具有啥
  • 如何建网站做微信用什么网站
  • 网站.cc域名昆明企业建网站多少钱
  • 网站统计代码怎么添加在线画画网站
  • 用thinkphp做的网站自己能建设网站
  • 福建省建设执业资格注册中心网站wordpress英文版改成中文
  • 网站建设素材图片如何在iis下建设网站
  • 外国食品优秀设计网站海丰网站制作
  • 娱乐网站建设流程交互比较好的网站
  • 网站推广的方式手段有哪些做远程培训网站用什么系统
  • 广东哪有做网赌网站梧州网站优化价格
  • 电子商城网站开发项目描述承德做网站公司
  • 贵州网站推广电话网络文化经营许可证要多少钱
  • 网站开发成本分析设计模板免费网站
  • 杭州网站建设哪家快速上线个人博客网页设计html模板
  • 建站工具模板建站出海