汇编语言在不同架构下是否有所不同?

5

我看到每个处理器都有自己的汇编语言,那么每个处理器都有自己的汇编语言还是每个架构都有自己的汇编语言呢?操作系统和编程语言如何在不同的汇编语言上工作?


1
你的第一个问题:情况比那更糟,不同的汇编器使用相同架构的不同语法。你的第二个问题:操作系统不使用汇编器,而编译器会有自己的汇编器。 - Weather Vane
2个回答

4
每种架构都有自己的汇编语言。即使在同一架构内,也可能存在添加额外命令的扩展(例如SSE扩展)。通常,编译器只能为一种架构创建代码,并且可能有可选标志,可以启用对扩展的优化。当启用这些标志时,程序通常只能在支持这些扩展的处理器上运行。
对于程序和操作系统来说,这通常意味着您应该只使用所有该架构处理器都支持的编译器选项。如果这不够优化,您必须提供具有多个代码路径的可执行文件/库,以及在运行时选择正确的路径。

4
汇编代码的组装过程是将操作码(以文本形式表示)转换为二进制代码。
基本上,可以说每个处理器都有自己的指令集。不同处理器的二进制代码简单地无法运行 - 或者如果平台差异只是微小的话,会运行并产生意外结果(实际上并不意外)。这就是为什么同一个程序/操作系统需要为不同的平台存在多个安装包/CD/DVD的原因。
例如,gcc(GNU编译器集合)提供了相同版本的各种软件包(请参阅“下载gcc”),它们是从相同的(高级)源代码构建而成,但适用于不同的硬件架构。

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