Tyl*_*hko 7 compiler-construction x86 assembly intermediate-language visual-studio
我有兴趣学习汇编,特别是因为我发现多态代码相当有趣,我对于我应该学习的东西感到困惑.
我听说x86是最常见的学习或开始,但不是大多数应用程序(用Visual Studio编写)使用不同的汇编语言?或者在普通中级语言中还是什么?或者CIL或IL或其他什么在运行时被编译到x86中?
这取决于你想要学习什么.CIL是称为CLR的理论机器(或虚拟机)的汇编语言,它是用软件实现的.然后,CIL代码由即时编译器编译为x86汇编或64位intel汇编.
如果您主要使用Visual Studio进行编程,我建议您首先学习CIL,原因如下:
1)CIL更简单.x86汇编自20世纪70年代以来一直在发展,它确实表现出来.指令数量巨大,您必须学习不相关的技术细节才能开始使用.
2)编写结构良好的程序会更容易.如果你以后决定学习x86程序集,希望你会把这些习惯带到你身边.
3)如果你想要在低级别上对.NET程序进行性能调优,那么CIL会更有用,因为这是他们编译的内容.这是你应该优化的最后一个地方.
学习x86/x64的原因:
1)它是真实硬件的汇编语言.这意味着你学到的东西将是"真实的东西".您还将了解实际硬件的工作原理.这并不意味着首先学习一种更简单的语言可能并不容易.
2)平台有寄存器,这是一个你不会用CIL了解的功能.
3)平台没有内置面向对象的功能,这意味着您必须自己学习如何实现这些功能.这也是您可以通过C++了解的内容.
总而言之,我建议学习一种简单的语言,如CIL,JVM组装或LC-3组装,如Daniel Wolfe所建议的那样.如果你还想学习x86程序集,你可以随时做到这一点.以正确的顺序学习两者可能比仅仅学习x86程序集更容易.