C#編譯器可以定義為一個內建元件,用於將C#程式碼轉換為機器可讀的語言程式碼,並以.dll檔案或.exe檔的形式傳回輸出檔。 C#有兩種不同類型的編譯方法,即公共語言執行時期編譯(CLR)和即時編譯(JIT)。 JIT編譯器進一步分為Pre JIT編譯器、Normal JIT編譯器和Econo JIT編譯器。用於此編譯目的的一些常用工具包括 C# 編譯器 2.0、C# 編譯器 3.5、C# 編譯器 4.x、Roslyn 和 Mono 編譯器。
因此,在產生中間語言之後,我們需要將此 IL 轉換為機器碼,因為處理器只能理解機器碼。 所以我們使用CLR(公共語言執行時期)來進行此轉換。 CLR是一種在電腦上執行的程序,借助Just-In-Time(通常稱為JIT)將IL代碼轉換為機器碼。當我們雙擊 .exe 檔案時,會呼叫 JIT 編譯器並在該時間編譯 IL 程式碼,因此它被命名為 JUST-IN-TIME(JIT)。
編譯可以隱式或明確完成。隱式編譯是兩次編譯,先編譯IS,再編譯成機器語言。這個過程稱為 JIT 編譯或 JUST-In-Time 編譯。 JIT支援多平台,加快程式碼的執行速度。
有三種不同的即時編譯器
1。預 JIT 編譯器
在這個編譯器中,只有一個編譯過程,因為整個原始碼被編譯為本機程式碼。
2。普通 JIT 編譯器
在這個編譯器中,只有那些方法被編譯成機器碼,這是運行時需要的。編譯器編譯這些方法,將它們儲存在快取中,並再次使用相同的方法。
3。 Econo JIT 編譯器
在此編譯器中,只有那些方法被編譯為運行時所需的機器碼,但是如果不需要,這些方法將被刪除。在 JIT 中,運行時只編譯所需的方法,因此需要較少的記憶體使用。
上圖
編譯時會執行1-3步驟
運行時將執行 3-5 個步驟。
所以,當我們運行時會出現這兩類錯誤。
早期的微軟編譯器被命名為.Net Framework,如C#編譯器2.0、C#編譯器3.5、C#編譯器4.x等。這些編譯器不是用C#寫的,或者我們可以說C#不是由C#編譯的。此後出現的其他編譯器是:
以下是Roslyn的四個API層
基於 C# ECMA 標準的 Mono C# 編譯器。它有多個版本,框架有 C# 1.0、2.0、3.0、4.0。 mono編譯器mcs針對framework 1.1,gmcs針對framework 2.0,而smcs和dmcs分別針對framework 2.1和4.0。
其他編譯器,如 RemObjects C# 編譯器,根據 EMCA 規範遵循 C# 標準,除此之外還有實作 C# 和 .Net 的 GNU C# 編譯器。
C# 編譯器就像其他編譯器一樣,將程式碼編譯為機器碼,以便處理器能夠理解該過程。
以上是C# 編譯器的詳細內容。更多資訊請關注PHP中文網其他相關文章!