AT&T 汇编语言学习笔记开篇语

专栏导航

上一篇:无

回到目录

下一篇:无

本节内容

本专栏的设置,主要是为讲解 Linux 0.12 内核作铺垫。大概是在 2018 年的时候,我开始学习汇编语言。两周左右学完了王爽老师的 8086 汇编教材。后来,我又去看了郑刚先生的《操作系统真象还原》、李忠先生的《X86 汇编语言,从实模式到保护模式》、川合秀实先生的《30天自制操作系统》、赵炯先生的《Linux 内核完全剖析,基于 0.12 内核》等等。

赵炯先生的书,我看了好几遍,才算是大致了解了 Linux 0.12 内核部分内容。有了一点了解以后,我又尝试着去编译 0.12 内核,结果呢,总是失败,编译出来的代码,总是有问题,我也不知道问题出在哪里。现在,我也不知道问题出在哪里。

大概是在 2023年的时候,我又尝试着去编译 Linux 0.12 内核。这一次呢,我采用了新的方法。编译的时候,也遇到了一些个 bug,经过一番调试,算是把 bug 给解决了。最终呢,在 2023 年的 10 月 20 几号,我将 Linux 0.12 内核,给编译出来了。它能够运行,还能够执行少数几个简单的命令。

有机会的话,我会把我编译出来的 Linux 0.12 内核,向大家讲解。而想要讲解 Linux 0.12 内核,以及学习这个内核,一个基本功,就是要去学习 AT&T 汇编。尽管,在赵炯先生的书里面,以及在郑刚、田宇等人的书里面,都有去讲解 AT&T 汇编,但是呢,我还是建议你系统完整地学习一遍。

在学习方面,有的人喜欢用到了再学,喜欢跟着项目走,碎片化地去学习。我的话,我本人就比较喜欢系统性地去学习一些个东西。当然了,不是每一种东西都需要系统性地去学习。但是呢,还是有许多的科目,我喜欢系统学习。

如果,你像我一样,如果不是系统完整地去学习某些科目,就觉得少了点什么,那么,本专栏,应该是会很适合你的。

AT&T 汇编,这是 Linux 内核源代码里面,会采用的一种汇编语法。我们想要学习 Linux 内核,想要学习操作系统知识,想要从事系统底层开发,那么,AT&T 汇编,这会是一项重要的基本功。

本专栏,我会将其作为操作系统系列课程的一部分,来予以讲解,以培养操作系统方面的程序员。

我不是那种写书的老手,在写作本专栏的时候,我有我的参考教材。参考教材如下。
图1

这本书,算是一个绝版书了。在淘宝网上,你搜一搜,或许可以搜到。这本书的作者是美国的 Richard Blum,由马朝晖等翻译。

我这里呢,有这本书的电子版。

链接:https://pan.baidu.com/s/1BmqNW4mVqddW12JI_Q7MVQ

提取码:yhql

--来自百度网盘超级会员V4的分享

这是我的百度网盘链接了。百度网盘你应该会用吧?不会用的话,请自行搜索。

根据上面我分享的链接与提取码,你可以进入如下的界面。
图2

然后呢,依次点击进入【内核学习】、【教材与资料】文件夹,来到如下界面。
图3

在图3 的红色框线所示的部分,就是我所参考的教材的 PDF 电子书了。你可以将其下载下来,或者转存到你自己的网盘里面。这种绝版内容,还是将其保存下来为好。

对于这本书的内容,我打算全篇讲解的。但是呢,讲解的时候,我也会删减与调整部分内容。

在我写作的当前,已经有人写出了 64 位的 AT&T 汇编语言教材了。而我所参考的这本书,它里面所涉及的语法,仅仅是 32 位汇编语言的语法。

如果你想要进入系统底层的学习,那么,你应该从 16 位的汇编语言开始学起。我个人推荐的教材是王爽老师的汇编语言教材,第二版、第三版、第四版都可以。

王爽老师的汇编语言教材的截图如下。
图4

在我的网盘里,在图3 所示的界面中,我也收藏了王爽老师的汇编教材的 PDF 版本。你也可以将其保存下来的。

关于王爽老师的汇编语言教材,与之配套的视频讲解,你可以从 B 站里面搜索到的。小甲鱼的讲解就比较轻松幽默,还有另外一个人的讲解也很棒,且和教材内容非常符合。

以下链接是小甲鱼的汇编语言视频教程。

B 站小甲鱼汇编视频教程,与王爽汇编教材配套

以下链接是另一位讲师的汇编语言视频教程。

汇编语言从 0 开始,重制版

两个 B 站链接,都是与王爽老师的教材相配套的。

如果,你之前从未接触过汇编语言,那么,你一定要先去学习王爽老师的汇编语言。否则,本专栏,你大概率地会看不懂。

在你有了王爽老师的汇编教材的基础以后,那么,你可以尝试着来学习本专栏的知识。

不过呢,在我这里,我也没把握,是否能够让你在学完了王爽老师的教材以后,能够顺畅地学习本专栏内容。为了使得具备了王爽汇编基础的人,能够顺利地过渡到本专栏,我还推荐你去学习一下 Windows 32 位汇编语言,推荐你看一看郑州大学的钱晓捷先生的汇编语言教材。

在这里,我再将钱晓捷先生的汇编语言教材的封面给贴出来。
图5 图6

当初,我学习汇编语言的顺序,首先呢,是去学习的王爽老师的汇编语言教材,然后呢,去学习了钱晓捷先生的汇编语言教材以及对应的中国大学 MOOC 的视频。再往后呢,我去学习了李忠先生的《X86 汇编语言,从实模式到保护模式》教材。在李忠先生的汇编教材里面,他讲了另一种汇编语言,不是 Windows 汇编,而是在 Linux 和 Windows 里面都可以使用的汇编,叫做 NASM 汇编。

个人的话呢,我倒是建议你,在学完了钱晓捷先生的 32 位汇编语言以后,也去购买李忠先生的汇编教材,看一看,不见得要将李忠先生的汇编教材都看完,但是呢,还是建议你去接触其中的一部分的内容,以便呢,你能够对 NASM 汇编语法有一个基础的了解。

在你对 NASM 汇编有了基础的了解以后,你再来学习本专栏,那将会是比较容易的了。当然了,对于 NASM 汇编,你其实也不是说,非得先学完它,然后才来学习本专栏。你也可以说,本专栏和 NASM 汇编同时学习,也是可以的。

本专栏所讲述的内容,算是一个比较偏,比较专门化的内容。如果你想要用本专栏所讲解的汇编语言,来开发应用软件,那是大可不必的。因为,现在流行的 Python、Java、C++,足够你用来开发应用程序的了。

然而,你若是想要去学习操作系统知识,学习 Linux 内核,我还是比较建议你专门来学习一下本专栏的知识的。

祝愿你在汇编语言学习的道路上,能够开心快乐,收获丰富。

专栏导航

上一篇:无

回到目录

下一篇:无

相关推荐
Iruoyaoxh1 小时前
类和对象~
开发语言·c++
程序喵大人1 小时前
【C++进阶】STL算法与函数对象 - 04 find、count和any_of把查询写成意图
开发语言·c++·算法
豆沙沙包?1 小时前
c++中引用(P7-P11)
java·c++·算法
wuminyu2 小时前
虚拟线程底层ForkJoinPool的工作窃取算法机制
java·linux·c语言·jvm·c++
吹什么轩2 小时前
c++复习:c++11:lambda表达式
开发语言·c++
不会代码的小猴2 小时前
标准模板库(STL)
开发语言·c++·笔记·算法
旖旎夜光3 小时前
LeetCode 202:快乐数(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
tudousisi2223 小时前
P1216 [IOI 1994 / USACO1.5] 数字三角形 题解复盘
c++
cpp_25014 小时前
P1113 [USACO02FEB] 杂务
数据结构·c++·算法·动态规划·图论·拓扑排序·洛谷题解