汇编代码是否跨平台?

3
0x042444FF; /* inc dword ptr [esp+4] */

0x042444FF是机器码,而inc dword ptr [esp+4]是汇编代码,我知道机器码不是跨平台的,因为它取决于许多因素。

那么汇编代码呢?它是否取决于CPU?

2个回答

6
汇编代码不具备跨平台的特性。
通常情况下,机器指令与汇编指令之间存在非常直接的映射关系,因此汇编代码取决于体系结构。
来自维基百科(Wikipedia)的描述:
汇编语言是一种面向计算机、微处理器、微控制器和其他集成电路的低级编程语言。它实现了二进制机器代码和编程特定CPU体系结构所需的其它常数的符号表示。该符号表示通常由硬件制造商定义,并基于象征着处理步骤(指令)、处理器寄存器、内存位置以及其他语言特性的助记符进行。因此,汇编语言特定于某些物理(或虚拟)计算机体系结构。这与大多数高级语言形成对比,后者在理想情况下具有可移植性。

2
大多数情况下,它也不是跨操作系统的,因为您依赖于由操作系统设置的调用约定、中断代码等。 - James Anderson
__cdecl 调用转换仅适用于 Windows 吗? - wamp

2
汇编语言基本上是机器码的文本形式,旨在使编写机器码更方便和可读。两者之间几乎是一对一的映射,因此一个汇编语句就会被转换成它的机器码等效语句。机器码是与CPU有关的,因此汇编语言也是与CPU有关的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接