音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)教zlgARM:ADS的問(wèn)題

作者:smartcode 欄目:ARM技術(shù)
請(qǐng)教zlgARM:ADS的問(wèn)題
我的一段程序如下:
if(ILR&0x03==1)
{
  SendTimeRtc();                // 讀取時(shí)鐘值,并向UART0發(fā)送    
  ILR = 0x03;                  // 清除中斷標(biāo)志
}
VICVectAddr = 0;

反匯編結(jié)果:
80000514[0xe59f0094]   ldr      r0,0x800005b0 ; = #0xe0024000…(1)
80000518[0xe5d00000]   ldrb     r0,[r0,#0]……………………………(2)
8000051C[0xe3a00000] * mov      r0,#0…………………………………(3)
80000520[0xe5000fd0]   str      r0,[r0,#-0xfd0]……………………(4)

我的問(wèn)題是:為什么判斷ILR是否等于1的反匯編語(yǔ)句、跳轉(zhuǎn)到SendTimeRtc的反匯編語(yǔ)句以及ILR = 0x03的反匯編語(yǔ)句都被省掉了?我覺得(2)和(3)之間應(yīng)該有如下語(yǔ)句才對(duì):
…………………………………………………………………………………(2)
tst      r0,#1
beq      0x(VICVectAddr = 0 的地址)  ; (RTCINT_ISR + 0x24)
bl       SendTimeRtc
mov      r0,#3
strb     r0,[r4,#0]
…………………………………………………………………………………(3)
不知道我錯(cuò)在哪里,請(qǐng)您指點(diǎn).



2樓: >>參與討論
smartcode
懇請(qǐng)各位高手解答
 
3樓: >>參與討論
肖敏鋒
真是這樣嗎?有點(diǎn)怪哦!
關(guān)注高手的到來(lái)

4樓: >>參與討論
SMARTCODE
頂一下!盼望高人解答
 
5樓: >>參與討論
computer00
被優(yōu)化器優(yōu)化掉了吧?看看你的 ILR 是如何申明的?
加上關(guān)鍵詞 volatile 試試。

6樓: >>參與討論
SMARTCODE
謝了!
 
7樓: >>參與討論
smartcode
問(wèn)題解決,自己頂一下!
將if(ILR&0x03==1).改為if(1==ILR&0x03)后反匯編正常
但不知原因何在?不是volatile的問(wèn)題,因?yàn)樵陬^文件中ILR的定義如下:
#define ILR     (*((volatile unsigned CHAR *) 0xE0024000))
所以不需再聲明為volatile
我想是編譯器問(wèn)題,懇請(qǐng)各路高手指點(diǎn)一二!謝過(guò)先!

* - 本貼最后修改時(shí)間:2006-1-10 11:17:12 修改者:smartcode

8樓: >>參與討論
wangshujun
問(wèn)題可能沒有解決,使你對(duì)運(yùn)算的優(yōu)先級(jí)理解問(wèn)題,建議再分析一下
 
9樓: >>參與討論
exdata
re
注意"==" 判斷算符優(yōu)先級(jí)高于“&”操作!不要老懷疑編譯器問(wèn)題。


10樓: >>參與討論
smartcode
謝謝樓上二位的指點(diǎn)!
但是if(ILR&0x03==1).改為if(ILR&0x01==1).反匯編也是對(duì)的,
如下:

[0xe59f40ac]   ldr      r4,0x800005cc ; = #0xe0024000
[0xe5d40000]   ldrb     r0,[r4,#0]
[0xe3100001]   tst      r0,#1
[0x0a000002]   beq      0x80000534  ; (RTCINT_ISR + 0x24)

這作何解釋?請(qǐng)賜教!

* - 本貼最后修改時(shí)間:2006-1-11 9:07:34 修改者:smartcode

11樓: >>參與討論
農(nóng)民講習(xí)所
if(ILR&0x01==1) -> if( (ILR&0x01) == 1 )
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教周工,出現(xiàn)“取指令中止”時(shí)應(yīng)該如何解決?
那位能提供UC/os-2內(nèi)核源代碼或下載地址???
詢問(wèn)周功?
請(qǐng)教:zlg的例子中很喜歡用類似if(1==rcv_new),而不是
LPC2131 uart Tx中斷如何觸發(fā)??
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)