久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5268|回復: 5
收起左側

IAR 8051 太聰明了

[復制鏈接]
ID:91350 發表于 2015-10-29 00:36 | 顯示全部樓層 |閱讀模式
    今晚真是個不眠之夜啊,很久沒用C++對單片機編程了,而且以前一直在用IAR For AVR編程,現在用IAR 8051來寫STC的程序,一直都是開最高優化級別,沒發現問題過.今天發現了一個苦B的問題.我在全局定義了一個bool變量,在定時器中斷函數里改變它的值,然后主程序判斷這個值來確定是否進入空閑模式.可是一開優化,馬上變味了.打開反編譯軟件查看生成的代碼,一個while()的循環竟然變成了死循環,無論怎么改變C語法都無法改變生成的結果.想到以前在寫Microsoft C++程序的時候用到過一個關鍵字:volatile , 意思是容易被意想不到改變的變量.添加在變量的聲明以后,while循環回來了.IAR編譯器我真是越來越喜歡了.雖然有時程序會莫名其妙的走樣,可是它的代碼優化方面還是無可比擬的.
C++原程序:volatile bool bStart;
      while(bStart == 0)
         PCON_bit.IDL = 1;//                進入空閑模式
意思是如果沒有程序改變bStart這個變量的話,CPU就繼續休息.如果有程序改變的話就退出循環執行一次主函數.
在沒加volatile時生成的匯編代碼:

Q022C:             ORL   PCON,#01H
                         SJMP  Q022C
壞了,while 循環影子都沒了

聲明volatile后的代碼:

Q0225:      MOV   R0,#56H
                   MOV   A,@R0
                   JZ    Q022D
                   LJMP  Q0196
;===========================================
Q022D:       ORL   PCON,#01H
                   SJMP  Q0225

這回它判斷@R0里的變量值了,56H里的值就是bStart,可愛的sjmp指令也回來了.

好在以前還學習過Microsoft的編程,IAR編譯器才是真正的標準C編譯器,比那些KEIL,ICC好多了,只要我們寫程序的時候嚴謹些,知道CPU這個時候會干什么, 就可以寫出漂亮的程序.
回復

使用道具 舉報

ID:791413 發表于 2021-7-27 16:22 | 顯示全部樓層
21年學keil的路過,c的編譯器應該是早就能volatile了
回復

使用道具 舉報

ID:883242 發表于 2021-7-27 21:15 | 顯示全部樓層
IAR測試過,吊打一切編譯器,包括在ARM平臺上面吊打ARM親兒子RealView編譯器。

但是在8051這個平臺上,IAR效率是不如Keil C51的。

Keil C51認為它的用戶都是不懂volatile這個關鍵字的傻子,所以寫不寫volatile都可以得到想要的結果。
回復

使用道具 舉報

ID:192294 發表于 2022-4-21 14:32 | 顯示全部樓層
用過Keil C51的用戶應該都知道volatile。這個與優化級別有關。優化高而不加volatile一樣會優化忽略掉。


(2830)
回復

使用道具 舉報

ID:1101997 發表于 2023-12-2 08:49 | 顯示全部樓層
這是嵌入式和正常C的區別,KEIL默認變量你會在其他地方去改變它,所以一般并不需要使用volatile。
回復

使用道具 舉報

ID:195496 發表于 2023-12-2 17:45 | 顯示全部樓層
樓上說的有道理
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 福利视频亚洲 | 成人久久18免费网站图片 | 99精品久久99久久久久 | 日本三级网站在线观看 | 在线播放第一页 | 蜜臀久久99精品久久久久野外 | 超碰在线97国产 | 国产农村妇女精品一区 | 亚洲高清在线观看 | 国产乱码精品一区二区三区忘忧草 | 美女福利视频一区 | 国产96色在线 | 日本一区二区视频 | 中文字幕综合 | 成人三级网址 | 日韩中文字幕视频在线 | 91极品视频 | 日韩免费一区 | 高清视频一区二区三区 | 日韩精品视频在线播放 | 国内毛片毛片毛片毛片 | 日韩毛片| 91视视频在线观看入口直接观看 | 99亚洲 | 中文字幕视频在线观看 | 精品在线一区 | 亚洲乱码一区二区三区在线观看 | 综合精品久久久 | 男人天堂色 | 亚洲 欧美 日韩在线 | 三区四区在线观看 | 日韩中文字幕一区二区 | www.久久影视 | 亚洲国产精品一区二区三区 | 成人性生交大片免费看r链接 | 精品视频国产 | 少妇特黄a一区二区三区88av | 96av麻豆蜜桃一区二区 | 国产精品亚洲片在线播放 | 69精品久久久久久 | 草草草影院|