为什么这里不能回写SP

sidney 2008-12-24 12:41:16
我用的是周立功的easyarm板子
其中陈明计写的IRQ.S中断处理汇编宏中有这样一句汇编

STMFD SP, {R3,LR}^

我觉得应该要回写,SP,以便后来把它们弹出来,当我把这一句改为

STMFD SP!, {R3,LR}^ 后

ADS提出警告说

Warning : A1329W: Unsafe instruction (forced user mode xfer with write-back to base)




我就搞不懂啊,为什么不能回写?我觉得应该要回写啊,要不然后来怎么知道R3和LR保存的地址呢?

另外,这个SP是用户模式的SP还是IRQ模式的SP?
...全文
64 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xw1122 2008-12-25
  • 打赏
  • 举报
回复
此处^操作符不允许回写,经过AXD仿真验证,回写操作会写入sp_usr而不是sp_irq,此操作属于不安全的操作,并且编译之后,ADS编译器会给出响应的警告。

此处应该使用irq模式的SP,如果加了^回写操作会写入sp_usr而不是sp_irq

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧