我是一位專家C#3/.NET 3.5程序員,希望使用System.Reflection.Emit.DynamicMethod開始執行一些運行時代碼。我很想通過熟悉IL來升級到新的水平。什麼是學習CIL的最佳資源(MSIL)
任何指針(雙關語意)?
我是一位專家C#3/.NET 3.5程序員,希望使用System.Reflection.Emit.DynamicMethod開始執行一些運行時代碼。我很想通過熟悉IL來升級到新的水平。什麼是學習CIL的最佳資源(MSIL)
任何指針(雙關語意)?
學習它的最好方法是編寫你理解的東西,然後看看它創建的IL。另外,根據你在做什麼,你可以使用表達式樹來代替發送IL,然後當你編譯表達式樹時,那些微軟的聰明人會爲ya創建IL。
Expert .NET 2.0 IL Assembler.雖然這本書可能有點過時了,但它仍然是我的一個很好的概述。
.NET Reflector非常適用於檢查由C#/ VB.NET生成的IL。
這是一個很棒的學習工具。
我一直在使用它,但將它反編譯爲C# - 非常好的建議,謝謝! – TheSoftwareJedi 2008-09-30 23:02:07
的ECMA 335規範可在這裏下載: http://www.ecma-international.org/publications/standards/Ecma-335.htm
分區III是最相關的處理MSIL,但我強烈建議分區我以及任何.NET開發人員,因爲它會大大鞏固了對該平臺的理解。
我想提一下,在過去的幾周裏,我也想深入研究.Net的碗,並瞭解CIL代碼。我能找到的最好的文檔是規範。不幸的是,我還沒有找到一個堅實的「自學CIL」網站,該網站有足夠的信息來熟練掌握MSIL。如果你想要硬記錄,規範似乎是最好的去處。 – RLH 2015-03-13 11:24:54
除了達倫的回答,我建議選擇或發明一種玩具語言,併爲它編寫一個簡單的編譯器。選擇一些需要很少解析的東西,比如BF或基於堆棧的語言,你會發現編寫一個編譯器實際上比看起來簡單。
表達樹FTW! 沒想過!謝謝! – TheSoftwareJedi 2008-09-30 23:05:48