【发布时间】:2013-09-04 00:57:15
【问题描述】:
我了解反编译器和反汇编器 (A .net disassembler/decompiler) 之间的区别,即反汇编器允许您将机器代码转换为汇编语言(您可以在 Visual Studio 的反汇编窗口中看到),反编译器将汇编语言转换为高级语言,例如C#。
是否可以在文本文件中看到由 Jitter 生成的汇编代码(从反汇编窗口)?我怀疑不是因为它被优化为及时。
另外,就我的第一个问题而言,MSIL 是汇编语言还是高级语言?即在 .NET 中似乎有两种汇编语言,即 MSIL 和由 JITTER 生成的汇编语言,尽管我怀疑答案是 JITTER 生成机器代码,在 Dissassembly 窗口中将其格式化为汇编语言。
我已经花时间阅读这里的其他问题,但我没有找到答案。
【问题讨论】:
-
这不是很有用,特别是因为反汇编窗口有一个错误显示呼叫地址错误。如果您想研究机器代码,请使用 C 编译器。与抖动生成的机器码差别不大。
-
@HansPassant,谢谢。我将在 CyGwin 编译器中使用 -S 开关。我想了解托管代码与较低级别的本机代码(例如 C 或 C++)有何不同。我意识到托管代码有一个垃圾收集器,但我不确定这如何使代码在较低级别(汇编语言或更低级别)上有所不同。
-
正如 HansPassant 所提到的,一般来说,除了学术目的之外,这对所有用途都是无用的。所以,如果你只是想学习一些东西,那就去做吧!如果它是寻找错误或其他东西的探险的一部分,那么你可能走得太远了。狩猎愉快!