andeq r14,r7, r0, lsl #20

fulinux 2012-12-14 09:15:22
ASSERT :DEF:ENDIAN _CHANGE135 [ ENDIAN _CHANGE136 ASSERT :DEF:ENTRY_ BUS _WIDTH137 [ ENTRY_ BUS _WIDTH=32138 b ChangeBigEndian ;DCD 0xea000007139 ]140 [ ENTRY_ BUS _WIDTH=16141 andeq r14,r7, r0, lsl #20 ;DCD 0x0007ea00142 ]143 [ ENTRY_ BUS _WIDTH=8144 streq r0,[r0,-r10 , ror #1 ] ;DCD 0x070000ea145 ]146 | ; 如果没有定义总线宽度,则跳转到复位中断147 b ResetHandler148 ]ENDIAN _CHANGE这个逻辑变量在Option.inc中已经被定义成FALSE,那在汇编时就会直接汇编为 b ResetHandler 这句程序。说明不需要改变默认的大端和小端模式。而之前在ADS中也是默认设置,即小端模式。那我怎么知道存储器一定就是小端模式呢?有点乱,不好意思,别见笑。有几个问题:1.ADS中的大端和小端模式是对谁设置的,是处理器还是存储器?2.存储器的大端和小端模式是怎么设置的,是出厂时就固定的嘛还是可以更改设置的,如果可以,怎么更改?3.代码中 andeq r14,r7, r0, lsl #20 ;DCD 0x0007ea00 中的R7,R0,和R14中原来是什么数值?将R0逻辑左移20位,与R7作与运算,结果放入R14中也就是链接寄存器LR中,那怎么实现 DCD 0x0007ea00 了呢?4.同第3个问题一样,streq r0,[r0,-r10 , ror #1 ] ;DCD 0x070000ea 中各寄存器原来的值是什么?又是如何实现 DCD 0x070000ea 的?大家不要见笑,新手问题多,嘿嘿!问题补充:
还有,第3,4问题中那两句程序中为什么要加一个条件代码eq,即Z位为1,为什么要加这个条件?
...全文
83 点赞 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

还没有回复,快来抢沙发~

发动态
发帖子
单片机/工控
创建于2007-09-28

2.6w+

社区成员

硬件/嵌入开发 单片机/工控
申请成为版主
社区公告
暂无公告