一本教授ARM 64位ISA上的汇编语言编程的书。

简介

一本教授ARM 64位ISA上的汇编语言编程的书。在此过程中,提供了直接适用于高级语言的良好编程实践和对代码开发的见解。

项目地址

https://github.com/pkivolowitz/asm_book

汇编语言编程简介

这本教科书简要介绍了汇编语言程序设计。这个介绍之所以“温和”,是因为它假设读者已经熟悉 C 或 C++ 编码。我们使用这些假定的知识向后桥接低级 ISA(指令集架构)。

我们把一个非常尖锐的观点带回家:C一种高级汇编语言汇编语言没什么好害怕的。

这本书是为谁准备的?

如前所述,如果您已经熟悉 C(或从 C 派生的语言,例如 C++),那么本书将从您已经了解的内容开始。后面的章节更深入地探讨了 ARM V8 ISA 的各个角落,适合那些希望掌握 64 位 ARM 处理器丰富指令集的读者。

这本书可以用于涵盖汇编语言的课程吗?

是的,一点没错。

事实上,我们认为汇编语言的学习对于培养称职的软件工程师是极其重要的。此外,我们认为教授 x86 指令集是残酷的,因为 ISA 诞生于 1970 年代,并且随着时间的推移变得更加混乱。

MIPS 指令集是大学水平课程中经常介绍的另一种 ISA。虽然比 x86 ISA 更友好、更温和,但 MIPS 处理器的相关性不如 ARM 系列。手机、平板电脑、笔记本电脑甚至台式机都包含 ARM V8 处理器,这使得对 ARM ISA 的研究更加热门。也许更“酷”。

本书中使用的调用约定

汇编语言编程非常依赖于底层硬件架构。主机操作环境在决定如何构建汇编语言程序方面​​起着巨大的作用。“调用约定”是指如何调用函数以及如何传递参数。

在本书中,我们将使用 ARM LINUX 约定。这表示:

  • 您将需要在 Macintosh 上运行 ARM Linux VM——即使是在基于 ARM 的 Mac 上。为什么?苹果。这就是为什么。

  • 您将需要在基于 ARM 的 Windows 机器上运行 WSL(适用于 Linux 的 Windows 子系统)。这些确实存在!

  • 您将需要在基于 x86 的 Windows 机器上运行 ARM Linux VM。

很多名字

与 ARM 设计一样值得称赞的是,ARM 对其知识产权的命名约定非常糟糕。在本书中,AARCH64 和 ARM V8 被视为 64 位 ARM 指令集体系结构 (ISA) 的同义词。

很难在 ARM 站点上找到文档,因为它们有很多版本,同一事物的名称很多,一般文档也很多。这真的很让人抓狂。

在文本中,我们将酌情提供相关链接。

第 1 节 – 从 C / C++ 到汇编语言的桥接

我们首先提供我们所说的从 C 和 C++ 到汇编语言的“桥接”。我们使用您已有的知识来学习新知识——这多酷啊!

Chapter Content
1 Hello World
2 If Statements
3 Loops
…. a …. While Loops
…. b …. For Loops
…. c …. Implementing Continue
…. d …. Implementing Break
4 Interludes
…. a …. Registers
…. b …. Load and Store
…. c …. More About ldr
…. d …. Register Sizes
5 switch
6 Functions
…. a …. Calling and Returning
…. b …. Passing Parameters
…. c …. Calling common C runtime functions
7 FizzBuzz – a Complete Program
8 Structs
…. a …. Alignment
…. b …. Defining
…. c …. Using
9 const
10 Casting

第 2 节 – 浮点数

浮点运算使用它们自己的指令和它们自己的一组寄存器。因此,浮点运算包含在它们自己的部分中:

Chapter Content
1 Floating Point
…. a …. What Are Floating Point Numbers?
…. b …. Registers (simplified)
…. c …. Literals
…. d …. fmov Not Yet Written
…. e …. Conversion To / From Integers
…. f …. Four Basic Operations Not Yet Written
…. g …. Selected Additional Operations Not Yet Written
…. z …. Half Precision Floats

第 3 节 – 位操作

如果没有bit bashing,一本关于汇编语言的书会怎样?

Chapter Content
1 Bit Fields
…. a …. Without Bit Fields
…. b …. With Bit Fields
…. c …. Review of Newly Described Instructions

第 4 节 – 更多内容

Chapter Content
Determining string literal lengths for C functions

项目

以下是一些项目规范,可以为您不断提高的掌握程度提供挑战。

DIRENT项目演示了如何在汇编语言中使用复合体。struct

关于作者

Perry Kivolowitz 在计算机科学领域的职业生涯跨度不到五年。他创办了超过 5 家公司,主要涉及硬件、图像处理和视觉效果(用于电影和电视)。Perry 因其在巴比伦 5 试播集 The Gathering 中的工作而获得艾美奖认可。后来,他与 SilhouetteFX, LLC的同事一起获得了艾美工程奖。SilhouetteFX 几乎用于每一个重要的电影中,用于旋转观察、绘画、跟踪、2D 到 3D 重建、合成等。

1996 年,佩里 因其发明的形状驱动变形和变形技术获得了奥斯卡科学技术成就奖。这是在阿甘正传、泰坦尼克号和星际之门中产生许多著名效果的技术。

222 年标志着 Perry 在大学级别教授计算机科学的第 18 个年头,在威斯康星大学麦迪逊分校任教 10 年,现在在迦太基学院任教 8 年。

汇编语言是 Perry 在以下 ISA 工作的热情所在:

  • Univac 1100

  • 数字设备公司 PDP-11

  • 数字设备公司VAX-11

  • 摩托罗拉 68000

  • ARM以AARCH64开头

这部作品献给我的妻子 Sara 以及儿子 Ian 和 Evan。

请登录后发表评论

    没有回复内容