我想开始学习汇编语言,但我不知道从哪里开始。我知道程序集依赖于处理器的体系结构。所以我当场有一个问题。如果我在我的系统上写了一些汇编代码,它很可能在另一台计算机上不工作吗?如果不是,Windows或Linux是如何创建的,因此它几乎可以在所有计算机上工作。还是我错了?
发布于 2014-01-06 19:03:56
汇编语言是处理器的语言。不同的处理器不同的语言。
实现便携性有许多方法。用C编写,然后在目标处理器上编译C程序是一种方法。使用虚拟机是另一回事。
一些可移植性是由具有相似指令集的同一系列处理器实现的。因此,英特尔和AMD处理器将运行相同的便携式汇编语言代码,因为指令集的设计是相互兼容的。
但是RISC处理器不会运行相同的汇编语言程序,因为指令集完全不同。
发布于 2014-01-06 19:10:38
程序集是一种非常低级的语言,几乎直接翻译成机器代码(这是CPU可以理解的“语言”)。现在大多数PC都是基于x86架构的,所以大多数PC的组装都是非常相似的。差异可能取决于操作系统(例如,大多数Linux系统在行尾使用与Windows不同的标记)和指定处理器的一些附加特性(尽管它是相同的体系结构,但取决于CPU可能有一些不同的操作)。当然,对于不同的体系结构,程序集是不同的(例如:您不能为ARM处理器编译x86代码,因为这些代码具有完全不同的可用指令集)。
操作系统通常是用一些高级语言编写的,只有一些功能(通常要求在指定的机器上尽可能快)是用一些低级代码编写的,比如程序集,用于指定的平台。
为了从程序集开始您的冒险,我将重新推荐8086程序集。它可以让您深入了解如何一般地编写组装代码,并可能成为将来学习不同体系结构的组装的良好基础。
发布于 2014-01-06 19:54:26
汇编语言为ISA (指令集体系结构)。例如x86 (目前大多数客户端PC和大量服务器上运行)、ARM (主要用于智能手机或平板电脑、微服务器、嵌入式系统等)、Alpha、IBMs‘PowerPC、Itanium (大多是过时的)等。
在客户端(我认为您的家庭台式机或笔记本,我认为它属于它)中,可能存在兼容性,这就是您可以在几乎任何一台计算机上购买和运行x86窗口(目前也有其他版本)或linux或其他任何东西的方式。请注意,这些ISAs在不断发展,增加了新的指令、新的体系结构特征和操作模式--因此,为某些ISA的新版本设计的程序很可能无法在更老的HW上工作,但由于设计者很难保持向后兼容性--由于旧模式和指令仍然受支持,较老的SW几乎可以在较新的HW上工作。操作系统也在改变,所以为DOS设计的代码不会像以前那样在新的窗口上运行,而是可以在仿真器和其他技巧的帮助下运行。
https://stackoverflow.com/questions/20957256
复制相似问题