1. c語言編譯器如何運行
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
2. 編譯器如何將編程語言翻譯成目標CPU的特定指令集
編譯器如何將編程語言翻譯成目標CPU的特定指令集?
MSIL
MSIL是將.NET代碼轉化為機器語言的一個中間過程。它是一種介於高級語言和基於Intel的匯編語言的偽匯編語言。當用戶編譯一個.NET程序時,編譯器將源代碼翻譯成Microsoft 中間語言 (MSIL),它是一組可以有效地轉換為本機代碼且獨立於CPU的指令。當執行這些指令時,實時(JIT)編譯器將它們轉化為CPU特定的代碼。由於公共語言運行庫支持多種實時編譯器,因此同一段msil代碼可以被不同的編譯器實時編譯並運行在不同的結構上。從理論上來說,MSIL將消除多年以來業界中不同語言之間的紛爭。在.NET的世界中可能出現下面的情況一部分代碼可以用EFFIL實現,另一部分代碼使用C#或VB.NET完成的,但是最後這些代碼都將被轉換為中間語言。
3. c語言翻譯器
不知道你這樣問的意思。不過看到分值挺誘人的,我也來說兩句。
C語言翻譯器。翻譯器是早前的叫法,現在大都叫編譯器。
以前條件比較艱苦,開發的時候,程序的編輯工具、編譯工具、鏈接工具、調試環境等等這些統稱為「工具鏈」的東東都是分開的(意思是說它們是不同的幾個軟體),說得通俗一點,就是寫代碼需要一個編輯軟體,編譯寫好的代碼,又需要用到別的軟體,這樣極其的不方便。
發展到現代,很多開發過程都集成到一個軟體去了,就是說上面介紹的那些編寫、編譯、鏈接甚至是執行等等這些開發環節在一個集成開發軟體當中都能完成。
所以,現在通常所說的編譯,已經隱含地表示一個程序從預編譯、編譯、匯編、鏈接等等這么些過程了。
什麼是編譯(也就是你所問的翻譯)?編譯就是將人認識的高級一點的C語言翻譯成機器認識的低級一點的機器碼(就是二進制碼,全是0和1)。翻譯器呢,就是完成這個過程的一個軟體啦。
這么說,你能不能理解?
速度採納給分。
4. 怎麼把用c語言開發的程序變成軟體
1、打開Microsoft Visual Studio;
5. java編譯器如何實現把原始的代碼翻譯成目標機的機器語言
你編寫的.java 經過 javac.exe 編譯後變成了字解碼文件 .class ;.class 是java 用來實現跨平台的一門技術,C# 也是照著它學做出來的,.class 經過 本地 jvm.dll 裝在jre 中,解釋執行。就變成了機器語言。不同的jvm 編寫不同。linux mac windows 等。具體的你可以去看 java 編程思想。不過這個對你以後工作沒有什麼幫助,也不會有人問,理解一下即可。