请选择 进入手机版 | 继续访问电脑版

risc-v中文社区

 找回密码
 立即注册
查看: 1066|回复: 1

Arm指令后缀!^

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2022-10-17 23:13:36 | 显示全部楼层 |阅读模式
1: !的作用
ldmia r0, {r2 - r3}
ldmia r0!, {r2 - r3}
感叹号的作用就是r0的值在ldm过程中发生的增加或者减少最后写回到r0去,也就是说ldm时会改变r0的值。
2: ^ 的作用
ldmfd sp!, {r0 - r6, pc}
ldmfd sp!, {r0 - r6, pc}^
//stmfd sp!,{r0-r6,pc}^(有没有问题????)
^的作用:在目标寄存器中有pc时,会同时将spsr写入到cpsr,一般用于从异常模式返回。
回复

使用道具 举报

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
 楼主| 发表于 2022-10-17 23:22:57 | 显示全部楼层
stm/ldm指令语法格式:
CMD{cond}  Rn{!}, reglist{^}

CMD  为命令有LDM*/STM*
cond  为条件码(可选)
Rn    为基址寄存器
{!}   可选后缀,选用后缀后表示请求回写,即当数据传输完成后将最后的地址写入到基址寄存器Rn中,不选用则基址寄存器内容不改变
{^}  该后缀表示后面的寄存器都是用户模式下的寄存器;其次当CMD为LDM且寄存器列表中包含R5(PC)时,除正常传输数据还需要将SPSR复制到CPSR



回复

使用道具 举报

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

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-19 08:40 , Processed in 0.014283 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表