2011-09-24 38 views
0

我有我用C#編譯的可執行文件,我想從它彙編代碼彙編代碼,有沒有工具可以做到這一點? 也有可能從生成的彙編程序創建一個可執行文件?如何從可執行文件轉儲彙編程序

+1

使用ildasm.exe查看生成的IL。是的,ilasm.exe可以重建.exe –

回答

2

C#沒有編譯到彙編程序級別,它編譯爲通用中間語言(CIL),這不是一回事。編譯C#需要一個解釋器,並且總是會的。你不能僅僅將編譯後的表單複製到一個非.NET程序中。

+0

「編譯C#需要解釋器」 - 從技術上講,不。 CIL需要一個虛擬機(即使這不是普遍規律,有一些小型CPU可以執行JVM字節碼,CIL也應該可以),但是可以將C#編譯爲除CIL以外的內容(例如本地代碼)。它可能仍然需要* some * runtime(例如,對於GC;這可以靜態鏈接到可執行文件中)。這只是一個巨大的項目,並且在使用CIL和利用現有實現及其JIT編譯器(如果需要AOT編譯時爲'ngen')提供接近於零的優勢。 – delnan

+0

啓動時間是最重要的原生優勢。 Afaik NGEN的開發是爲了解決這個問題。 –

1

C#不會編譯爲機器碼,或者至少Microsoft C#編譯器不會編譯爲機器碼。但是,您可以使用ildasm以彙編形式打印輸出中的中間語言字節碼。另外,如果您希望看到CLR能夠及時編譯C#代碼的一種方法,請使用Mono編譯爲彙編語言。一個例子在他們website給出:

mono --aot program.exe 

然後你就可以objdump的-d從此得到彙編語言,至少在* nix/Mac的機器,或使用Cygwin MinGW的或Windows計算機。

相關問題