首页 > 编程语言 >【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-2

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-2

时间:2024-10-27 18:21:28浏览次数:7  
标签:保护模式 GDT 32 手册 2001 LDT IA segment 选择器

文件下载与邀请翻译者

学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。

讲解下载英特尔开发手册的文章

翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么,欢迎你的加入。

另外,我不仅仅是打算翻译这一种手册,以后,可能还需要去翻译许多的英文技术文档,以支持系统底层的教学,培养系统底层程序员。

我有钱了以后,应该是会出私钱来请人翻译一批英文技术文档。当前,暂时没钱,若是有志愿加入的,欢迎啊。

本节翻译

【原文】2.1.1. Global and Local Descriptor Tables
When operating in protected mode, all memory accesses pass through either the global descriptor table (GDT) or the (optional) local descriptor table (LDT), shown in Figure 2-1. These tables contain entries called segment descriptors. A segment descriptor provides the base address of a segment and access rights, type, and usage information. Each segment descriptor has a segment selector associated with it. The segment selector provides an index into the GDT or LDT (to its associated segment descriptor), a global/local flag (that determines whether the segment selector points to the GDT or the LDT), and access rights information. 
To access a byte in a segment, both a segment selector and an offset must be supplied. The segment selector provides access to the segment descriptor for the segment (in the GDT or LDT). From the segment descriptor, the processor obtains the base address of the segment in the linear address space. The offset then provides the location of the byte relative to the base address. This mechanism can be used to access any valid code, data, or stack segment in the GDT or LDT, provided the segment is accessible from the current privilege level (CPL) at which the processor is operating. (The CPL is defined as the protection level of the currently executing code segment.)

【翻译】2.1.1. 全局和局部描述符表
在保护模式运行时,所有内存访问通过全局描述符表(GDT)或(可选)局部描述符表(LDT),如图2 - 1所示。这些表包含称为段描述符的条目。段描述符提供段的基址和访问权限、类型和使用信息。每个段描述符都有一个与之关联的段选择器。段选择器提供GDT或LDT的索引(指向其关联的段描述符)、一个全局/本地标志(决定段选择器是指向GDT还是指向LDT)和访问权限信息。
要访问段中的字节,必须同时提供段选择器和偏移量。段选择器提供对段描述符的访问(在GDT或LDT中)。从段描述符中,处理器在线性地址空间中获得段的基址。然后,偏移量提供了相对于基址的字节偏移位置。此机制可用于访问GDT或LDT中的任何有效代码、数据或堆栈段,前提是可以从处理器运行的当前特权级别(CPL)访问该段。(CPL被定义为当前执行的代码段的保护级别。)

【讲评】上述内容,谈到了段选择器与偏移量的问题。在16位的8086汇编里面,我们给定段地址和偏移地址,则我们要访问的内存位置,便是【(段地址 << 4) + (16位偏移地址)】。而在32位保护模式里面,也是用【段寄存器:偏移地址】的方式来定位某一个内存地址的。只不过,在32位保护里面,段寄存器里面的值,不再叫做段地址,而是叫做段选择器。段选择器里面,包含着索引值,也包含着指示GDT还是LDT的标志位。假定,根据段选择器的内容,它指示,要从GDT中来检测某一个段描述符,且索引为3。假定,GDT中的3号描述符指示,段的基地址为0x3000_0000。再来假定,我们给偏移地址设定的值为0xA000,那么,最终,我们要访问的地址,便是0x3000_A000。

我这里,给出来了一点关于保护模式下之下,分段寻址的示例。然而,我不确定你能看懂。

为了更好地理解保护模式的知识,我还是建议去学习专门的教材。比如,李忠的《X86汇编语言,从实模式到保护模式》,赵炯先生的《Linux内核完全剖析,基于0.12内核》,郑刚先生的《操作系统真象还原》。

有的东西,看教材会好一些,有的东西,看手册会获得更为详细,专业与权威的知识。偏听偏信哪个都不好。

在计算机领域,一般地,老外的教材会比国内的教材写得更好。然而,并不排除说,在局部的地方,老外的东西写得不好,而国人的教材却用比较简单的方式,把知识给讲明白了。

对于保护模式的知识,我还是推荐你,有空的话,去买教材来看。另外,李忠先生的《X86汇编语言 ,从实模式到保护模式》也有对应的视频教程。有空的话,你可以自己去搜,你也可以问我。

保护模式的知识,这算是英特尔开发手册第3卷的一个重要的内容。我本人便是在学习了保护模式以后,并且沉淀了一段时间以后,才来尝试着学习与翻译英特尔开发手册的。

有兴趣学习保护模式,有兴趣一起来学习Linux内核的话,你可以联系我。虽然目前,我的Linux内核的水平,也谈不上多高,但是,我们还是可以一起学习的。另外,如果你在Linux内核方面,还完全是菜鸟的水平,或许我还可以帮你一点忙。我写作这一段文字的时间,为2024年10月22日。

本节,我又将图2-1的内容贴了一遍。对于这个图,需要你自己将其下载下来,放大以后来查看。如果还是看不清楚,那么,我建议你将原版的英特尔开发手册第3卷的PDF文件给下载下来,然后呢,在原版的文件中,放大图片,来查看细节。

【原文】In Figure 2-1 the solid arrows indicate a linear address, the dashed lines indicate a Segment selector, and the dotted arrows indicate a physical address. For simplicity, many of the Segment selectors are shown as direct pointers to a segment. However, the actual path from a Segment selector to its associated segment is always through the GDT or LDT.
The linear address of the base of the GDT is contained in the GDT register (GDTR); the linear address of the LDT is contained in the LDT register (LDTR).

【翻译】在图2-1中,实线表示线性地址,虚线(dashed)表示段选择器,虚线(dotted)表示物理地址。为简单起见,许多段选择器显示为指向段的直接指针。然而,从段选择器到其关联段的实际路径总是通过GDT或LDT。
GDT基址的线性地址包含在GDT寄存器(GDTR)中;LDT的线性地址包含在LDT寄存器(LDTR)中。

【讲评】dashed line和dotted line都表示虚线。实际上,这是两种不同的线。文档中,无论是我这里的翻译文档,还是原版的英特尔开发手册,它给出的图2-1里面的内容,都区分不出【dashed line】与【dotted line】的区别。尽管在图例中,可以看出一点两者的区别。然而,在实际的图示里,依然是看不出二者的区别

关于【dashed line】与【dotted line】,还是微软的Windows API教材与MFC教材给出的区分是较为明确的。我将这几种线条的截图贴在下面,大家可以体会一下。

几种线条的形状

在上图里面,一画两点的这个线条,大家还需要放大以后,再去看。

结束语

关于保护模式的知识,还需要大家找专门的教材来学习。我这里比较推荐的,是李忠先生的《X86汇编语言,从实模式到保护模式》和赵炯先生的《Linux内核完全剖析(基于0.12内核)》。

另外,在学习这种系统级知识的时候,我建议大家,对于微软的Windows系统,与基于Linux内核的 Linux 发行版操作系统,都能够给予尊重。

标签:保护模式,GDT,32,手册,2001,LDT,IA,segment,选择器
From: https://blog.csdn.net/2401_82825368/article/details/143168223

相关文章

  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-3
    文件下载与邀请翻译者学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。讲解下载英特尔开发手册的文章翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么,欢迎你的加入。另外,我不仅仅是打算翻译这一种手册,......
  • 如何进行基础设施即代码(IAC)?
    基础设施即代码(IAC)是一种管理和配置IT基础设施的实践,主要遵循以下五个步骤:1.确立IAC的价值和理念;2.选择合适的工具和平台;3.编写和维护高质量的基础设施代码;4.实施持续集成和持续部署流程;5.进行持续的监控和反馈。从最初的设想到实施,我们都需要注意基础设施即代码的核心概念。......
  • 神经网络中的偏置(bias)究竟有什么用
    神经网络中的偏置(bias)起着至关重要的作用,主要体现在以下几个方面:一、提高模型的表达力;二、增加模型的灵活性;三、保证激活函数工作在非线性区域;四、防止模型过拟合。神经网络的偏置参数可以增加模型的表达力。简单地说,偏置可以看作是一个模型可以调整的“阈值”。一、提高模型......
  • 2024-2025-1(20241321)《计算机基础与程序设计》第五周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<了解并学习AI功能,回顾一周课程心得>作业正文...本博客链接https://www.cnblogs.com/guchua......
  • ESP32 使用 MAX98357 调用ESP-A2DP库播放蓝牙音乐
    ESP32-A2DP 库github链接:https://github.com/pschatzmann/ESP32-A2DP 硬件:ESP32+MAX989357+喇叭代码:(注意将其中的I2S引脚定义为自己的MAX98357相连接的引脚)最佳实践:在VSCode的PlatformIO的Library,查找ESP32-A2DP,然后将其安装进工程中。 #include"ESP_I2S.h"......
  • 【STM32+HAL库】使用通用定时器生成的PWM实现呼吸灯效果
    板子:STM32F103C8仿真软件:Proteus8软件平台:cubemx+keil1新建STM32CubeMX工程1.1配置系统时钟RCC  1.2配置定时器这里用的PB3和PA15一对在TIM2中,时钟源选择内部时钟InternalClock,通道1选择PWM输出PWMGenerationCH1通道2选择PWM输出PWMGenerationCH2 ......
  • 第46篇 1.net学习avalonia开发-安装环境
    1.安装avaloniaUI模版1.1cmd进入控制台,执行:dotnetnewinstallAvalonia.Templates2.安装AvaloniaUI可视化设计工具扩展-管理扩展(手动下载地址:https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS)然后关闭所有已经打开的vs进程后,自动安装点击M......
  • 2024-2025-1 20241320 《计算机基础与程序设计》第5周学习总结
    2024-2025-120241320《计算机基础与程序设计》第5周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05|这个作业的目标|Pep/9虚拟机•机器语言与汇编语......
  • 【保姆级IDF】ESP32最强WIFI模式:AP+STA,实现数据中继站
    Tips:抛砖引玉,本文记录ESP32学习过程中遇到的收获。如有不对的地方,欢迎指正。目录1.前言2.实现功能3.代码思路4.代码讲解4.1AP_STA模式下的其他设备接入以及接入其他设备的WIFI配置4.2自身作为AP和STA模式下的不同套接字的创建及配置4.3WIFI事件中被调用的接受......
  • Windows 10上编译FFmpeg以支持NVIDIA GPU加速
    目录一、引言二、使用NVDIA加速的准备工作三、编译FFmpeg四、使用FFmpeg五、常见问题及解决方案六、总结一、引言        FFmpeg是一个强大的多媒体处理工具,它支持音频、视频和流媒体的录制、转换和流式传输。NVIDIAGPU提供了强大的计算能力,通过CUDA和NVENC......