【Cortex-M0】5 ARM C語言程式設計

NO IMAGE

 

5.1 C語言簡史

 

   C 語言的開發是科技史上不可磨滅的偉大貢獻,因為這個語言把握住了計算機科技中一個至關重要的並且是恰到好處的中間點,一方面它具備搭建高層產品的能力,另一方面又能夠對於底層資料進行有效控制。正是由於這種關聯性和樞紐性作用,決定了 C 語言所導向的近三十年來計算機程式設計主流方式。    

    C語言的祖先是BCPL語言。

  1967年,劍橋大學的 Martin Richards 對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Programming Language)語言。

  1970年,美國貝爾實驗室的 Ken Thompson。以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母),並且他用B語言寫了第一個UNIX作業系統。

  在1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。

  為了使UNIX作業系統推廣,1977年Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文字《可移植的C語言編譯程式》。

  1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的《The C Programming Language》一書。通常簡稱為《K&R》,也有人稱之為《K&R》標準。但是,在《K&R》中並沒有定義一個完整的標準C語言,後來由美國國家標準化協會(American National Standards Institute)在此基礎上制定了一個C語言標準,於一九八三年發表。通常稱之為ANSI C。

  K&R第一版在很多語言細節上也不夠精確,對於pcc這個“參照編譯器”來說,它日益顯得不切實際;K&R甚至沒有很好表達它所要描述的語言,把後續擴充套件扔到了一邊。最後,C在早期專案中的使用受商業和政府合同支配,它意味著一個認可的正式標準是重要的。因此(在M. D. McIlroy的催促下),ANSI於1983年夏天,在CBEMA的領導下建立了X3J11委員會,目的是產生一個C標準。X3J11在1989年末提出了一個他們的報告[ANSI 89],後來這個標準被ISO接受為ISO/IEC 9899-1990。

  1990年,國際標準化組織ISO(International Organization for Standards)接受了89 ANSI C 為I SO C 的標準(ISO9899-1990)。1994年,ISO修訂了C語言的標準。

  1995年,ISO對C90做了一些修訂,即“1995基準增補1(ISO/IEC/9899/AMD1:1995)”。1999年,ISO有對C語言標準進行修訂,在基本保留原來C語言特徵的基礎上,針對應該的需要,增加了一些功能,尤其是對C 中的一些功能,命名為ISO/IEC9899:1999。

  2001年和2004年先後進行了兩次技術修正。

  目前流行的C語言編譯系統大多是以ANSI C為基礎進行開發的,但不同版本的C編譯系統所實現的語言功能和語法規則有略有差別。

 

5.2 C語言特點

    C是高階語言。它把高階語言的基本結構和語句與低階語言的實用性結合起來。C 語言可以像組合語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。

  C是結構式語言。結構式語言的顯著特點是程式碼及資料的分隔化,即程式的各個部分除了必要的資訊交流外彼此獨立。這種結構化方式可使程式層次清晰,便於使用、維護以及除錯。C 語言是以函式形式提供給使用者的,這些函式可方便的呼叫,並具有多種迴圈、條件語句控制程式流向,從而使程式完全結構化。

  C語言功能齊全。具有各種各樣的資料型別,並引入了指標概念,可使程式效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的遊戲。

  C語言適用範圍大。適合於多種作業系統,如Windows、DOS、UNIX等等;也適用於多種機型。

  C語言對編寫需要硬體進行操作的場合,明顯優於其它高階語言,有一些大型應用軟體也是用C語言編寫的。

 

一、優點

 

① 簡潔緊湊、靈活方便

C語言一共只有32個關鍵字,9種控制語句,程式書寫形式自由,區分大小寫。把高階語言的基本結構和語句與低階語言的實用性結合起來。C 語言可以像組合語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。

 

② 運算子豐富

C語言的運算子包含的範圍很廣泛,共有34種運算子。C語言把括號、賦值、強制型別轉換等都作為運算子處理。從而使C語言的運算型別極其豐富,表示式型別多樣化。靈活使用各種運算子可以實現在其它高階語言中難以實現的運算。

 

③ 資料型別豐富

C語言的資料型別有:整型、實型、字元型、陣列型別、指標型別、結構體型別、共用體型別等。能用來實現各種複雜的資料結構的運算。並引入了指標概念,使程式效率更高。另外C語言具有強大的圖形功能,支援多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。

 

④ C是結構式語言

結構式語言的顯著特點是程式碼及資料的分隔化,即程式的各個部分除了必要的資訊交流外彼此獨立。這種結構化方式可使程式層次清晰,便於使用、維護以及除錯。C語言是以函式形式提供給使用者的,這些函式可方便的呼叫,並具有多種迴圈、條件語句控制程式流向,從而使程式完全結構化。

 

⑤ 語法限制不太嚴格,程式設計自由度大

雖然C語言也是強型別語言,但它的語法比較靈活,允許程式編寫者有較大的自由度。

 

⑥ 允許直接訪問實體地址,對硬體進行操作

由於C語言允許直接訪問實體地址,可以直接對硬體進行操作,因此它既具有高階語言的功能,又具有低階語言的許多功能,能夠像組合語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。

 

⑦ 生成目的碼質量高,程式執行效率高

   一般只比彙編程式生成的目的碼效率低10へ20%.

 

⑧ 適用範圍大,可移植性好

C語言有一個突出的優點就是適合於多種作業系統,如DOS、UNIX、windows 98.windows NT,也適用於多種機型。C語言具有強大的繪圖能力,可移植性好,並具備很強的資料處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫,它也是數值計算的高階語言。

 

 

二、 缺點

 

① C語言的缺點主要表現在資料的封裝性上,這一點使得C在資料的安全性上有很大缺陷,這也是C和C 的一大區別。

② C語言的語法限制不太嚴格,對變數的型別約束不嚴格,影響程式的安全性,對陣列下標越界不作檢查等。從應用的角度,C語言比其他高階語言較難掌握。

 ……………………………………………………

 

書籍名稱:ARM Cortex-M0原理與應用實踐

書籍下載地址:http://download.csdn.net/detail/k125008301/4070709