• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      匯編語言魅力不減當(dāng)年——MCU匯編語言的“工程”化

      2012-03-15 07:45:36
      電子世界 2012年8期
      關(guān)鍵詞:匯編語言代價文檔

      一、引言

      提起匯編語言,首先想到的就是他的缺點:晦澀難懂、調(diào)試?yán)щy、不易維護(hù)、兼容性差等等。這些原因也使多數(shù)人退而求其次,去選擇其他編程語言。其他語言也都有它的優(yōu)、缺點,所以選擇語言就取決于實際開發(fā)的系統(tǒng)大小、硬件配置、開發(fā)系統(tǒng)的側(cè)重點等。

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

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

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

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

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

      4)可以作為不同語言或不同標(biāo)準(zhǔn)的接口。

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

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

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

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

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

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

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

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

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

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

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

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

      三、大本不立,小規(guī)不正

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

      下面專門從匯編的弱點入手,談?wù)勅绾胃纳苹逎y懂、調(diào)試?yán)щy、不易維護(hù)、兼容性差等問題,讓他散發(fā)風(fēng)格魅力、維護(hù)魅力和移植魅力。

      1.風(fēng)格魅力

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

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

      2.維護(hù)魅力

      維護(hù)魅力。編程大師曾說:“哪怕程序只有三行長,總有一天你也不得不對它維護(hù)?!?/p>

      很多軟件產(chǎn)品不是一次性的買賣。比如在電信、金融等領(lǐng)域,有些軟件系統(tǒng)要用十幾年,對軟件進(jìn)行維護(hù)是必不可少的。

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

      在上個世紀(jì)80年代,維護(hù)的代價占軟件開發(fā)總支出的80%,在90年代,維護(hù)的代價已經(jīng)占據(jù)90%之多。以下一些因素將導(dǎo)致維護(hù)工作變得困難:

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

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

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

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

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

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

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

      影響維護(hù)代價的技術(shù)因素主要有:

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

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

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

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

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

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

      (1)易理解性

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

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

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

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

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

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

      3.移植魅力

      移植魅力,是指程序功能復(fù)用,能從一個環(huán)境移植到另一個環(huán)境上,可以采用信息隱藏原則、模塊化設(shè)計等都有利于程序的移植。大量使用子程序設(shè)計方法,或改造為面向?qū)ο蟮脑O(shè)計方法來編寫匯編語言也會大大加強(qiáng)它的移植功能。

      四、總結(jié)

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

      [1]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999.

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

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

      猜你喜歡
      匯編語言代價文檔
      有人一聲不吭向你扔了個文檔
      高等學(xué)校計算機(jī)專業(yè)課程教學(xué)改革實踐——以匯編語言與接口技術(shù)課程為例
      匯編語言與C語言的混合程序設(shè)計技術(shù)研究
      電子制作(2019年10期)2019-06-17 11:45:16
      愛的代價
      海峽姐妹(2017年12期)2018-01-31 02:12:22
      提高《匯編語言程序設(shè)計》教學(xué)效率的思考與實踐
      代價
      基于RI碼計算的Word復(fù)制文檔鑒別
      Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
      成熟的代價
      不讓他人隨意下載Google文檔
      電腦迷(2012年4期)2012-04-29 06:12:13
      新干县| 商都县| 商城县| 富民县| 普陀区| 白玉县| 牙克石市| 阳谷县| 安化县| 华宁县| 江北区| 大厂| 浮山县| 溧阳市| 仪征市| 永嘉县| 福安市| 通江县| 团风县| 濮阳县| 建瓯市| 松阳县| 贞丰县| 平远县| 枣庄市| 青冈县| 白沙| 北流市| 屯留县| 库尔勒市| 汕头市| 龙游县| 安多县| 乐安县| 乐东| 上蔡县| 娱乐| 两当县| 通辽市| 怀化市| 山丹县|