NET探秘:MSIL權威指南學習筆記(1-3)

來源:互聯網
上載者:User

反編譯目標程式集:
>ildasm.exe filename.exe /output=123.il

重新編譯器集:
>ilasm.exe 123.il (會產生123.exe,如果輸入是dll,那產生的就是dll)

method的標記號沒有順序問題,只和指令的排列順序有關,比如以下IL代碼還是按從上到下的順序執行:
IL_FF00: nop
IL_FF00: call Profiler.Profile.Start()
IL_0000: nop
IL_0001: ....

跳轉指令都有對應的短版本(.s),短版本處理相對於當前行所在位置1位元組內的跳轉位移:
比如br,brtrue,brfalse 和 br.s,brtrue.s,brfalse.s
***這個特性特別重要,因為在我的想法裡,添加的代碼需要使用一個絕對不會重複的標記號,肯定是往大了設定。
***知道這個特性之後,就明白太大會導致短指令失效,所以到時候可能還得改短指令,也許可以將整個程式的短指令都改了,圖省事。

il支援別名(.typedef)
類似c的typedef,不同於c++的typedef,因為在任意位置定義的別名都是全域的,而c++是範圍內的

il支援少量的宏文法:
#ifdef / #ifndef / #else / #endif /
#include(不是插入文本,是掛起當前il的解析,然後跳轉到處理include的il,類似中斷,然後再回來繼續)
#define SYM1
#define SYM2 "SomeText"  替換不帶引號
#undef SYM1

ilAsm2.0以後支援以下三種簡化的範圍引用
.this 本類
.base 基類
.nester 外層類(內建類的外層類)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.