找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

Keil MDK下 記憶體定址方式

[复制链接]
跳转到指定楼层
楼主
hiskey 发表于 2014-5-9 14:33:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位先進好,
小弟最近剛使用Coretex-M0,有很多不懂的地方,剛剛試著對記憶體某個位置+0x4C的offset的做寫入的動作.
觀察他編譯後的結果,我發現很奇怪的地方.編譯後結果如下.

MOVS  r0,#1
LDR    r1,|L1.28|
ADDS r1,r1,#0x40
STR    r0,[r1,#0xc]

另小弟不解的是,為什麼編譯還需要多一行 ADDS r1,r1,#0x40的動作,而不直接STR    r0,[r1,#0x4c]呢?
好像offset超過0x42後,都會多這麼一行的指令.


是否有人能幫忙小弟解惑??


非常感謝大家了~~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

板凳
匿名  发表于 2023-6-26 15:45:21
r0表示有一個初始值要設定為0,從變數的記憶體位置讀取位址存到r1,再從目前位址+0x40,回存到r1,取得偏移位址後,寫入0;全部可以寫成一句話 *(ptr+0x40)=1
回复 支持 反对

使用道具

沙发
fiveway 发表于 2014-6-27 20:17:56 | 只看该作者
虽然不太会汇编,仍然帮你顶一下
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU