这是描述信息

matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式

matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式

matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式

matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式

matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式

matter协议芯片乐鑫科技芯片代理商RISC-V寻址方式,寻址方式是处理器执行指令时获取数据地址,或者下一条指令地址的方式。RISC-V 处理器支持立即数寻址、寄存器寻址、寄存器间接寻址和程序计数(PC)相对寻址 4 种寻址方式。


1、立即数寻址
立即数寻址是简单直接的寻址方式,指令中直接以常数作为操作数。在RISC-V 汇编语句中,通常将字母“i”置于操作符末,表示立即数操作指令。例如,加法运算“add”操作的两个源操作数都是寄存器,而“addi”操作的一个源操作数是器,另一个操作数是立即数。在matter协议芯片乐鑫科技芯片代理商RV32I不同类型指令中立即数的取值范围有所差别。例如,操作“lui”的立即数范围是 20 位,“addi”和“andi”运算的立即数范围是 12位。使用 RV32I 指令组合,可以把任意 32 位整数装载到寄存器中。


例如,matter协议芯片乐鑫科技芯片代理商通过下列两条指令,能够将 32 位数 0x12345678 装载到寄存器 t0 中

1 lui t0,0x12345 //t0 =0x12345000
2 addi t0,t0,0x678 //t0=0x12345678

第1行,“lui”将一个 20 位常量加载到寄存器 t0 的第 12 位到第 31位,即t0[31:12],右边的 12 位 t0[11:0]填充 0。

第 2行,“addi”将 12 位立即数加到 t0 的第 0位到第 11 位,即 to[11:0]。

在装载和存储指令中,地址偏移量“offset”也是立即数,其取值范围是 12 位,即offset[11:0]。


2、寄存器寻址
寄存器寻址指令的源操作数是寄存器,从寄存器读取数据,并把结果保存到寄存器中。在matter协议芯片乐鑫科技芯片代理商RV32I指令集中,“add”“sub”“and”“or”和“xor”等运算指令的所有操作数都是寄存器,是典型的寄存器寻址指令。末字母非“i”的指令是寄存器寻址指令。


3、寄存器间接寻址
寄存器间接寻址指令以寄存器的数值作为内存地址(存储地址的寄存器又称为地址寄存器),从该内存地址所指向的存储单元读取数据,或者将数据写入到内存地址所指向的存储单元。如果指令中有偏移量“offset”,则存储单元的地址是地址寄存器的数值与“offset”之和。


下面通过示例说明间接寻址指令的操作。
列出了 0x800000 至 0x80001f 内存段中每个字节的数据。其中,第 1列是4字节对齐地址,第 1行是各字节的偏移地址,其他部分是相应内存单元中的数据

内存数据

内存地址    0    1    2    3
0x800000~0x800003    0x00    0xl0    0x20    0x30
0x800004~0x800007    0x04    0x14    0x24    0x34
0x800008~0x80000b    0x08    0x18    0x28    0x38
0x80000c~0x80000f    0x0c    0xlc    0x2c    0x3c
0x800010~0x800013    0x10    0x20    0x30    0x40
0x800014~0x800017    0x14    0x24    0x34    0x44
0x800018~0x80001b    0x18    0x28    0x38    0x48
0x80001c~0x80001f    0xlc    0x2c    0x3c    0x4c


RISC-V 仅支持小端(litle-endian)存储格式。在字或半字数据中,数据中低位字节存放在内存中的低地址。

如果tl寄器中初始数值为 0x800000,则下列第1条、第 2条和第3条语句执行后 t0 中的数值分别为 0x302010000、x38281808 和 0x28。

1 Iw t0,(t1)    //t0=0x30201000
2 lw t0,8(t1)    //t0=0x38281808
3 Ib t0,10(t1) //t0 = 0x28


4、PC 相对寻址
PC相对寻址以当前 PC值为基地址,以指令中操作数为偏移量,两者相加后到新的内存地址。处理器从新的内存地址读取数据,或跳转到新的程序地址。matter协议芯片乐鑫科技芯片代理商RISC-V用PC相对寻址实现条件跳转和无条件跳转。在下列汇编程序中第4行语句中的“end”汇编后转成立即数 12,第 6 行中的“start”汇编后转成立即数-16,都是内存中当前指令到目标位置的距离,地址增大的方向为正,地址减小的向为负。条件分支指令立即数范围是±4 KB。

1 start:
2 add t0, t0, t1
3 ld t2,0(t0)
4 bne t2, t3, end //if(t2 != t3) PC= PC+ 12
5 addi t4, t4,1
6 beg t0, t0, start //PC= PC-16
7 end ;


下列两条是无条件跳转指令,语句 1 中“jal”跳转的范围是±1 MB,语句 2中“jalr”跳转的范围是±2 GB。

1 jal ra, dst //PC= PC+dst,ra= PC+ 4
2 jalr ra,0(t0) //PC=t0,ra= PC+4

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图

 

免责声明:本网站部分图片和文字内容以及视频可能来源于网络,转载目的在于传递更多信息,并不代表本网站赞同其观点或证实其内容的真实性。如涉及作品内容、版权和其它问题,请在30日内与本网站联系,我们将在第一时间删除内容!本站拥有对此声明的最终解释权。