4
有沒有什麼辦法可以讓.NET編譯的exe程序集被拆解爲純粹的彙編程序?也許有一些內置的工具來實現這一點。是否可以強制JIT編譯程序集並獲取asm代碼?
我知道C#代碼被編譯成IL,然後在運行時JIT編譯它的機器代碼。問題是我可以以某種方式強制jit編譯爲程序集並將此輸出用於文本文件。或者我很困惑,而且我對CLR如何工作的理解是錯誤的?
有沒有什麼辦法可以讓.NET編譯的exe程序集被拆解爲純粹的彙編程序?也許有一些內置的工具來實現這一點。是否可以強制JIT編譯程序集並獲取asm代碼?
我知道C#代碼被編譯成IL,然後在運行時JIT編譯它的機器代碼。問題是我可以以某種方式強制jit編譯爲程序集並將此輸出用於文本文件。或者我很困惑,而且我對CLR如何工作的理解是錯誤的?
你想用它做什麼?我不認爲你可以直接做到這一點。
假設你已經使用Ngen用於創建本機映像,本機映像緩存應該是像
C:\Windows\assembly\NativeImages_v4.0.30319_32\
的確切路徑取決於Framework版本,可能還有一些其他的因素,一些道路,我不認爲你有一個保證,它將永遠在那裏。如果你在那裏找到你的原生圖像,你可以使用反彙編器來查看機器代碼。
整件事情,還是隻是一個功能?當我只想看一個函數的代碼時,我確定它會拋出一個異常,然後在調試器崩潰時附加它(從調試器開始,導致lame codegen)。然後切換到內置的反彙編視圖。 – harold