當前位置:首頁 » 編程軟體 » c語言編譯的結果是匯編嗎

c語言編譯的結果是匯編嗎

發布時間: 2023-07-18 07:30:31

c語言編譯器是用匯編語言寫的嗎

這個是肯定的。演算法優化,首先是邏輯描述的精煉化。至於C,只是計算邏輯到計算機模式的一種映射,而匯編僅是利用特殊計算機指令的一個更深的藕荷。 不過有一點,C語言由於是計算邏輯到計算機模式的映射,所以不單單考慮演算法本身,還肩負數據組織的實現。數據流動方式,數據組織方式,對計算性能的影響也很大。這要看是否和計算機組成原理相貼近。其實這塊也是側重邏輯的設計,而不是具體機器指令的實現,因此匯編是無能為力的。 不過在DSP等特殊CPU架構,C語言和編譯器無法很好的將上述邏輯轉換為機器指令,或者C本身的邏輯無法很好的貼近CPU的特性,那麼還是得匯編。一個典型的例子就是如何使用DSP的並行指令(通常的矢量計算)和並發指令集,幾個不同的指令(隸屬不同處理單元)的同時執行。使用C語言無法描述清楚這些邏輯方式,而編譯器又太水,則還是不得不用匯編。此時C語言僅能淪落到大的計算機組織特性的貼近,和整體框架,模塊的設計上。細節方面無能為力了。

Ⅱ C語言為什麼要先編譯成匯編語言

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

不是哦,編譯得到的結果是二進制可執行文件,要得到匯編源碼還需要對其進行反編譯

熱點內容
郝斌資料庫 發布:2025-02-06 22:44:57 瀏覽:181
全息存儲器 發布:2025-02-06 22:43:51 瀏覽:116
游戲源碼如何使用 發布:2025-02-06 22:43:40 瀏覽:714
表與資料庫 發布:2025-02-06 22:42:47 瀏覽:438
典型宣傳短片拍攝腳本 發布:2025-02-06 22:33:27 瀏覽:551
php資料庫配置 發布:2025-02-06 22:29:38 瀏覽:17
android把 發布:2025-02-06 22:24:18 瀏覽:138
如何替換伺服器上的圖片 發布:2025-02-06 22:19:33 瀏覽:677
怎麼翻錄加密視頻 發布:2025-02-06 21:58:12 瀏覽:552
逃離塔科夫啟動器選什麼伺服器 發布:2025-02-06 21:44:48 瀏覽:294