① 編譯器將高級語言程序轉變為目標代碼 這句話是否正確
對的,高級語言程序如c/c++,目標代碼是指對應機型的代碼,如X86,MIPS,ARM,PowerPC
普通的編譯器就是完成這個工作.如gcc,clang
至於java,python這類實際帶有虛擬機的語言會有所不同,會生成比目標代碼再高一層的位元組碼,最終由虛擬機運行(實際運行時也是目標代碼)(不考慮jit),不過這里不考慮
② 編譯器是將高級語言編譯成匯編語言嗎
一般的編譯器,是先將高級語言轉換成匯編語言(中間代碼),然後在匯編的基礎上優化生成OBJ目標代碼,最後Link成可執行文件
③ 將用高級語言編寫的源程序轉換成等價的目標程序的過程,稱為
(總體上說)稱為編譯。
高級語言如果指的是C的話:
C語言詳細編譯過程分成四個步驟:
1. 預處理(preprocessor):將存儲在不同文件的源程序(.c文件)聚合在一起,將語言中的宏進行替換,比如預處理指令#include,讓編譯器打開包含的文件,將其程序與其他程序呆在一起.生成.i文件。
2.編譯:預處理源程序(.i文件)變為匯編程序(.s文件)
3.匯編(assember):將匯編程序轉換為可重定位(relocatable: 就是說文件裡面的代碼段和數據的地址還沒有最終確定)的機器代碼,這一步產生目標文件(.obj或.o文件)。
4.鏈接(linker)/載入(loader): 鏈接就是把目標文件和其他分別進行編譯生成的程序模塊(如果有的話)及系統提供的標准庫函數連接在一起,生成可運行的可執行文件的過程,載入時將各代碼與數據定位到內存合適的位置,這一步產生最終的可執行文件。
④ 編譯程序是把高級語言編譯成匯編語言程序還是機器語言程序為什麼王道上有兩個說法啊,我糾結了!!
編程語言分為高級編程語言和低級編程語言。
匯編屬於低級語言,語法更接近程序實際的運行順序。
C/C++屬於高級語言,語法更接近自然語言。
無論C/C++還是匯編語言,都是將代碼編譯成可被機器識別的機器語言。
⑤ 把高級語言編寫的源程序轉換為可執行程序的過程叫什麼
這種過程叫作編譯程序。
⑥ 編譯程序可以將高級語言變成機器語言嗎
將高級語言轉換成由0,1構成的機器語言需要通過編譯程序來實現。即可轉化成機器語言。
機器語言是一種指令集的體系。這種指令集,稱機器碼,是電腦的CPU可直接解讀的數據。
機器碼有時也被稱為原生碼,這個名詞比較強調某種編程語言或庫,它與運行平台相關的部份。
⑦ 編譯程序只需裝入就可以將高級語言翻譯為機器語言
所謂編譯是指報源程序轉換為目標程序的過程,所以編譯程序是一個中間介質,它可以將高級語言的程序編譯生成一個機器語言的目標程序,因此還要運行編譯後的目標程序,計算機只能認識二進制,所以它只能執行機器語言的程序,間接執行高級語言有兩種方式就是編譯和翻譯,也可以通過匯編來間接執行匯編程序