这一节主要介绍的是AT&T汇编语言和Intel汇编语言的基本格式以及一些明显的区别,困惑的你一定会想问,为什么要介绍这些呢?
因为咱们的操作系统最开始引导部分的代码用的是Intel汇编语言, NASM编译器不知道读者是否使用过,这个编译器用的就是Intel汇编语言,NASM的代码格式简洁,给人感觉使用起来会很舒服。还有YASM编译器,如果你习惯使用YASM编译器也没有问题,毕竟启动阶段到内核程序的跳转是在内存里完成的,这两个阶段是独立编译的不会在编译的过程中产生依赖关系,您可以放心大胆的使用。这两种编译器都可以在CentOS上安装使用,并且是开源免费的,省得让微软、IBM、Google等大叔们找我们麻烦。
然后当引导程序完成进入内核后,我们用的是GNU C编译器(GCC),并在内核启动部分代码中嵌入了AT&T汇编语言。。。。。没办法GNU的汇编编译器(AS)用的就是AT&T汇编语言,它在寄存器前面非要加“%”,书写起来有些别扭,就算是在GNU C里面嵌入汇编语言的时候也要保持这种风格,看来我们只能学着习惯来。
所以,就有了下文书介绍的这些内容。但由于每个人的基础不一样,没有办法面面俱到,只能介绍一些我们以后会用到的知识。现在是不是觉得书到用时方恨少了呢?没关系,我会尽量把汇编代码解释的详细些。还希望读者们科下多多努力呦~!!~!
本文已在图灵出版社社区连载中,欢迎大家前去阅读。