要学习哪种汇编语言

时间:2011-09-17 14:49:46

标签: visual-studio compiler-construction assembly x86 intermediate-language

我有兴趣学习汇编,特别是因为我发现多态代码相当有趣,而且我对我应该学习哪些内容感到困惑。

我听说x86是最常见的学习或开始,但不是大多数应用程序(用Visual Studio编写)用不同的汇编语言?或者在普通中级语言中还是什么?或者CIL或IL或其他什么在运行时被编译到x86中?

4 个答案:

答案 0 :(得分:5)

这取决于你想要学习的内容。 CIL是名为the 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程序集更容易。

答案 1 :(得分:3)

如果您真的对学习汇编语言感兴趣,我推荐的一本书是 Introduction to Computer Systems 。作者教授他们自己发明的计算机系统的汇编语言,称为LC-3。学习这个平台本身并没有价值,但它是一种大大简化的机器语言。在了解了更简单的机器语言之后,您可以继续学习更复杂的语言,如x86。

答案 2 :(得分:1)

IL不是汇编程序,是中间语言,是的,由.NET运行时编译成汇编程序。汇编程序(或机器代码)是CPU所说的唯一语言。

.NET程序集不是在汇编程序中编写或生成的,它们是非常不同的东西。

我认为x86汇编程序应该可以启动,如果你真的想给自己带来所有这些痛苦或做出这样的努力; - )

答案 3 :(得分:1)

您通常使用或最喜欢的计算机芯片架构是什么? 什么平台或O.S.你经常上班吗?

在汇编时进行编程时这些问题。

PC& Windows?苹果电脑 ? Unix?在Solaris Sparc上运行的PC(x86),Linux或BSD上运行的Linux或BSD?

有几种方法可以学习汇编语言。

通常,单芯片架构只有一种汇编语言,而不是几种高级编程语言。

如前所述,另一个是使用“虚拟机”,就像前面已经提到过的答案一样:J.M.V.,dotNet CIL或MSIL(相同),P-Code等。

在这种情况下,使用哪个平台并不重要。

PC具有ASM,但是,您也可以使用名为NASM的派生词:

http://www.nasm.us/

http://en.wikipedia.org/wiki/Netwide_Assembler