是否可以反汇编/检查 .Net JITer / ngen 生成的本机代码?(纯学术目的)
在试图回答这个问题时,我对 JITer 将执行什么样的优化产生了兴趣——而不是疯狂地推测,我真的很想亲眼看看真正发生了什么。
到目前为止,我已经:
- 使用ngen安装了我的候选程序集的本机映像(此输出可能与 JIT 编译器的输出不同吗?)
- 从 GAC 中复制原生镜像
但现在我有点卡住了——据我所知.Net程序集是可移植的可执行格式,但我可能用来反汇编这样一个文件(objdump)的普通工具只是barf:
C:\Users\justin\Desktop>objdump -d ConsoleApplication1.ni.exe
objdump: ConsoleApplication1.ni.exe: File format not recognized
以这种方式窥视原生图像是否可行?如果做不到这一点,是否有其他方法可以满足我的好奇心?(例如反汇编正在运行的进程中的代码)