c和匯編語言的編譯器
1. 從c語言源程序到匯編語言程序,C語言編譯器完成何種處理
編譯器就是把高級語言轉換成機器語言,就是二進制代碼。
匯編語言可以說是機器語言的助記符,轉換比較容易,基本上就是二進制直接替換。
高級語言就復雜了,轉換起來很是麻煩,並且需要優化,所以編譯器是個大的軟體工程。
2. c語言與匯編語言混合編程編譯器
可以使用asm關鍵字內嵌匯編語言,用VC++就可以
微軟關於該關鍵字的詳述:
__asm關鍵字啟動內聯匯編並且能寫在任何c/c++合法語句之處.它不能單獨出現.它必須接匯編指令、一組被大括弧包含的指令或一對空括弧.術語「__asm 塊」在這里是任意一個指令或一組指令無論是否在括弧內。
以下代碼片段是在括弧內的一個簡單的__asm塊。
__asm
{
mov al, 2
mov dx, 0xD007
out al, dx
}
另一種方法是,你可以在每個匯編指令前放置__asm
__asm mov al, 2
__asm mov dx, 0xD007
__asm out al, dx
因為__asm關鍵字是一個語句分隔符,你也可以將匯編指令放在同一行:
__asm mov al, 2 __asm mov dx, 0xD007 __asm out al, dx
以上三個的例子產生相同的代碼,但是第一種風格(把__asm塊用括弧括起來)有一些優勢。括弧可以清晰的將C或C++代碼和匯編代碼分開,並且避免了不必要的重復__asm關鍵字。括弧也能避免模糊性。如果你想在__asm塊的同一行放置一個C或C++語句,你必須將塊用括弧括
起來。沒有括弧,編譯器不能告訴匯編代碼在哪裡停止而C或C++代碼在哪裡開始。最後,因為在括弧的文字有和原始MASM一樣的格式,你能輕松的從一個已有的MASM源文件里剪切和黏貼文字到文件來。
不同於C和C++的括弧,包含__asm塊的括弧對變數的作用域並沒有效果。你也能嵌套__asm塊,嵌套對變數作用域也沒有效果。
3. c語言的編譯器是干什麼用的
高級語言、匯編語言、機器語言這三種語言統稱「計算機語言」。其中,機器語言是最低級的,是一串一串的電流表示「0001101010010110010101000110」之類的數據,全部由0和1組成,這樣的語言是機器語言,只有機器才能記住這樣冗長而沒規律的數據,所以,用機器語言來編程序幾乎是不可能的。但要命令機器做一樣事情,必須用機器語言,怎麼辦呢?於是,產生了匯編語言,匯編語言比機器語言簡單一點,但還是很難明白,當時的編譯器就是把匯編語言轉換成機器語言,再命令機器做事。現在,出現了高級語言,最人性化,人們很容易讀懂,所以,我們可以直接輸入自己熟悉的語言,到達機器的時候變成了機器最熟悉的語言,編程序就很容易了。編譯器擔負的就是這個轉換工作。
4. 匯編語言和C語言各個用什麼軟體來編譯
C語言常用的編譯軟體有Microsoft
Visual
C++,Borland
C++,Watcom
C++
,
Borland
C++
Builder,Borland
C++
3.1
for
DOS,Watcom
C++
11.0
for
DOS,GNU
DJGPP
C++,
GUN
CC,Lccwin32
C
Compiler
3.1,Microsoft
C,High
C,等等......
大學里教學用的是TC2.0,這里的T表示TURBO,是Borland公司的產品.
匯編語言,一般是MASM
很多版本,是微軟公司的,還有就是TASM,是borland公司的,還有NASM
5. c語言編譯器如何運行
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
6. 現在學習c語言都是用什麼編譯器
初學者用的一般是TC編譯器。
名詞解釋
c語言
C語言是一種計算機程序設計語言,屬高級語言范疇。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序,代碼清晰精簡,十分靈活。
C語言,是一種通用的、過程式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。最近25年是使用最為廣泛的編程語言。
C語言是由UNIX的研製者丹尼斯·里奇(Dennis Ritchie)於1970年 由 肯·湯普遜(Ken Thompson)所研製出的B語言的基礎上發展和完善起來的。目前,C語言編譯器普遍存在於各種不同的操作系統中,例如UNIX、MS-DOS、Microsoft Windows及linux等。C語言的設計影響了許多後來的編程語言,例如C++、Objective-C、Java、C#等。
語言是1972年由美國的Dennis Ritchie設計發明的,並首次在UNIX操作系統的 DEC PDP-11 計算機上使用。它由早期的編程語言BCPL(Basic Combined Programming Language)發展演變而來,在1970年,AT&T貝爾實驗室的Ken Thompson根據BCPL語言設計出較先進的並取名為B的語言,最後導致了C語言的問世。 而B語言之前還有A語言,取名自世界上第一位女程序員Ada(艾達)。
隨著微型計算機的日益普及,出現了許多C語言版本。由於沒有統一的標准, 使得這些C語言之間出現了一些不一致的地方。為了改變這種情況,美國國家標准研究所(ANSI)為C語言制定了一套ANSI標准,成為現行的C語言標准。
註:國際標准化組織ISO也制定的C語言的標准,目前被很多編譯器所採用,如:GCC等。
C語言是世界上最流行、使用最廣泛的高級程序設計語言之一。[2]
在操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它高級語言,許多大型應用軟體都是用C語言編寫的。
C語言繪圖能力強,具有可移植性,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫。它是數值計算的高級語言。
常用的編譯軟體有Microsoft Visual C++,Borland C++,gcc(linux系統下最常用的編譯器),Watcom C++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C等。
同時也是中國國家計算機等級考試中計算機二級考試下的一個考試科目。
7. 可以顯示C語言編譯成匯編語言全過程的編譯器
如果你有用IDE的話,比如Visual Studio、Delphi等,應該都是可以設置C和匯編同時查看的。
一句C對應一句匯編,也相當於「單步編譯」吧!
8. 匯編語言 編譯器 推薦 c語言
強烈推薦masm for windows集編輯編譯鏈接執行於一體
用DOS特別麻煩,完全沒有必要
16位學完要盡早轉到32位的學習中,畢竟16位的東西都是老古董了
9. C語言怎麼寫匯編語言的編譯器
不能反。
就算用反匯編將C反成匯編的話,反出來也是和天書差不多,很難看得來。轉來轉去的,讓你頭暈。
10. 常見的C語言編譯器是什麼
目前最流行的C語言編譯器有以下幾種:
1、GNU Compiler Collection 或稱GCC
GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。
GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。
2、Microsoft C 或稱 MS C
Microsoft C 是c語言的一種IDE(集成開發環境),常見的還有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......
3、Borland Turbo C 或稱 Turbo C
Turbo C是美國Borland公司的產品,Borland公司是一家專門從事軟體開發、研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。
(10)c和匯編語言的編譯器擴展閱讀:
C編譯的整個過程很復雜,大致可以分為以下四個階段:
1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
3、匯編階段將匯編語言翻譯成機器指令。
4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。