|
|||||||||||
| 技術(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ù) |
我的一段程序如下: 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 于 2005/12/29 13:34:00 發(fā)布:
懇請(qǐng)各位高手解答 |
|
| 3樓: | >>參與討論 |
| 作者: 肖敏鋒 于 2005/12/29 14:48:00 發(fā)布:
真是這樣嗎?有點(diǎn)怪哦! 關(guān)注高手的到來(lái) |
|
| 4樓: | >>參與討論 |
| 作者: SMARTCODE 于 2005/12/29 16:15:00 發(fā)布:
頂一下!盼望高人解答 |
|
| 5樓: | >>參與討論 |
| 作者: computer00 于 2005/12/29 16:34:00 發(fā)布:
被優(yōu)化器優(yōu)化掉了吧?看看你的 ILR 是如何申明的? 加上關(guān)鍵詞 volatile 試試。 |
|
| 6樓: | >>參與討論 |
| 作者: SMARTCODE 于 2005/12/30 9:11:00 發(fā)布:
謝了! |
|
| 7樓: | >>參與討論 |
| 作者: smartcode 于 2006/1/10 11:13:00 發(fā)布:
問(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 于 2006/1/10 19:55:00 發(fā)布:
問(wèn)題可能沒有解決,使你對(duì)運(yùn)算的優(yōu)先級(jí)理解問(wèn)題,建議再分析一下 |
|
| 9樓: | >>參與討論 |
| 作者: exdata 于 2006/1/10 20:28:00 發(fā)布:
re 注意"==" 判斷算符優(yōu)先級(jí)高于“&”操作!不要老懷疑編譯器問(wèn)題。 |
|
| 10樓: | >>參與討論 |
| 作者: smartcode 于 2006/1/11 9:00:00 發(fā)布:
謝謝樓上二位的指點(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í)所 于 2006/1/11 9:02:00 發(fā)布:
if(ILR&0x01==1) -> if( (ILR&0x01) == 1 ) |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |