完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本书第二至十章都是讲RISC-V指令集,最后第十一章讲了RISC-V的未来可选择扩展。本篇梳理学习基础指令集RV32I。 RV32I指令集如下图,取下划线字母即可组成完整的RV32I指令集。 图1:RV32I指令集 在讲RISC-V各个阶段,横向比较ARM架构,体现出RISC-V的优越性。 ●RV32I寄存器 RISC-V基础指令集RV32I,只有6种基本指令格式:用于寄存器之间操作的R型、用于短立即数和取数操作的I型、用于存数操作的S型,用于条件分支的B型、用于长立即数的U型和用于无条件跳转的J型。 RV32I有31个寄存器和恒为0的x0寄存器。 图2:RV32I寄存器 ●RV32I整数计算 RV32I简单算数指令(add、sub)、逻辑运算指令(and、or、xor)和移位指令(sll、str、sra),比较操作指令(slt、sltu、slti、sltiu),将slt和and、or、xor等逻辑运算指令组合,可以处理复杂的逻辑表达式。 ●RV32I取数和存数 RV32I支持32位的取数与存数指令(lw、sw),有符号和无符号的字节和半字的取数指令(lb、lbu、lh、lhu)以及字节和半字的存数指令(sb、sh). ●RV32I条件分支 RV32I可比较两个寄存器,并根据比较结果是否相等(beg)、不相等(bne)、大于或等于(bge)、小于(blt)决定是否跳转。后两种为有符号比较,RV32I也提供相应的无符号版本:bgeu和bltu。剩余两种比较操作(大于和小于或等于)可简单通过交换操作数实现. ●RV32I无条件跳转 跳转并链接(ja1)指令具有两种功能:支持过程调用和无条件跳转。跳转并链接指令的寄存器版本(jalr)同样有多种用途。它能调用那些地址需要动态计算的过程,也能将ra和x0分别作为源寄存器和目的寄存器,实现从过程中返回。 ●其他RV32I指令 控制状态寄存器指令(csrrc、csrrs、csrrw、csrrci、csrrsi、csrrwi可轻松访问程序性能计数器。这些64位的计数器记录了系统时间、时钟周期以及执行的指令数,可通过CSR指令一次读取其中的 32 位。eca11 指令用于向执行环境发送请求。fence指令用于对外部可见的设备I/0和访存请求进行定序,外部可见指对其他线程、外部设备或协处理器可见。 通过对RV32I的学习,对基础指令集有了更进一步认识,了解到RISC-V较ARM的有点,激发了兴趣。后面会保持持续学习,适时分享。 |
|
相关推荐
|
|
《具身智能机器人系统》第1-6章阅读心得之具身智能机器人系统背景知识与基础模块
810 浏览 0 评论
944 浏览 11 评论
841 浏览 0 评论
【「嵌入式系统设计与实现」阅读体验】“基于车牌识别的自动地锁”案例学习
913 浏览 0 评论
【「HarmonyOS NEXT启程:零基础构建纯血鸿蒙应用」阅读体验】+ 8-10章有感
621 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 09:56 , Processed in 0.634732 second(s), Total 64, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号