文件下载与邀请翻译者
学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。
翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么,欢迎你的加入。
另外,我不仅仅是打算翻译这一种手册,以后,可能还需要去翻译许多的英文技术文档,以支持系统底层的教学,培养系统底层程序员。
我有钱了以后,应该是会出私钱来请人翻译一批英文技术文档。当前,暂时没钱,若是有志愿加入的,欢迎啊。
本节翻译
【原文】Chapter 4 — Data Types. Describes the data types and addressing modes recognized by the processor; provides an overview of real numbers and floating-point formats and of floatingpoint exceptions.
Chapter 5 — Instruction Set Summary. Lists the all the IA-32 architecture instructions, divided into technology groups (general-purpose, x87 FPU, Intel MMX technology, SSE, SSE2, and system instructions). Within these groups, the instructions are presented in functionally related groups.
【翻译】第4章-数据类型。描述处理器识别的数据类型和寻址模式;提供实数和浮点格式以及浮点异常的概述。
第5章-指令集摘要。列出所有IA-32体系结构指令,并按技术组划分(通用、x87 FPU、Intel MMX技术、SSE、SSE2和系统指令)。在这些组中,指令以功能相关的组呈现。
【讲评】addressing modes,翻译中,是被翻译成了寻址模式。它也是我们在汇编语言中所学习到的寻址方式。寻址方式,大家应该都还记得把?立即数寻址,直接寻址,相对寻址。概念上的东西,我往往是记不全了,【mov ax, [bx]】,这个指令,它的意思是,将DS:BX所指向的内存中的两字节整数,存入寄存器EAX中。能理解这样的指令功能就好。
需要注意的是,在不同的汇编器中,汇编语法会有所不同。大家需要注意甄别同样的寻址方式在不同的汇编器中的写法。我认为,寻址方式是一个很有意思的知识点。
【原文】Chapter 6 — Procedure Calls, Interrupts, and Exceptions. Describes the procedure stack and the mechanisms provided for making procedure calls and for servicing interrupts and exceptions.
Chapter 7 — Programming With the General-Purpose Instructions. Describes the Basic load and store, program control, arithmetic, and string instructions that operate on basic data types and on the general-purpose and segment registers; describes the system instructions that are executed in protected mode.
【翻译】第6章-过程调用、中断和异常。描述过程堆栈和为进行过程调用以及为中断和异常提供服务而提供的机制。
第7章-使用通用指令编程。描述在基本数据类型以及通用寄存器和段寄存器上操作的基本加载和存储、程序控制、算术和字符串指令;描述在保护模式下执行的系统指令。
【讲评】保护模式,这是我们学习英特尔处理器时,需要花费一些时间来学习的东西了。大家可以在市面的一些个书籍中,了解保护模式的知识。比如李忠先生的《X86汇编语言,从实模式到保护模式》,北大毕业的郑刚先生的《操作系统真象还原》,《Linux内核完全剖析(基于 0.12 内核)》等等的书。当然了,如果你在保护模式的学习中有疑问,你也可以来联系我。
个人比较建议,你在学习英特尔开发手册之前,最好是能够学习一下保护模式的知识,学习Bochs,QEMU等等的基本使用方法,并学习写一写基础内核程序,比如写一个引导扇区程序,一个引导加载程序,尝试着自己去实现简单的32位的代码。如果能够自己写出来类似于C语言的printf()函数的函数的话,那就在你自己的小内核里面实现一下这样的功能。如果暂时写不出来,那么,你借助于Bochs模拟器,GDB调试功能,来实时观测相关寄存器与内存的值,也可以。
英特尔开发手册的学习,它的一大目的,是为学习操作系统知识打基础。有条件的话,自己试着找一本基础的,讲操作系统内核的书,去跟着写简单的操作系统,是比较有助于理解英特尔开发手册的知识的。
以我目前的能力,我可以将 Linux 0.12 内核给编译出来。0.12 内核,里面会涉及保护模式的知识,但是,许多的更高级的知识,比如高级可编程中断控制器(APIC),型号专属寄存器(MSR),温度监控,性能监控,电源管理等等的功能,0.12 内核是没有去涉及的。
在学习英特尔开发手册的同时,去学习操作系统内核知识,软硬件结合着来学习,我认为是一个不错的学习方法。
结束语
本节,我说了一些个题外话。祝愿大家能够学习好英特尔开发手册。