我想开始学习汇编语言,但我不知道从哪里开始。我知道Assembly取决于处理器的架构。所以我当场有一个问题。 如果我在系统上写了一些汇编代码,是否可能无法在另一台计算机上运行?如果没有,如何创建Windows或Linux,因此它几乎适用于所有计算机。或者我错了?
答案 0 :(得分:7)
汇编语言是处理器的语言。不同的处理器,不同的语言。
有多种方法可以实现portability。用C编写然后在目标处理器上编译C程序是一种方法。使用虚拟机是另一个。
某些可移植性是由具有类似指令集的处理器的相同系列实现的。因此,英特尔和AMD处理器将运行相同的可移植汇编语言代码,因为指令集的设计是为了相互兼容。
但RISC处理器不会运行相同的汇编语言程序,因为指令集完全不同。
答案 1 :(得分:1)
汇编是一种非常低级的语言,几乎直接转换为机器代码(这是一种可以理解为CPU的“语言”)。今天的大多数PC基于x86架构,因此大多数PC的组装非常相似。差异可能取决于操作系统(例如,大多数Linux系统使用不同的符号表示行结束而不是Windows)和指定处理器的一些附加功能(尽管它是相同的体系结构,具体取决于模型,CPU可能有一些不同的操作可用)。当然,对于不同的体系结构,程序集是不同的(例如:您无法为ARM处理器编译x86代码,因为它们具有完全不同的指令集可用)。
操作系统通常用一些更高级的语言编写,只有一些功能(通常需要在指定的机器上尽可能快)在一些低级代码中编写,例如汇编,用于指定的平台。 / p>
为了开始你的装配冒险,我会推荐8086装配。它可以让您深入了解如何编写汇编代码,并且可以成为未来某处学习不同架构的汇编的良好基础。
答案 2 :(得分:1)
汇编语言符合ISA(指令集架构)。例如x86(运行在当今的大多数客户端PC和大量服务器上),ARM(主要用于移动设备,如智能手机或平板电脑,微服务器,嵌入式系统等),Alpha,IBM的PowerPC,Itanium(主要是过时的) )等等。
在客户端细分市场(您认为自己的家用台式机或笔记本电脑属于那里),可能存在兼容性,这就是为x86购买和运行Windows的方法(目前还有其他版本),几乎任何计算机上的Linux或者其他什么东西。请注意,这些ISA不断发展,添加了新的指令和新的架构特性和操作模式 - 因此为某些ISA的新版本设计的程序可能无法在较旧的硬件上运行,但由于设计人员难以保持向后兼容性 - 由于旧的模式和指令仍然受支持,因此旧的SW几乎被授予在较新的HW上工作。操作系统也在变化,因此为DOS设计的代码不会“按原样”在新窗口上运行,但可以在模拟器和其他技巧的帮助下运行。