我理解反编译器和反汇编程序(A .net disassembler/decompiler)之间的区别,即反汇编程序允许您将机器代码转换为汇编语言(您可以在Visual Studio的Dissassembly窗口中看到)并且反编译器转换程序集语言到高级语言,例如C#。
是否可以在文本文件中看到由Jitter生成的汇编代码(来自Dissassembly窗口)?我怀疑不是因为它被优化为及时。
另外,在我的第一个问题的背景下,MSIL是汇编语言还是高级语言?即在.NET中,似乎有两种汇编语言,即MSIL和JITTER生成的汇编语言,但我怀疑答案是JITTER生成的机器代码在Dissassembly窗口中被格式化为汇编语言。
我花时间在这里阅读其他问题,但我没有找到答案。
答案 0 :(得分:7)
我认为在这里理解定义很重要(看起来你大多数情况下都是这样,这只是为了确保)。
首先,汇编语言:这只是任何人类可读的语言,其中每个语句直接编译为某些机器代码中的指令(例如x86机器代码或.Net字节码)。
基于此,反汇编程序是一个反转编译的程序:它将机器代码转换为相应的汇编语言。
反编译器将机器代码转换为另一种语言。
也许所有选项的图像(包括de / /编译C / C ++和假设x86计算机)都会有所帮助:
现在,针对您的具体问题:
是否可以在文本文件中看到Jitter生成的汇编代码(来自Disassembly窗口)?
理论上,没有理由不应该这样做(特别是考虑到NGEN)。实际上,我不知道任何这样的工具。
在第一个问题的背景下,MSIL是汇编语言还是高级语言?
我会说这是一种高级汇编语言。它当然是汇编语言,它也比普通汇编语言更高级。
答案 1 :(得分:3)