當前位置:首頁 » 編程軟體 » c到匯編的編譯代碼的理解

c到匯編的編譯代碼的理解

發布時間: 2022-11-27 05:12:11

『壹』 從c語言源程序到匯編語言程序,C語言編譯器完成何種處理

一個編譯可實為解釋的過程,把一條條C語言解釋成相應的匯編語言組。

『貳』 匯編語言和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的語言代碼首先自動轉換為匯編代碼。

『叄』 先生們,女神們,快來看啊…… 請問下,c語言通過編譯器轉換成匯編語言,那電腦是怎樣聽懂匯編語言呢說

1、比如彈出光碟機,學過高中物理應該知道電生磁,實際上就是個發動機,將電能轉換成機械能。
2、要弄懂這個問題,舉個 ia32 windows平台上的例子,我也只能大體上說一下,具體的細節在這里是說不完的。。以c++源碼
int main()
{
int a = 2;為例
}
經過編譯器,會生成匯編代碼:mov dword ptr ss:[esp-4], 2,匯編指令經過匯編器(即將匯編指令轉換成機器碼的程序)即C74424FC02000000這樣的機器碼,匯編指令生成的機器碼是有一定的指令格式的,你可以參考intel開發手冊,第一部分就有intel指令的格式。然後鏈接器根據生成的二進制文件,按照pe結構,生成一個exe文件。當你雙擊運行這個文件的時候,windows的pe loader 程序會將exe文件內存文件映射到虛擬內存中(即windows上的頁文件,也就是c盤中的pagefile文件),CPU的內部有一個震盪器(震盪器的原理很簡單,平時看到的電鈴就是這個原理),震盪器不斷的發送脈沖,每一次當脈沖為1時,CPU就會從內存中讀取指令,脈沖為1的時候,會根據內存中的地址匯流排,發送要取指的內存地址,這時候有一個解碼器,所謂的解碼器就是一種開關電路,比如有三個開關,當2個斷開1個閉合時,就表示成001,也就是取第一個單元的數據,這樣CPU將指令取得後,它會對指令進行解碼,解碼完後設置電路開關,然後將相應的數據放入到運算器中,運算器的實現,最早就是一個加法器。然後就是指令執行,執行完了,繼續取下一條指令。這就是存儲程序原理。

沒事歡迎來0x30網路貼吧,分享交流更多計算機編程知識。

『肆』 什麼是匯編程序,編譯程序,解釋程序

解釋程序就是一行行的執行,比如dos,你打個命令再按下回車,
編譯就是一段代碼一起執行,生成一個位元組碼文件,比如c語言就是.
匯編是在高級語言和機器語言之間的一種過渡語言.

『伍』 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格式,這個格式的實現是有鏈接器來完成的。

『陸』 從C語言源程序到匯編語言程序,C語言編譯器完成何種處理

編譯器就是把高級語言轉換成機器語言,就是二進制代碼。
匯編語言可以說是機器語言的助記符,轉換比較容易,基本上就是二進制直接替換。
高級語言就復雜了,轉換起來很是麻煩,並且需要優化,所以編譯器是個大的軟體工程。

『柒』 實踐,C語言是怎麼變成匯編的

c語言未必會經歷匯編語言這一環節,准確的說,c語言經歷編譯器(必須),鏈接器(某種程度上非必須)的處理,成為可執行代碼(一般是二進制代碼)。
而匯編也許是目前多數編譯器提供的中間環節(vc,vs都提供在調試運行下使用反匯編的功能),因為對於匯編語言來說,進一步編譯成機器語言的難度很低,只需查找有限的匯編指令對應的編碼,如MOV,ADD等,具體編碼與機器有關。
而你說的c語言變成匯編這一過程,正是編譯器的核心工作,也是最為困難的。需要對你的程序(本質上是一個超長的字元串)做分割,詞法分析,語法分析,最後翻譯成匯編。

『捌』 C語言 四個過程:預處理,編譯,匯編,鏈接,分別進行了什麼過程別度娘。

預處理:替換代碼中的預處理命令(宏定義就是在這里直接替換的)
編譯:對代碼按執行順序進行編譯成.o或.obj目標文件
匯編:將其他高級語言轉換成機器語言
鏈接:代碼中的各種調用關系重定位

『玖』 匯編語言與C語言有什麼區別

1、操作復雜程度的不同

c語言,與匯編語言相比,c語言在更加接近人的一般思維,因此在程序的設計過程中比較容易操作,此外在進行一些復雜的操作,運算時,c語言比匯編就要簡單很多,尤其是c語言中的豐富的函數庫,可以直接實現一些原本很復雜的功能,並且從代碼量來說任意一個c語言程序,通過反匯編之後變成匯編語言程序,其長度都可能要增加好幾倍。

2、使用范圍的不同

c語言程序的事件將會只是編寫匯編語言程序的幾分之一,從編寫程序的效率上來說c語言無疑更高,此外C語言是高級程序語言因此可移植性較好,不太受到到硬體設備的限制。

在實現一個功能時,匯編語言可以直接奔著目標去,而C語言則是給你提供了一種對於對於這種問題的普遍處理辦法,不具有針對性,因此會有許多多餘的在這個問題中不需要的過程,因此可能回事程序較大,運行較慢。相對與匯編語言,C語言更加適合一些較大型項目的開發。

3、運行的速度和效率不同

程序沒有了匯編語言計算機直接就無法運行,因為匯編語言是基於計算機底層硬體的編程,通過它實現了對cpu,內存,硬碟以及外界設備的直接操作,因為直接所以匯編語言在程序的大小,執行的速度與效率方面幾乎無可比擬,但是也是因為直接,所以匯編程序難以移植,且完成相同的操作代碼量太大,在進行一些大的項目是,單獨使用匯編進行編程幾乎不可能實現。

『拾』 C語言為什麼要先編譯成匯編語言

C語言,具有可移植性,或者說同樣的代碼可以在不同cpu平台上運行得到同樣的結果
匯編語言,移植性差,一般針對某型cpu,每個類型的cpu都有自己的匯編語言
為保證C語言編制的通用演算法的可移植性,比如我們用C編寫了一套mp3解碼演算法程序,要在pc機上、手機上都能用,那麼我們就採用通用的C編譯器,將C語言程序編譯成指定CPU的匯編語言,再匯編成機器可執行程序。
另一個用途是程序優化問題,在C語言層次,由於是高級語言,不涉及底層硬體,那麼底層硬體的特性不能夠得到充分利用,在需要優化演算法的場合,我們需要將C語言演算法編譯生成匯編程序,然後修改需要優化的匯編程序達到目的。比如,你在手機上經常會遇到音頻解碼器,需要安裝,而且不同的cpu需要選擇不同的解碼器,這些解碼器應當就是在匯編層次上優化了演算法的可執行代碼,關鍵部分經過匯編級優化,不需要優化部分仍然使用C語言編譯的結果。

熱點內容
美團商家新增的技術伺服器是什麼 發布:2024-04-27 12:12:35 瀏覽:343
得到腳本 發布:2024-04-27 12:06:25 瀏覽:936
三星手機鎖屏忘記密碼了怎麼辦 發布:2024-04-27 12:05:41 瀏覽:519
python基礎語言 發布:2024-04-27 11:54:40 瀏覽:84
ioshttp伺服器搭建 發布:2024-04-27 11:40:26 瀏覽:913
忘記密碼如何強制刷機vivo 發布:2024-04-27 11:28:40 瀏覽:385
c語言讀取指定行 發布:2024-04-27 11:28:30 瀏覽:52
c語言中a10什麼意思 發布:2024-04-27 10:45:43 瀏覽:58
物聯網中ftp是什麼意思 發布:2024-04-27 10:41:17 瀏覽:986
銀行密碼保護在哪裡 發布:2024-04-27 10:25:23 瀏覽:189