0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【RT-Thread学习笔记】RISC-V汇编基础三大块知识

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-07-30 11:01 次阅读

1 前言

嵌入式的,或多或少都接触ARM

但是近些年随着科技的发展,CPU的架构家族中,新增了一个叫RISC-V的家伙。

RISC-V(读作“RISC-FIVE”)是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经四代RISC处理器原型芯片。每一代RISC处理器都是在同一人带领下完成,那就是加州大学伯克利分校的David A. Patterson教授。与大多数ISA相反,RISC-V ISA可以免费地用于所有希望的设备中,允许任何人设计、制造和销售RISC-V芯片和软件。它虽然不是第一个开源的的指令集(ISA),但它很重要,因为它第一个被设计成可以根据具体场景可以选择适合的指令集的指令集架构。基于RISC-V指令集架构可以设计服务器CPU,家用电器cpu,工控cpu和用在比指头小的传感器中的cpu。

更多详细介绍,请参考百度百科,RISC-V简介.

2 RISC-V知识图谱

本文先列个大纲,后续有时间再补充。

image-20220130231809831

3 RISC-V汇编基础三大块

这里整理了RISC-V汇编中非常基础的三大块知识,了解了这三大块内容基本可以看懂甚至编译一些简单的汇编程序。

3.1 寻址方式

RISC-V分支指令寻址,在之前的B类型指令就是其中之一。 这种格式可以表示从-4096到4094的分支地址,以2的倍数表示。B型格式包括一个7位操作码、一个3位功能码、两个5位的寄存器操作数( rs1和 rs2)和一个12位地址立即数。该地址使用特殊的编码方式,简化了数据通路设计,但使组装变得复杂。下面这条指令

  1. bne x10,x11,2000 // if x10 != xll,go to location 2000 = 0111 1101 0000
在这里插入图片描述

其中条件分支的操作码是11001112,而bne 的funct3码是0012 RISC-V的无条件跳转–链接指令(jal),是分支寻址的另一种方法,也是唯一使用J型格式的指令。该指令由一个7位操作码、一个5位目标寄存器操作数(rd)和一个20位地址立即数组成。链接地址,即jal之后的指令的地址,被写入rd 中。

如果程序的地址必须适合这个20位字段,则意味着没有程序可能大于220,所以另一种方法是指定一个与分支地址偏移量相加的寄存器,这样就允许程序大到264,并且仍然能够使用条件分支指令,以便分支指令可以按如下来计算:

程序计数器=寄存器内容+分支地址偏移量 这样就允许程序大到2^64,并且仍然能够使用条件分支指令

立即数寻址,操作数是指令本身的常量。 寄存器寻址,操作数在寄存器中。 基址或偏移寻址,操作数于内存中,其地址是寄存器和指令中的常量之和。 PC相对寻址,分支地址是PC和指令中常量之和。 注: 加载和存储对字节、半字、字或双字的访问有不同的版本

3.2 寄存器的用途

3.2.1 RISC-V的寄存器列表

image-20220130232441214

3.2.2 RISC-V寄存器在汇编代码中使用

image-20220130232601148

3.3 汇编指令

RISC-V有六种基本指令格式:

  • R 类型指令,用于寄存器-寄存器操作
  • I 型指令,用于短立即数和访存 load 操作
  • S 型指令,用于访存 store 操作
  • B 类型指令,用于条件跳转操作
  • U 型指令,用于长立即数
  • J 型指令,用于无条件跳转

4 更多分享

欢迎关注我的github仓库01workstation,日常分享一些开发笔记和项目实战,欢迎指正问题。

同时也非常欢迎关注我的CSDN主页和专栏:

【CSDN主页:架构师李肯】

RT-Thread主页:架构师李肯】

【C/C++语言编程专栏】

【GCC专栏】

信息安全专栏】

【RT-Thread开发笔记】

freeRTOS开发笔记】

【BLE蓝牙开发笔记】

【ARM开发笔记】

【RISC-V开发笔记】

有问题的话,可以跟我讨论,知无不答,谢谢大家。

5 参考链接

  • RISC-V 生态架构浅析
  • RISC-V寄存器
  • RISC-V指令

以上参考资料,由本人整理,但来源于网络,侵删!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4975

    文章

    18233

    浏览量

    287779
  • 汇编语言
    +关注

    关注

    14

    文章

    404

    浏览量

    35185
  • 汇编
    +关注

    关注

    2

    文章

    214

    浏览量

    25730
  • RT-Thread
    +关注

    关注

    31

    文章

    1147

    浏览量

    38852
  • RISC-V
    +关注

    关注

    41

    文章

    1883

    浏览量

    45028
收藏 人收藏

    评论

    相关推荐

    RT-Thread学习笔记】使用scons命令生成静态库

    RT-Thread学习笔记】如何使用scons 命令中buildlib的生成静态库?
    的头像 发表于 07-27 09:13 4705次阅读
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】使用scons命令生成静态库

    RT-Thread学习笔记】80x86汇编基础的三大块知识

    RT-Thread学习笔记】80x86汇编基础的三大块知识
    的头像 发表于 07-30 10:57 1595次阅读
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】80x86<b class='flag-5'>汇编</b>基础的<b class='flag-5'>三大块</b><b class='flag-5'>知识</b>

    RT-Thread学习笔记】ARM汇编基础的三大块知识

    RT-Thread学习笔记】ARM汇编基础的三大块知识
    的头像 发表于 07-30 10:59 1596次阅读
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】ARM<b class='flag-5'>汇编</b>基础的<b class='flag-5'>三大块</b><b class='flag-5'>知识</b>

    RISC-VRT-Thread有什么区别

    RISC-VRT-Thread有什么区别?仅仅是软件层面吗?
    发表于 02-05 22:23

    RT-Thread Studio(对芯来科技RISC-V处理器内核开发的全面支持

    RISC-V生态仍然存在着不足,配套的软硬件、工具链、OS都需要均衡的发展。在此环境下RT-Thread Studio(物联网一站式开发环境)对芯来科技RISC-V处理器内核开发的全面支持,为
    发表于 11-14 09:26

    【报名截止】RT-Thread X RISC-V创新应用大赛

    架构芯片进行应用创新探索,RT-Thread联手中科蓝讯、沁恒微电子、电子发烧友发起RT-Thread X RISC-V 创新应用设计大赛。本次大赛面向全国企业、创客团队,工程师,高校等电子爱好者
    发表于 09-14 15:21

    RT-thread移植教程(FreeRTOS、STM32、RISC-V

    指南-RISC-V本文主要记录将RT-thread标准版(v4.0.3)移植到risc-v双核U74的移植内容及其步骤。本文主要目的是记录移植步骤方便有需要者能快速了解移植的几个步骤和
    发表于 06-16 14:49

    risc-v峰会亮点 RT-ThreadRISC-V的支持

    在第一届RISC-V中国峰会上看点很多,我们来看看risc-v峰会其中一个非常重要的亮点 ;RT-ThreadRISC-V的支持。 据悉 RT-T
    发表于 06-23 11:29 7605次阅读
    <b class='flag-5'>risc-v</b>峰会亮点 <b class='flag-5'>RT-Thread</b>对<b class='flag-5'>RISC-V</b>的支持

    火热报名中!RT-Thread X RISC-V创新应用大赛

    RT-Thread联手中科蓝讯、沁恒微电子、电子发烧友发起RT-Thread X RISC-V 创新应用设计大赛。
    的头像 发表于 09-14 19:35 2066次阅读
    火热报名中!<b class='flag-5'>RT-Thread</b> X <b class='flag-5'>RISC-V</b>创新应用大赛

    沁恒(WCH)和RT-Thread达成合作,共建RISC-V应用生态

    沁恒微电子就RISC-V开发应用生态建设与睿赛德科技(RT-Thread)签署合作协议,双方将紧密合作基于沁恒RISC-V MCU和RT-Thread物联网操作系统打造
    发表于 09-18 17:37 2859次阅读
    沁恒(WCH)和<b class='flag-5'>RT-Thread</b>达成合作,共建<b class='flag-5'>RISC-V</b>应用生态

    RT-Thread Nano入门学习笔记

    RT-Thread Nano入门学习笔记
    发表于 11-26 12:36 20次下载
    <b class='flag-5'>RT-Thread</b> Nano入门<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    RT-Thread 内核学习笔记 - 理解defunct僵尸线程

    RT-Thread 内核学习笔记 - 内核对象rt_objectRT-Thread 内核学习笔记
    发表于 01-25 18:19 8次下载
    <b class='flag-5'>RT-Thread</b> 内核<b class='flag-5'>学习</b><b class='flag-5'>笔记</b> - 理解defunct僵尸线程

    RT-Thread学习笔记 RT-Thread的架构概述

    的种种优越之处。RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过 16 个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富
    的头像 发表于 07-09 11:27 3977次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b> <b class='flag-5'>RT-Thread</b>的架构概述

    RT-Thread学习笔记】Makefile的FORCE

    RT-Thread学习笔记】十分钟学会Makefile的FORCE
    的头像 发表于 07-30 13:55 1623次阅读
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】Makefile的FORCE

    RT-Thread学习笔记】用memwatch排除内存泄露

    RT-Thread学习笔记】使用memwatch排除内存泄露
    的头像 发表于 07-30 14:01 1693次阅读
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】用memwatch排除内存泄露