同一架构的所有 CPU 都运行相同的汇编指令吗?

Has*_*an_ 3 x86 assembly arm instruction-set

最近看到有人写ASM的视频,他们只提到代码是针对x86_64架构的,没有提到具体的CPU。在大学里,我被教导要查看CPU的指令集、OP代码、内存映射等...(特别是Intel 8051)所以我觉得很奇怪。

我有兴趣为我的 M 系列 MacBook 编写 Assembly,ARM64 Assembly 是否也可以在所有 ARM CPU 上运行?

fuz*_*fuz 6

是,对的。指令集架构(ISA) 指定机器代码的外观及其具有哪些指令。一些 ISA 支持多个指令集,应用程序可以在它们之间切换。例如,x86 具有三种指令集:16 位、32 位和 64 位指令集。虽然非常相似,但为三者之一编写的代码如果不重新组装和稍加更改就无法在其他者上运行。

您的 Apple M1 处理器具有 ARMv8.4-A 指令集架构。该架构指定的三个指令集(A32、T32、A64)中,仅支持 A64。为 Apple M1 编写的代码原则上可以在具有相同指令集的任何其他处理器上运行,但可能会由于不同的操作系统和库而失败。

另请注意,指令集架构经常具有扩展。使用指令集扩展的代码只能在支持此扩展的处理器上运行。例如,x86 具有流行的 SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX、AVX2、AVX-512...扩展。ARMv8.4 也有扩展,但它们对于初学者来说并不真正相关。