999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

匯編語言魅力不減當年——MCU匯編語言的“工程”化

2012-03-15 07:45:36
電子世界 2012年8期
關鍵詞:程序語言工程

一、引言

提起匯編語言,首先想到的就是他的缺點:晦澀難懂、調試困難、不易維護、兼容性差等等。這些原因也使多數人退而求其次,去選擇其他編程語言。其他語言也都有它的優、缺點,所以選擇語言就取決于實際開發的系統大小、硬件配置、開發系統的側重點等。

二、匯編語言及高級語言的比較

由于匯編語言可以表達非常底層的東西:

1)可以直接存取寄存器和I/O;

2)編寫的代碼可以非常精確的被執行;

3)可以編寫出比一般編譯系統高效的代碼;

4)可以作為不同語言或不同標準的接口。

等具有其他語言不可超越的優勢,還是深受那些運行速度和容量控制嚴格的系統編程人員的喜愛。個人認為只有差的程序員,而沒有差的編程語言。任何的編程語言,只要融會貫通,靈活運用,他都可以成為人們的最愛,讓我們逐步來探討匯編的魅力吧。

匯編語言是公認的效率最高的計算機語言,運用的好同樣可以與高級語言一比高下。甚至還存在這樣的說法,“在熟悉匯編語言的人眼里,C語言編寫的程序都是垃圾”。這種說法雖然偏激了一些,但是卻有它的道理。舉例來說,在實時性上C語言就有很大的弱點,無法預測代碼執行的指令周期。在這里不妨用下面的例子說明一下此問題。

我們來做個20us的延時程序,使用匯編語言(使用12M晶振),如下面語句就可以達到要求了

使用C語言如何實現吶?C語言的靈活性也許會寫出多種不同的實現方式,下面是列出的幾種:

這些不同的寫法,是否都是高效的?生成的代碼是否一致吶?把這些寫法使用KEIL C反匯編后,由于篇幅限制僅把delay_1()函數反匯編的結果列出如下:

就會發現只有delay_4( )生成的代碼同匯編的效率是一樣的,其他的寫法都存在時間的不確定性。

這樣來看,你是否認為匯編先天就比C更有魅力吶?

再舉兩個實際生活的例子,現在熱門的智能手機領域,智能手機都有具有操作系統的程序擴展性,都可以支持第三方軟件安裝、應用。NOKIA N70為2005年出品CPU采用ARM 220MHz,內存容量為20MB,而相近價位的多普達818為2004年出品采用Intel Bulverde 416MHz,內存容量64MB;64MB ROM,64MB SDRAM,從硬件配置上前者明顯低于后者,但是性能卻略勝一籌,這就是由于他們各自采用的操作系統不同,前者采用Series 60第2版,Symbian OS 8.1,后者采用WindowsMobile(PocketPC) 2003,明顯后者更消耗資源,而前者操縱性界面等并沒有受其影響。

個人電腦領域也是一樣,硬件更新換代的速度驚人,計算機硬件界的摩爾定律:每隔18個月計算機硬件的運算速度提高一倍,價格就下降一半。同時軟件也在不斷的升級,然而我們并沒有體會到使用高配置的硬件加上換代的軟件帶給我們多大的改善。

其實,深究之下就會發現,所謂的高級語言,只是讓人省事,使用了一些格式化的框框,把人的想法直接組合成面向過程的指令,或者面向對象的類。這類語言入門是簡單的,到達目的地是曲折的。這就好象有一條明朗寬敞的大道把你引到迷宮入口,讓你在人為制造的千絲萬縷、錯綜復雜的環境里到達目的地。殊不知在入口旁邊有一個不起眼的長滿荊棘的羊腸小道直通目的地。

在重視資源的今天,我們相信展現在匯編面前的是個更大的天地。

靈活運用匯編語言,把匯編用活,就會發現他就象是畫筆,把你訓練成一個藝術家,使用匯編之筆繪畫出無比美好燦爛的世界。無意義的音符能編出美妙的音樂,無規律的色彩可幻化繽紛的世界,冰冷的匯編語言可創造資訊的天堂!

三、大本不立,小規不正

“大本不立,小規不正”。首先掌握一些計算機軟件的理論知識,再結合自己編程實踐及芯片的特色,理論應用到匯編實踐中去,兩者融會貫通。從高處俯視,而徹底改變匯編的編程方式,充分施展匯編編程的魅力。

下面專門從匯編的弱點入手,談談如何改善晦澀難懂、調試困難、不易維護、兼容性差等問題,讓他散發風格魅力、維護魅力和移植魅力。

1.風格魅力

風格魅力,就是指用戶界面友好,操作簡便以及用戶在使用軟件上花的時間很少,不必培訓或很少的培訓就能使用軟件等。個人電腦里廣泛應用的滾動條已經被多數人所接受,它能增加界面的擴展性和易操作性。我們也不妨把它引入匯編程序里來,實現后就會發現它比用C或C++實現的程序精簡得多并更具有個性。例如我在逐行高清電視方案(LA7605+HTV110)中使用LC8632系列MCU開發的滾動條,圖形效果如下:

此程序的難點是做成通用性,如果沒有達到通用的話,就不能復用,就沒有了移植魅力是萬萬不行的。例如功能菜單中有許多功能是作成OPTION可選的,在工廠中打開此功能則菜單中出現此項,否則就不顯示此功能,這樣菜單的滾動就需要對OPTION選項進行判斷,再進行是否滾動的操作。

2.維護魅力

維護魅力。編程大師曾說:“哪怕程序只有三行長,總有一天你也不得不對它維護。”

很多軟件產品不是一次性的買賣。比如在電信、金融等領域,有些軟件系統要用十幾年,對軟件進行維護是必不可少的。

對軟件而言,“維護”是個不太直觀的術語,因為軟件產品在重復使用時不會被磨損,并不需要進行像對車輛或電器那樣的維護。軟件維護是人們對既豐富多彩又會令人心酸的活動的統稱。其中豐富多彩的活動是指那些反映客觀世界變化、能使軟件系統更加完善的修改和擴充工作。令人心酸的活動是指那些永無修止、并且改了舊錯卻引起新錯讓人欲哭無淚的工作。

在上個世紀80年代,維護的代價占軟件開發總支出的80%,在90年代,維護的代價已經占據90%之多。以下一些因素將導致維護工作變得困難:

(1)軟件人員經常流動,當需要對某些程序進行維護時,可能已找不到原來的開發人員。只好讓新手去“攻讀”那些程序。

(2)人們一般難以讀懂他人的程序。在勉強接受這類任務時,心里不免嘀咕:“我又不是他肚子里的蟲子,怎么知道他如何編程。”

(3)當沒有文檔或者文檔很差時,你簡直不知道如何下手。

(4)很多程序在設計時沒有考慮到將來要改動,程序之間相互交織,觸一而牽百。即使有很好的文檔,你也不敢輕舉妄動,否則你有可能陷進錯誤堆里。

(5)如果軟件發行了多個版本,要追蹤軟件的演化非常困難。

(6)維護將會產生不良的副作用,不論是修改代碼、數據或文檔,都有可能產生新的錯誤。

(7)維護工作毫無吸引力。高水平的程序員自然不愿主動去做,而公司也舍不得讓高水平的程序員去做。帶著低沉情緒的低水平的程序員只會把維護工作搞得一塌糊涂。

影響維護代價的技術因素主要有:

(1)軟件對運行環境的依賴性。由于硬件以及操作系統更新很快,使得對運行環境依賴性很強的應用軟件也要不停地更新,維護代價就高。

(2)編程語言。雖然低級語言比高級語言具有更好的運行速度,但是低級語言比高級語言難以理解。用高級語言編寫的程序比用低級語言編寫的程序的維護代價要低得多(并且生產率高得多)。這也是商業應用軟件大多采用高級語言的原因。

(3)編程風格。良好的編程風格意味著良好的可理解性,可以降低維護的代價。

(4)測試與改錯工作。如果測試與改錯工作做得好,后期的維護代價就能降低。反之維護代價就升高。

(5)文檔的質量。清晰、正確和完備的文檔能降低維護的代價。低質量的文檔將增加維護的代價(錯誤百出的文檔還不如沒有文檔)。

我們將從三個方面來改變匯編維護困難的局面。包括易理解性、易測試性、易修改性。在開發軟件時應使程序具有良好的程序結構,易于閱讀,便于理解。同時軟件在使用過程中發現了隱藏的錯誤時,程序是易測試的,以便及時找到BUG。當需要改正錯誤或程序功能需要完善和擴充時,程序應是易于修改的。

(1)易理解性

1)選擇標識符名字的方法有:含義明確;名字也不能太長;不能是關鍵字;不能有多個含義;不使用相似的名稱,如ILI、LII、IIL等;避免使用易混淆的字母,如0與O,1與l等。

2)視覺清晰:大量使用縮進技巧等方式。

3)注釋:為便于易讀,需大量使用清晰的、明確的注釋。分兩種:一種是序言式,它標注在每個文件或模塊的開始部分,內容包括:模塊的功能;模塊的接口;重要的局部變量;開發日志等

(2)易測試性,由于在測試之前的各階段軟件都可能遺留下許多錯誤和缺陷,如果不及時找出這些錯誤和缺陷并將其改正,這個產品就不能正常使用甚至帶來巨大損失。測試工作是一項很艱苦的工作,其工作量約占軟件開發總工作量的40%以上甚至更高,因此開發人員應給予測試相當的重視。如果開發人員意識不到這點或忽視了軟件測試就不能算是個成功的軟件開發人員。

測試一般分為兩類:白盒測試及黑盒測試。白盒測試是把程序看成裝在一只透明的盒子里,要求測試者完全了解程序的結構和處理過程,檢查程序中邏輯通路是否按設計要求正常工作。黑盒測試是把程序看成一個黑盒子,測試者完全不了解程序結構和處理過程。它根據規格說明書規定的功能來檢查是否符合規格要求。

(3)易修改性,主要是為改正錯誤或功能完善和擴充時,程序應是易于修改的,這需要在設計程序時盡量考慮到模塊的擴充及模塊的通用上,同時程序的易讀性也為修改帶來方便。為以后的修改和擴充做鋪墊。

3.移植魅力

移植魅力,是指程序功能復用,能從一個環境移植到另一個環境上,可以采用信息隱藏原則、模塊化設計等都有利于程序的移植。大量使用子程序設計方法,或改造為面向對象的設計方法來編寫匯編語言也會大大加強它的移植功能。

四、總結

上面所述實際上是把匯編語言的編程過程“工程”化,采用了軟件工程的方法,以寫出高質量的程序、改善匯編的弱點為目標,說明了幾個行之有效的方法,充分發揮了匯編特有的魅力。

[1]李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,1999.

[2]錢能.C++程序設計教程[M].北京:清華大學出版社,1999.

[3]張海藩.軟件工程導論(第四版)[M].北京:清華大學出版社,2003.

猜你喜歡
程序語言工程
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
讓語言描寫搖曳多姿
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
累積動態分析下的同聲傳譯語言壓縮
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
我有我語言
工程
主站蜘蛛池模板: 激情综合图区| 99久久婷婷国产综合精| 亚洲伦理一区二区| 国产精品网拍在线| 欧美日韩国产在线观看一区二区三区| 久久6免费视频| 国产精品专区第1页| a毛片在线| 毛片国产精品完整版| 国产手机在线小视频免费观看 | 亚洲男女天堂| 亚洲男人天堂2018| 亚洲精品第一页不卡| 国产精品人成在线播放| 中文字幕啪啪| 伊人久综合| 精品无码国产自产野外拍在线| 亚洲三级成人| 成人一区专区在线观看| 亚洲欧美自拍一区| 欧美日韩精品一区二区在线线| www.亚洲天堂| 亚洲综合日韩精品| 日本三级黄在线观看| 国产一区二区三区免费| 永久免费av网站可以直接看的| 波多野结衣视频网站| 欧美日韩国产一级| 亚洲精品欧美重口| 国产无码高清视频不卡| av免费在线观看美女叉开腿| 久久国产拍爱| 久久黄色视频影| 久热中文字幕在线观看| 亚洲区视频在线观看| 欧洲日本亚洲中文字幕| 四虎影视8848永久精品| 精品国产香蕉伊思人在线| 亚洲无码一区在线观看| 久久亚洲国产一区二区| 91最新精品视频发布页| 毛片一区二区在线看| 在线看免费无码av天堂的| 久久国产V一级毛多内射| 91精品专区| www.精品国产| 国产aaaaa一级毛片| 中国一级特黄大片在线观看| 9啪在线视频| 伊人久久青草青青综合| 亚洲无码在线午夜电影| 欧美无专区| 中文字幕有乳无码| 91青草视频| 男人天堂伊人网| 亚洲精品动漫| 国产真实乱子伦视频播放| 国产亚洲精品97在线观看| 国产真实乱子伦视频播放| 国产老女人精品免费视频| 国产成人无码Av在线播放无广告| www亚洲天堂| 精品国产91爱| 国内精品视频| 国产91在线|日本| 国产亚洲精品97AA片在线播放| 欧美成人免费午夜全| 日韩色图区| 国产精品太粉嫩高中在线观看| 97成人在线视频| 久久亚洲国产一区二区| 无码福利日韩神码福利片| 国产色婷婷| 国产成人h在线观看网站站| 亚洲欧美日韩中文字幕一区二区三区 | 99热这里只有精品在线播放| 老色鬼久久亚洲AV综合| 99无码中文字幕视频| 日本一区二区三区精品国产| 一边摸一边做爽的视频17国产| 亚洲综合精品香蕉久久网| 五月天久久综合国产一区二区|