編譯器轉換寫在人類可讀編程語言代碼到由你的處理器所理解的 機器代碼表示。
編譯器如何知道我的CPU的指令集?
任何有關了解彙編程序,鏈接程序和加載程序工作的參考資料都將有所幫助。
編譯器轉換寫在人類可讀編程語言代碼到由你的處理器所理解的 機器代碼表示。
編譯器如何知道我的CPU的指令集?
任何有關了解彙編程序,鏈接程序和加載程序工作的參考資料都將有所幫助。
本質上,硬件/軟件的每個組合都需要自己的編譯器。因此,儘管您可能編寫C代碼以便在Windows機器上編譯和運行,但與Apple計算機的C編譯器相比,您仍然需要一個與其不同的編譯器。
只是爲了引起爭論,有些編譯器會生成與正在運行的硬件不同的硬件代碼。一個簡單的例子是Arduino的產品。 Arduino IDE運行在Windows(和其他)機器上,但是代碼是針對Arduino板上的Atmel微處理器編譯的。此外,每種電路板樣式(UNO等)都有Atmel mico處理器的不同風格,這就是爲什麼在IDE中必須確定草圖的目標,以便編譯器可以進行必要的調整以運行特定硬件(指令集)。
這個想法也適用於彙編器和連接器(可能會少一些)。
編譯器如何知道我的CPU的指令集?
大多數編譯器只知道如何爲特定的CPU(或其中一小部分)發出代碼。每個目標CPU都要求有人爲它編寫後端編譯器,而這個任務並不重要。
GCC支持各種各樣的目標,但即使是GCC也只能爲少數目標發射代碼。換句話說,您可以構建GCC以發出x86_64
和i*86
處理器的代碼,並且您可以構建另一個副本以發出PowerPC
的代碼,但是不能構建將爲這三個代碼生成代碼的單個GCC。
任何參考瞭解彙編器,鏈接器和加載的工作
谷歌搜索上述條款使我here。
指令集被硬編碼到編譯器的某處。 – 2013-08-01 04:35:45
@ H2CO3:我不這麼認爲,市場上有1000多個CPU。 – 2013-08-01 04:36:53
@NishithJainMR您當然還沒有聽說過模塊化編譯器,對嗎?代碼生成器(後端)必須在某個時刻擁有一個巨大的哈希(或左右)表,並將紅外映射到實際的CPU指令。 – 2013-08-01 04:37:41