不过真要说起来,使用UltraEdit32从理论上的确可以阅读一个编译后的IL代码,因为此时IL已经以二进制的形式存储在程序集文件中。例如IL Disassembler(ildasm.exe)和.NET Reflector便是通过读取程序集文件的数据(而不是在将程序集加载到CLR中)来获得IL代码,微软也发布了Common Compiler Infrastructure: Metadata和CCI: Code and AST两个和.NET基础结构有关的开源项目。而近在“自由互联”中,也有Anders Liu大牛写过一个CliPeViewer,从程序集的物理结构中读取其元数据,再进一步便可获取到IL代码了。
然后我花了大段来解释微软IL和汇编有着本质的不同,但是似乎还是被忽略了。
包同学后来接着说:
但是,要看懂赵劼的文章《从汇编入手,探究泛型的性能问题》,没有IL这方面的修为是绝对不行的。
我想说明的是,无论是我的《浅谈尾递归的优化方式》还是《从汇编入手,探究泛型的性能问题》,都没有牵涉到对IL的了解,了解得是“汇编”,你完全可以不知道IL,真的不需要,我也根本没有谈及过IL——你可以说IL是CLR上的汇编,但是老赵这里说的就是“汇编”就是指“机器码使用助记符的表现形式”,而不是MS IL Team的定义——它的定义一定是正确的吗?就算是正确的,我们的理解是否正确?没错,IL对于CLR看来它的确是“汇编”,但是它和真正的“汇编”区别是完全不同的,因此老赵说这两者根本不可同日而语。包同学的意思,已经接近是说“IL也是一种汇编,虽然是面向CLR平台的,也应该和CPU平台一样的理解,其作用也是差不多的”,这个对吗?包同学从证明了IL也可以使用“汇编”这个名词,但是这和“x86汇编”能够相提并论吗?老赵从头到底就是为了区分“汇编”和“IL”的概念,包同学却在强调“名字”。
不过真要说起来,使用UltraEdit32从理论上的确可以阅读一个编译后的IL代码,因为此时IL已经以二进制的形式存储在程序集文件中。例如IL Disassembler(ildasm.exe)和.NET Reflector便是通过读取程序集文件的数据(而不是在将程序集加载到CLR中)来获得IL代码,微软也发布了Common Compiler Infrastructure: Metadata和CCI: Code and AST两个和.NET基础结构有关的开源项目。而近在“自由互联”中,也有Anders Liu大牛写过一个CliPeViewer,从程序集的物理结构中读取其元数据,再进一步便可获取到IL代码了。
然后我花了大段来解释微软IL和汇编有着本质的不同,但是似乎还是被忽略了。
包同学后来接着说:
但是,要看懂赵劼的文章《从汇编入手,探究泛型的性能问题》,没有IL这方面的修为是绝对不行的。
我想说明的是,无论是我的《浅谈尾递归的优化方式》还是《从汇编入手,探究泛型的性能问题》,都没有牵涉到对IL的了解,了解得是“汇编”,你完全可以不知道IL,真的不需要,我也根本没有谈及过IL——你可以说IL是CLR上的汇编,但是老赵这里说的就是“汇编”就是指“机器码使用助记符的表现形式”,而不是MS IL Team的定义——它的定义一定是正确的吗?就算是正确的,我们的理解是否正确?没错,IL对于CLR看来它的确是“汇编”,但是它和真正的“汇编”区别是完全不同的,因此老赵说这两者根本不可同日而语。包同学的意思,已经接近是说“IL也是一种汇编,虽然是面向CLR平台的,也应该和CPU平台一样的理解,其作用也是差不多的”,这个对吗?包同学从证明了IL也可以使用“汇编”这个名词,但是这和“x86汇编”能够相提并论吗?老赵从头到底就是为了区分“汇编”和“IL”的概念,包同学却在强调“名字”。