汇编小册(六) 常见的汇编语言种类

本文最后更新于10 个月前,文中所描述的信息可能已发生改变。

有许多不同的汇编语言,选择哪种汇编语言,取决于我们要与之通信的处理器。

X86

编写起来相对其他汇编语言更复杂,但也是最流行的汇编语言之一。大多数现代台式电脑和游戏机都使用它。它用于英特尔处理器。

ARM

它也非常有用且复杂。它是大多数智能手机、平板电脑甚至树莓派使用的语言。最近,它被用于新的 Apple M1 处理器等。

6502

用于许多有影响力的旧系统,如 NES,并且今天仍在一些小型设备中使用。它是为人类程序员设计的,而不是为了编译器,因此语法比大多数其他汇编语言更容易。

RISC-V

一种简单的汇编语言,用于教育和研究目的。RISC 代表“精简指令集编译器”。它的目标是使用比大多数其他汇编语言更小的指令集。

TIP提示

关于 RISC-V 的介绍,可以看看我的这篇博客,点击跳转

目前我使用的是 MacBook Pro ,它的处理器是英特尔 X86-64 位,所以我将使用 X86-64 汇编代码来编写一些代码,用于演示汇编概念。

TIP提示

高级语言通过自动化汇编语言,屏蔽了许多复杂的细节,让编码更容易。由于这种自动化,计算机通常最终会做一些它们并不真正需要做的额外工作。因为现在的计算机非常快,所以大部分场景下,这种不必要的工作可能只需要额外的几毫秒来完成。用户永远不会注意到 Web 应用程序加载了 2.73 毫秒而不是 2.71 毫秒。因此,额外的工作无关紧要。但在某些情况下,确实需要从 CPU 中榨取所有的性能。

例如游戏引擎开发。为了创造运动的错觉,大多数游戏以每秒 60 帧的速度运行,许多游戏玩家以每秒 144 帧的速度玩游戏。这意味着游戏引擎中的部分代码需要能够在 1/144 秒(7 毫秒)内运行。

如果你的游戏引擎代码是用更高级别的语言编写的,它将完成我们上面讨论的所有额外工作,而这些额外的工作可能会使游戏循环的执行时间超过 7 毫秒的限制。这会降低游戏的帧率,导致游戏画面不稳定,玩家不满意。

在这种情况下,如果考虑汇编语言,我们就可以完全控制程序,告诉 CPU 做什么。如果我们确定一些高级语言正在做一些不必要的工作,并将它们替换为人类优化的汇编语言,也许能够将响应控制在在 7 毫秒内,让玩家再次开心。

汇编语言只是优化工具箱中可用的众多工具之一,大多数慢速代码都可以在没有修改任何汇编的情况下进行优化。然而,游戏引擎和其他对性能敏感的应用程序,通常需要充分利用这个工具箱中所有的工具,这就是为什么,今天的人们仍然编写汇编的主要原因。

汇编小册(七) 数据
汇编小册(五) 电与物理世界