实用小技巧:.VS2022+.NET9超级插件Disasmo

点击上方蓝字 江湖评谈设为关注

e68f04dac131af83953ac71fdf6f046c.png

前言

经常有人问:怎么查看.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,下载即可

cef13feff469c4f6cce784134cb55d1f.png

如果你在VS2022里面下载扩展插件速度非常慢,则可以在以下地址直接下载vsix插件:

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

下载下来之后,双击Disasmo.Vsix.vsix,选择:Microsoft Visual Stuido Version Selector,弹出安装对话框

911d718a8cd7f3418f9166990ea2058e.png

安装下即可,这里需要注意如果你用命令行安装:

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%3A/Disasmo.Vsix.vsix

个人实测,会出现上面提示的一些错误。所以这里建议按照双击的方式,选择选择:Microsoft Visual Stuido Version Selector安装。最后安装完成如下:

bbb482a95bc0eaa17eaeea782f088cd2.png

重启下所有打开的VS即可生效。

用法

如下代码:

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

把鼠标放到test函数名称上面,出现灯泡形状的图标,点击图标-》Disasm This

b6c71c05c121be21e94999e1fdc9356e.png

就会打开Disasm窗口,即可看到结果,如下图

97319df3f793ee21f055b56a141cd919.png

往期精彩回顾

新版.Net性能有没有达到C++90%?

欢迎加入.NET9技术交流群

7adad1164b8f0f43a51550dd9de6e1f9.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值