汇编语言是否因一种体系结构而异?
Is the assembly language different from one architecture to another?
我听说每个处理器都有自己的汇编语言,那么是每个处理器都有自己的汇编语言还是每个架构?
OS 和编程语言如何在不同的程序集上工作?
每种体系结构都有自己的汇编语言。甚至在体系结构中也可能有添加额外命令的扩展(如 SSE 扩展)。通常一个编译器只能为一种架构创建代码,并且可能有可选的标志来启用对扩展的优化。当启用这些标志时,程序通常只会 运行 在支持这些扩展的处理器上。
对于程序和 OS 这通常意味着您应该只使用它们必须 运行 的架构的所有处理器都支持的编译器选项。如果优化不够,您必须为不同的优化提供 executables/libraries 多个代码路径,并在 运行 时间选择正确的一个。
汇编代码的过程是将opcodes - 以文本表示 - 翻译成二进制。
基本上,您可以说每个处理器都有自己的指令集。不同处理器的二进制代码根本不会 运行 - 或者如果平台差异很小, 运行 会产生意想不到的结果(好吧,不是真的意想不到)。这就是为什么不同平台存在针对相同 program/OS 的多个安装 packages/CDs/DVDs。
例如gcc
(GNU Compiler Collection)为同一个版本提供了一个 variety of packages(参见“下载 gcc”),
从相同的(高级)源代码构建,但适用于不同的硬件架构。
我听说每个处理器都有自己的汇编语言,那么是每个处理器都有自己的汇编语言还是每个架构? OS 和编程语言如何在不同的程序集上工作?
每种体系结构都有自己的汇编语言。甚至在体系结构中也可能有添加额外命令的扩展(如 SSE 扩展)。通常一个编译器只能为一种架构创建代码,并且可能有可选的标志来启用对扩展的优化。当启用这些标志时,程序通常只会 运行 在支持这些扩展的处理器上。
对于程序和 OS 这通常意味着您应该只使用它们必须 运行 的架构的所有处理器都支持的编译器选项。如果优化不够,您必须为不同的优化提供 executables/libraries 多个代码路径,并在 运行 时间选择正确的一个。
汇编代码的过程是将opcodes - 以文本表示 - 翻译成二进制。
基本上,您可以说每个处理器都有自己的指令集。不同处理器的二进制代码根本不会 运行 - 或者如果平台差异很小, 运行 会产生意想不到的结果(好吧,不是真的意想不到)。这就是为什么不同平台存在针对相同 program/OS 的多个安装 packages/CDs/DVDs。
例如gcc
(GNU Compiler Collection)为同一个版本提供了一个 variety of packages(参见“下载 gcc”),
从相同的(高级)源代码构建,但适用于不同的硬件架构。