打印
[MM32软件]

keil mm32f5333编译问题咨询

[复制链接]
115|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
itrue|  楼主 | 2024-7-3 09:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
mdk 5.38编译 mm32f5333,移植一个工程代码时,编译报错,不支持csrr汇编指令,但是我查了一下f5333使用是armv8架构,应该是支持csrr这个汇编指令的,请问有哪位大神知道这个是为什么吗?要如何解决

IMG_20240703_092256.jpg (251.03 KB )

IMG_20240703_092256.jpg

使用特权

评论回复
沙发
sujingliang| | 2024-7-3 12:34 | 只看该作者
在RISC-V架构的汇编语言中,csrr 指令用于从控制和状态寄存器(CSR, Control and Status Register)中读取值到通用寄存器中。这条指令特别用于访问RISC-V的特定硬件特性,如时钟、性能计数器等。

在你给出的指令 csrr r0, timeh 中:

csrr 是“Control and Status Register Read”的缩写,表示这是一个从CSR读取数据到通用寄存器的指令。
r0 是目标通用寄存器的编号,RISC-V架构中,r0 通常被用作零寄存器,其值始终为零。然而,在一些上下文中,使用 r0 作为目标寄存器来读取CSR的值是合法的,尽管这种用法可能不常见或特定于某些应用场景。通常,我们会选择一个非零的寄存器来存储读取的值。
timeh 是被读取的CSR的名称。在RISC-V中,timeh 寄存器通常用于存储高32位的时间计数器值。RISC-V的时间计数器是一个64位的计数器,它以一定的频率(如时钟频率)递增,可以用来测量时间间隔或作为系统运行的基准。timeh 寄存器包含了这个64位计数器的高32位,而另一个CSR(如timel)则包含低32位。

好像csrr是RISC-V下的指令。我对汇编一窍不通,上面是文心一言的答复。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

粉丝