A. c語言和匯編語言的關系
程序員編寫的C語言代碼,首先要經過C語言編譯器,生成匯編代碼,這個過程稱為編譯階斷,當C語言編譯器生成匯編代碼後,再調用匯編器來將匯編代碼編譯成匯編指令。
這是一種站在巨人肩人的作法,最早的C++編程語言也是這樣的實現方法,只不過那時候叫Cfront程序,Cfront程序的作用是將C++代碼轉換成C語言代碼,類似於一個文本處理器,然後再調用C語言編譯器,將C源碼編譯成匯編代碼,然後再調用匯編器將匯編代碼編譯成機器碼。
這個過程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc這款c語言編譯器為例,它實際上是四個小程序。
cp: c語言預處理程序,有它負責進行預處理操作。
cc: C語言編譯器,它負責將C源碼編譯成匯編代碼。
as: 匯編器,它負責將匯編代碼編譯成機器碼,一般使用gcc test.c這樣的命令編譯C語言時,會生成一個a.out的程序,它實際上指的就是as ouput,即匯編器輸出文件。
link: 鏈接器,它負責將匯編器輸入的機器碼和庫打包成一個操作系統可以運行的可執行文件,在Linux上的可執行文件格式是ELF格式,這個格式的實現是有鏈接器來完成的。
B. c語言和匯編語言的區別
C語言是需要經過機器語言解釋和翻譯才能被硬體執行的高級語言。
匯編是一種直接對於硬體操作的語言,屬於低級語言,面向硬體。
另外:兩種語言的語法也是完全不同的。你可以在網上找一些例子看看就知道區別了。
C. 匯編語言和C語言有什麼聯系嗎,他們分別是干什麼的
計算機程序設計語言的發展,經歷了從機器語言、匯編語言到高級語言的歷程。
1. 機器語言
電子計算機所使用的是由「0」和「1」組成的二進制數,二進制是計算機的語言的基礎。計算機發明之初,人們只能降貴紆尊,用計算機的語言去命令計算機干這干那,一句話,就是寫出一串串由「0」和「1」組成的指令序列交由計算機執行,這種語言,就是機器語言。使用機器語言是十分痛苦的,特別是在程序有錯需要修改時,更是如此。而且,由於每台計算機的指令系統往往各不相同,所以,在一台計算機上執行的程序,要想在另一台計算機上執行,必須另編程序,造成了重復工作。但由於使用的是針對特定型號計算機的語言,故而運算效率是所有語言中最高的。機器語言,是第一代計算機語言。
2. 匯編語言
為了減輕使用機器語言編程的痛苦,人們進行了一種有益的改進:用一些簡潔的英文字母、符號串來替代一個特定的指令的二進制串,比如,用「A D D」代表加法,「M O V」代表數據傳遞等等,這樣一來,人們很容易讀懂並理解程序在干什麼,糾錯及維護都變得方便了,這種程序設計語言就稱為匯編語言,即第二代計算機語言。然而計算機是不認識這些符號的,這就需要一個專門的程序,專門負責將這些符號翻譯成二進制數的機器語言,這種翻譯程序被稱為匯編程序。
匯編語言同樣十分依賴於機器硬體,移植性不好,但效率仍十分高,針對計算機特定硬體而編制的匯編語言程序,能准確發揮計算機硬體的功能和特長,程序精煉而質量高,所以至今仍是一種常用而強有力的軟體開發工具。
3. 高級語言
從最初與計算機交流的痛苦經歷中,人們意識到,應該設計一種這樣的語言,這種語言接近於數學語言或人的自然語言,同時又不依賴於計算機硬體,編出的程序能在所有機器上通用。經過努力,1 9 5 4年,第一個完全脫離機器硬體的高級語言—F O RT R A N問世了,4 0多年來,共有幾百種高級語言出現,有重要意義的有幾十種,影響較大、使用較普遍的有F O RT R A N、A L G O L、C O B O L、B A S I C、L I S P、S N O B O L、P L / 1、P a s c a l、C、P R O L O G、A d a、C + +、V C、V B、D e l p h i、J AVA 等。
高級語言的發展也經歷了從早期語言到結構化程序設計語言,從面向過程到非過程化程序語言的過程。相應地,軟體的開發也由最初的個體手工作坊式的封閉式生產,發展為產業化、流水線式的工業化生產。
6 0年代中後期,軟體越來越多,規模越來越大,而軟體的生產基本上是人自為戰,缺乏科學規范的系統規劃與測試、評估標准,其惡果是大批耗費巨資建立起來的軟體系統,由於含有錯誤而無法使用,甚至帶來巨大損失,軟體給人的感覺是越來越不可靠,以致幾乎沒有不出錯的軟體。這一切,極大地震動了計算機界,史稱「軟體危機」。人們認識到:大型程序的編制不同於寫小程序,它應該是一項新的技術,應該像處理工程一樣處理軟體研製的全過程。程序的設計應易於保證正確性,也便於驗證正確性。1 9 6 9年,提出了結構化程序設計方法,1 9 7 0年,第一個結構化程序設計語言—P a s c a l語言出現,標志著結構化程序設計時期的開始。
8 0年代初開始,在軟體設計思想上,又產生了一次革命,其成果就是面向對象的程序設計。在此之前的高級語言,幾乎都是面向過程的,程序的執行是流水線似的,在一個模塊被執行完成前,人們不能幹別的事,也無法動態地改變程序的執行方向。這和人們日常處理事物的方式是不一致的,對人而言是希望發生一件事就處理一件事,也就是說,不能面向過程,而應是面向具體的應用功能,也就是對象(o b j e c t)。其方法就是軟體的集成化,如同硬體的集成電路一樣,生產一些通用的、封裝緊密的功能模塊,稱之為軟體集成塊,它與具體應用無關,但能相互組合,完成具體的應用功能,同時又能重復使用。對使用者來說,只關心它的介面(輸入量、輸出量)及能實現的功能,至於如何實現的,那是它內部的事,使用者完全不用關心,C + +、V B、D e l p h i就是典型代表。
高級語言的下一個發展目標是面向應用,也就是說:只需要告訴程序你要干什麼,程序就能自動生成演算法,自動進行處理,這就是非過程化的程序語言。
vc++是面向對象的高級語言
D. C語言與匯編語言有什麼區別與聯系
C語言當然一種
匯編是對於各種單片機特定的編寫語句,對於不同總類的也不同
C語言是一種通用語言,雖然不同總類的單片機的匯編語言不同,但他們大部分可以用C語言編寫,建議學好C語言
E. 匯編和c語言有什麼區別和聯系
匯編語言介於高級語言與機器語言之間;
c語言是高級語言。
F. 匯編語言與c語言的區別
用匯編語言編程,相當於,你自己開車。
用 C 語言編程,相當於,你坐計程車。
G. 匯編語言,C語言,C++之間都是什麼關系怎麼學習
首先你要知道 機器不認識那些c c++的高級語言
只認識機器碼
機器碼太難記 所以把操作碼 即指令給替換成人類好記的符號
就成了匯編
然後c c++等高級語言是由編譯器編譯成機器碼
低級語言很難學 高級語言好點
但是低級語言能夠寫出接近於底層的高級語言無法實現的功能
假如沒有什麼基礎
推薦學習c# java等語言 簡單點
H. 匯編語言和C語言有什麼區別
1:
匯編語言是面向具體CPU及其硬體結構的語言
C語言可以做到硬體無關性
2:
匯編語言效率較高
C語言效率相對較低
3:
匯編語言是非結構語言,可讀性較弱
C語言是結構語言,可讀性較強
4:
匯編語言基本沒有可移植性
C言可移植性很強
5:
匯編語言沒有函數庫,所有代碼需要自己組織
C語言有豐富的函數庫可供調用。
I. 匯編語言和c語言區別
匯編語言與C語言的區別:
1、在匯編語言中,為一個處理器編寫的程序不能在另一種類型的處理器上運行。在C語言程序中,程序獨立於處理器類型運行。
2、匯編語言代碼的性能和准確性優於C代碼。
3、C語言必須提供額外的指令來在計算機上運行代碼。
4、匯編語言代碼比C代碼難以理解和調試。
5、 一個或兩個C語言語句擴展為許多匯編語言代碼。
6、匯編語言可以比C別更好地進行通信某些類型的硬體操作只能通過匯編語言執行。
7、在匯編語言中,我們可以直接讀取物理地址上的指針,這在C別是不可能的。
8、在匯編語言中使用位更容易。
9、匯編程序用於在匯編語言中轉換代碼,而編譯器用於在C編譯代碼。
10、C語言的可執行代碼大於匯編語言代碼,因此執行時間較長。
11、由於長的可執行代碼,C程序的效率低於匯編語言程序。
12、與匯編程序員相比,C語言程序員不需要知道處理器中的寄存器等硬體細節。
13、最C的語言代碼首先自動轉換為匯編代碼。