當前位置: 華文頭條 > 推薦

實用小技巧:.VS2022+.NET9超級外掛程式Disasmo

2024-03-19推薦

藍字 江湖評談 設為關註

前言

經常有人問:怎麽檢視.NET組譯程式碼?一般的來說檢視ASM,可以透過VS選單欄-】偵錯-】組譯,來檢視。此處檢視的是ASM是未最佳化,粗糙的程式碼。專業點的會透過設定環境變量,Release編譯檢視。

  • C :\test>set DOTNET_JitDisasm=Main C :\test>dotnet run -c Release ; Assembly listing for method ConsoleApplication.Program:Main(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Instrumented Tier0) ; Emitting BLENDED_CODE for X64 with AVX512 - Windows ; Instrumented Tier0 code ; rbp based frame ; fully interruptible
    G_M000_IG01 : ;; offset=0x0000 push rbp sub rsp, 208 lea rbp, [rsp+0xD0] xor eax, eax mov qword ptr [rbp-0x98], rax vxorps xmm4, xmm4, xmm4 vmovdqa xmmword ptr [rbp-0x90], xmm4 vmovdqa xmmword ptr [rbp-0x80], xmm4 vmovdqa xmmword ptr [rbp-0x70], xmm4 vmovdqa xmmword ptr [rbp-0x60], xmm4 vmovdqa xmmword ptr [rbp-0x50], xmm4 mov qword ptr [rbp-0x40], rax mov qword ptr [rbp-0xB0], rsp mov gword ptr [rbp+0x10], rcx

    更專業 的可以透過LLDB來檢視,但這些 過程比較麻煩,有無簡化的方法?當然有,即是VS2022+.NET頂級技術合成外掛程式:Disasmo,後端透過LLVM操控。

    Disasmo

    外掛程式用法:

    VS2022選單欄-】擴充套件-】管理擴充套件,搜尋:Disasmo,下載即可

    如果你在VS2022裏面下載擴充套件外掛程式速度非常慢,則可以在以下地址直接下載vsix外掛程式:

    https://marketplace.visualstudio.com/items?itemName=EgorBogatov.Disasmo

    下載下來之後,雙擊Disasmo.Vsix.vsix,選擇:Microsoft Visual Stuido Version Selector,彈出安裝對話方塊

    安裝下即可,這裏需要註意如果你用命令列安裝:

  • PS C:\> code --install-extension .\Disasmo.Vsix.vsix Installing extensions... Error : extension/package.json not found inside zip. at ZipFile.<anonymous> (D:\visusl_studio_code\Microsoft VS Code\resources\app\out\vs\code\node\cliProcessMain.js:18:15678) at Object.onceWrapper (node:events:628:28) at ZipFile.emit (node:events:514:28) at FdSlicer.<anonymous> (D:\visusl_studio_code\Microsoft VS Code\resources\app\node_modules.asar\yauzl\index.js:202:10) at Object.onceWrapper (node:events:628:28) at FdSlicer.emit (node:events:514:28) at onCloseDone (D:\visusl_studio_code\Microsoft VS Code\resources\app\node_modules.asar\fd-slicer\index.js:74:12) at D:\visusl_studio_code\Microsoft VS Code\resources\app\node_modules.asar\graceful-fs\graceful-fs.js:61:14 at FSReqCallback.oncomplete (node:fs:202:23) Failed Installing Extensions: file:///c:/Disasmo.Vsix.vsix

    個人實測,會出現上面提示的一些錯誤。所以這裏建議按照雙擊的方式,選擇選擇:Microsoft Visual Stuido Version Selector安裝。 最後安裝完成如下:

    重新開機下所有開啟的VS即可生效。

    用法

    如下程式碼:

    static int test (int a, int b ) => a * b;

    把滑鼠放到test函數名稱上面,出現燈泡形狀的圖示,點選圖示-】Disasm This

    就會開啟Disasm視窗,即可看到結果,如下圖

    新版.Net效能有沒有達到C++90%?