353|1

43

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【读书】《RISC-V 体系结构编程与实践(第2版)》-- 指令集 [复制链接]

本帖最后由 zsy-s 于 2024-12-7 18:24 编辑

基础知识

指令集与处理器架构深度绑定,决定了cpu的实现方式,由纯粹的二进制构成。

二进制的指令,人们是无法阅读和理解的, 所以就出现了汇编指令。

指令集的不同,相应的汇编指令也随着改变,汇编指令是机器指令的翻译

本机的重点是处理器指令集,risc-v使用了精简指令集。

 

指令集的组成

以下是官方提=手册上的提供的指令集:

 

本书基于得指令集是rv64imafdcsu

指令集的格式如下

 

指令集的分成6类:

作用 类型
用于寄存器-寄存器算术操作 R 类型指令
寄存器与立即数的算数或加载指令 I 型指令
 存储指令 S 型指令
条件跳转指令 B 类型指令
长立即数操作指令 U 型指令
无条件跳转 J 型指令

 

加载和存储指令

数据的移动方向都是从右边到左边。

加载指令 l{d|w|h|b}{u} rd , offset(rs1)

格式: (从lsb到msb)load + dest +width+ src base + offset 。

解释:从以base为基地址偏移offset处的地址数据,加载width宽度数据到 dest 寄存器里去。

 

存储指令 s{d|w|h|b} rs2,offset(rs1)

 

移位指令

移位操作主要由逻辑左移sll,算术右移srl 逻辑右移sra,算术和逻辑的区别是是否考虑符号位。

算术移位,符号位有意义,所以,右移时候最高位按照符号位补位。

在我们实际c语言环境下,右移和左移基本都是逻辑移位。

微操作指令

与and ,或or,  非not, 异或xor

异或相同为0 不同是1,堪称逻辑运算利器,就是难用一点,我写代码时候偶尔用,容易逻辑错误。

 

算术运算指令

 仅有 加add, 减sub

 

比较指令

有符号寄存器和寄存器比较指令         slt

无符号存器和寄存器比较指令            sltu

有符号寄存器和立即数比较指令       slti 

无符号寄存器和立即数比较指令       sltiu

 

跳转指令

jal   跳转并赋值下一条返回指令到链接寄存器中

beq   相等跳转

bne    不相等跳转

 

csr指令

此指令用于控制系统提供的控制和状态寄存器

寻址

寻址包括长距离寻址和短距离寻址,长距离寻址按照4k位锚点寻址,短距寻址可以在4k范围内任意寻址。

 

不懂的点

pic(position independent code)位置无关代码,一般用于共享库中,因为使用的时候使用相对地址,所以整个系统运行时可以只有一份副本。

编译时候需要开启此特性,不太理解设计的原理是什么,如何去查看他。

 

伪指令是在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。没有对应得操作码,不会生成真正的机器指令。只用于汇编过程中为汇编程序提供汇编信息。

关于伪指令,还是不理解。

此帖出自ARM技术论坛

最新回复

能够阅读和深度理解指令集,也是一种享受。感谢分享。  详情 回复 发表于 2024-12-8 10:23
点赞 关注
 

回复
举报

72

帖子

2

TA的资源

一粒金砂(中级)

沙发
 
能够阅读和深度理解指令集,也是一种享受。感谢分享。
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表