segment descriptors 构建保护模式下的最基本、最根本的执行环境。system descriptors 则构建保护模式下的核心组件:1、TSS descriptor 提供硬件级的进程切换机制 2、LDT descriptor 供进程使用多个 descriptor 3、Gate des...
分类:
其他好文 时间:
2015-02-02 17:55:23
阅读次数:
197
1、gate descriptor 的 selector 给出目标代码的 code segment descriptor2、由目标代码 code segment descriptor 的 base address 得出代码的 base3、这个 base 加上 gate descriptor 的 of...
分类:
其他好文 时间:
2015-02-02 17:54:37
阅读次数:
155
interrupt 与 trap gate 格式是一样的,只是 descriptor type 不一样而已。与 x86 的 interrupt / trap gate 的所不同的是:base 扩展为 64 位、额外增加了 IST 域。前面提过,由于 interrupt / trap gate 只能放...
分类:
其他好文 时间:
2015-01-31 11:56:38
阅读次数:
167
段内的调用/跳转的特性:不改变 CS,也就是不用重新加载 code segment descriptor,当然也就不需要进行权限的检查,但是这里需要做 segment 的 limit 检查,检测到越 segment limit 会产生 #GP 异常。由于在段时调用,所以使用 call offset ...
分类:
其他好文 时间:
2015-01-31 11:54:48
阅读次数:
170
基于 stack 的访问都将引发 stack 访问控制检查,对于 stack 的访问控制比一般的 data segment 访问检查要严格。用简单的式子表达为:if (RPL == DPL && CPL = DPL) { /* 通过检查,允许访问,加载 descriptor 进入 SS */ }.....
分类:
其他好文 时间:
2015-01-31 11:53:41
阅读次数:
169
直接调用/跳转的形式是: call / jmp selector:offset 这里的 selector 是 code segment selector 直接使用 selector 来索引 code segment,这将引发 CS 的改变,code segment descriptor 最终会被.....
分类:
其他好文 时间:
2015-01-31 11:51:12
阅读次数:
184
6.1.4、long mode 下的 call gate6.1.4.1、 64 位的 call gate descriptor 中已经不支持 parameter count 域,offset 域被扩展至 64 位 base 值。 情景提示:64 位的 call gate descriptor ...
分类:
其他好文 时间:
2015-01-31 11:50:09
阅读次数:
205
或者说特性吧,没仔细看protobuf代码,也许我还理解不够。按照陈硕大牛的这篇帖子的介绍,“它包含了程序编译的时候所链接的全部 protobuf Message types”实际开发过程中发现必须手动调用一下T::descriptor()以后,才会将其类型信息注册到DescriptorPool里面...
分类:
其他好文 时间:
2015-01-31 00:07:18
阅读次数:
162
1、 32 位的 system descriptor 与 64 位的 system descriptor(1)compatibility 模式下,LDT / TSS descriptor 还是原来的 32 位的 descriptor,与原来 x86 的 LDT / TSS 意义一致。 (2)64 b...
分类:
其他好文 时间:
2015-01-29 19:21:44
阅读次数:
100
IDT(Interrupt Descriptor Table)仅能存放 interrupt-gate、trap-gate 和 task-gate。指令: int 0x80 ----------------------------------- 0x80 是 vector (中断向量号) ...
分类:
其他好文 时间:
2015-01-29 19:17:54
阅读次数:
145