小编use*_*881的帖子

为什么人们反汇编.NET(CLR)二进制文件?

我对.NET有些陌生,但对编程并不陌生,我对有关反汇编编译.NET代码的趋势和兴奋感到有些困惑.这似乎毫无意义.

.NET的高级易用性是我使用它的原因.我在资源有限的环境中编写了C和实际(硬件处理器)程序集.为了提高效率,这就是为了这么多细节而花费精力的原因.在.NET领域,如果你浪费时间深入了解实现中最神秘的细节,那就有可能失去拥有高级面向对象语言的目的.在使用.NET的过程中,我调试了通常的性能问题,这是一个奇怪的竞争条件,我通过阅读自己的源代码完成了所有这些,从来没有想过编译器生成什么中间语言.例如,很明显,for(;;)循环比数组上的foreach()更快,考虑到foreach()将使用带有方法调用的枚举对象来进行下一次而不是变量的简单增量,这很容易通过几百万次紧密循环运行来证明(不需要拆卸).

究竟是什么让IL愚蠢地拆解是因为它不是真正的机器代码.这是虚拟机代码.我听说有些人实际上喜欢移动指令来优化它.你在跟我开玩笑吗?即时编译的虚拟机代码甚至不能以本机编译代码的速度对(;;)循环进行简单的紧缩.如果你想从处理器中挤出最后一个循环,那么使用C/C++并花时间学习实际的汇编.这样你花在理解大量低级细节上的时间实际上是值得的.

那么,除了手上有太多时间之外,人们为什么要拆解.NET(CLR)二进制文件呢?

il reflector disassembly

4
推荐指数
1
解决办法
2754
查看次数

标签 统计

disassembly ×1

il ×1

reflector ×1