Selector Descriptor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selector Descriptor相关的知识,希望对你有一定的参考价值。


操作系统进行段式寻址时,将seg:offset形式的逻辑地址转换成线性地址。
例如

jmp dword SelectorCode32:0 

 

 

SelectorCode32是段选择子,它指向GDT/LDT表中的一个表项,GDT/LDT中的每个表项中有所指向的代码或数据的段地址

[SECTION .gdt]
;GDT FOUND
;

LABEL_GDT: Descriptor 0,0,0;
LABEL_DESC_CODE32: Descriptor 0, SegCode32Len -1, DA_C + DA_32;
LABEL_DESC_VIDEO: Descriptor 0B8000h, 0ffffh, DA_DRW;

GdtLen equ $-LABEL_GDT ; length of GDT
GdtPtr dw GdtLen-1
dd 0

;GDT selector
SelectorCode32 equ LABEL_DESC_CODE32 - LABEL_GDT
SelectorVideo equ LABEL_DESC_VIDEO - LABEL_GDT

;end of [SECTION . gdt]

 

%macro Descriptor 3
dw %2 & 0FFFFh
dw %1 & 0FFFFh
db (%1 >> 16) & 0FFH
dw ((%2 >> 8) & 0F00H) | (%3 & 0F0FFh)
db (%1 >> 24) & 0FFH
%endmacro

 

在上面的代码中,初始化了GDT表和选择子。选择子的值是表项的偏移量。GDT中的表项指向一个数据结构,其中包含有段基址,段界限和其他的属性。

以上是关于Selector Descriptor的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——CSS选择器

python描述符 descriptor

AndroidStudio 编译原生代码显示“fcntl(): Bad file descriptor”

python学习笔记-类的descriptor

Python描述符(descriptor)解密(转)