自贡建网站,最好用的下载软件排名,关于网站建设的知识,关键词在线查询文件下载与邀请翻译者
学习英特尔开发手册#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。
讲解下载英特尔开发手册的文章
翻译英特尔开发手册#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的#xff0c;那么#xff…文件下载与邀请翻译者
学习英特尔开发手册最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。
讲解下载英特尔开发手册的文章
翻译英特尔开发手册会是一件耗时费力的工作。如果有愿意和我一起来做这件事的那么欢迎你的加入。
另外我不仅仅是打算翻译这一种手册以后可能还需要去翻译许多的英文技术文档以支持系统底层的教学培养系统底层程序员。
我有钱了以后应该是会出私钱来请人翻译一批英文技术文档。当前暂时没钱若是有志愿加入的欢迎啊。
本节翻译 【原文】2.1.4. Interrupt and Exception Handling External interrupts, software interrupts, and exceptions are handled through the Interrupt descriptor table (IDT), see Figure 2-1. The IDT contains a collection of gate descriptors, which provide access to interrupt and exception handlers. Like the GDT, the IDT is not a segment. The linear address of the base of the IDT is contained in the IDT register (IDTR).
【翻译】2.1.4. 中断和异常处理 外部中断、软件中断和异常是通过中断描述符表IDT处理的如图2-1所示。IDT包含一组门描述符提供对中断和异常处理程序的访问。像GDT一样IDT不是一个片段。IDT基址的线性地址包含在IDT寄存器IDTR中。
【原文】The gate descriptors in the IDT can be of the interrupt-, trap-, or task-gate type. To access an interrupt or exception handler, the processor must first receive an interrupt vector (Interrupt number) from internal hardware, an external interrupt controller, or from software by means of an INT, INTO, INT 3, or BOUND instruction. The interrupt vector provides an index into the IDT to a gate descriptor. If the selected gate descriptor is an interrupt gate or a trap gate, the associated handler procedure is accessed in a manner very similar to calling a procedure through a call gate. If the descriptor is a task gate, the handler is accessed through a task switch.
【翻译】IDT中的门描述符可以是中断门、陷阱门或任务门类型。为了访问中断或异常处理程序处理器必须首先从内部硬件、外部中断控制器或通过INT、INTO、INT 3或BOUND指令从软件接收一个中断向量中断号。中断向量提供IDT到门描述符的索引。如果选择的门描述符是中断门或陷阱门则以与通过调用门调用过程非常相似的方式访问相关的处理程序过程。如果描述符是任务门则通过任务切换来访问处理程序。
【讲评】在这里谈到了中断向量的问题。我担心翻译文字没有说明白所以再来梳理一下。中断向量号可以通过内部硬件或者外部中断控制器来获得。如果某一个中断属于是硬件中断且为可屏蔽中断并且它连接到了可编程中断控制器 8259A上那么传递到处理器的中断向量号则是8259A给出。如果是硬件中断且为非屏蔽中断那么它的中断固定地就是2号且不是通过8259A等等的外部中断控制器传递进来。像是除0错误无效的TSS等均是通过内部硬件传递中断向量号的。
软件中断这个呢就是通过汇编指令程序员主动发起的中断。在Linux里面int 0x80可以发起系统调用。系统调用就是软中断。学习8086汇编是在学习王爽老师的教材时里面有BIOS中断有DOS中断这些个中断都是通过【int n】指令发起的这都是软件中断都是程序员主动发起的。【int n】里面n是一个整数是中断向量号。
手册里面还有提到了【into】【int3】【bound】等等的指令这些指令也能发起软件中断。不过以我目前的学习经验来讲这三个东西我还没有用到过。
至于【int n】这个东西我倒是用过。因为在学习编写主引导山区的引导记录程序时会用到BIOS中断。
想要更多地了解中断与异常处理程序一个方法就是你去学习流行的教你写内核的教材。我所知道的有郑刚的《操作系统真象还原》李忠的《x86汇编语言从实模式到保护模式》。你也可以去学习赵炯的《Linux内核完全剖析基于0.12内核》。
然后呢关于这个中断和异常处理的知识你还真得是把学习英特尔手册放在重要的位置上。这是因为我所说的那几个教材它在讲到中断和异常处理程序的时候它把概念讲得比较混乱说不清道不明一个人说的一个样。为了搞清楚这个概念你还真的是需要再英特尔开发手册上获得权威的知识。
我之前学习这些个流行的内核教材的时候有一个地方流行的入门内核教材也是给讲得很乱那就是线性地址虚拟地址逻辑地址的概念。这个概念也是英特尔开发手册里面给出的说明比较权威一些。
当然了手册的话也不能完全靠它。因为有的时候手册上给出的讲解方式也会令人疑惑。学习的时候多方参照认真求证应该是一个比较好的态度与方法。