保护模式下的编程<四>

原创 2004年05月19日 22:28:00

                          保护模式下的编程<四>

        这段代码,我们可以用前面的图来表示.要用LDT,我们需要用到mov       ax,gdtseg ,lldt    ax这两个命令是把全局描述表送入局部描述表寄存器.在执行完这两个命令后,我就可以使用

局部描述符中的描述表中的各个段了.呵呵.

下面这段代码演示了任务内特权级的变换,在这个程序中我演示了怎样通过调用门和RETF实现任务内特权级的变换。每一个特权级都有自己对应的堆栈。在我的这个程序中我使用了0级和3级,在不通的特权级的变换中,我使用了堆栈来实现变换的。首先建立0级的堆栈,然后将3级堆栈的指针压入这个0级堆栈。理论上还要将3级段使用的参数压入0级堆栈。这样便于0级的函数直接调用这些参数,但是我的这个程序没有这样做,因为该程序没有参数可以压入。然后使用retf使得CS指向vcode_sel描述符所描述的段,eip指向编译vstart,这样段的转移就实现了。

接着用写屏技术将我想显示的东西显示出来,就使用调用门来实现从0级回到3级。我将介绍调用门。

门也是描述符的一种。他的结构如下:

                                                 gate struc

offsetl dw 0 32位偏移的低16

selector dw  0 ;选择子

dcount db  0      ;双字计算字段

gtype db   0      ;类型

offseth dw  0       32位偏移的高16

gate ends

tovbuf gate  <tojump,codek_sel,0,at386cgate+dpl3,0>,tojump表示32位偏移的低16位,最后的032位偏移的高16位,codek_sel是目标的选择子,就是目标段的描述符。门的DPL描述了能够访问该段的最外层的段。可以利用段间调用指令CALL,通过调用门可实现任务内从外层特权变换到内层特权级。

    由于文件加代码很长,所以代码请看保护模式编程五

linux内核 80x86保护模式及其编程

这一章涉及intel8086系列cpu的保护模式编程,应该是学习内核编程,驱动编程及嵌入式编程一些基础知识。不过对于没接触过底层编程的我来说,感觉还是好复杂。   不过里面也有许多以前汇编学过的东西...
  • yishuige
  • yishuige
  • 2015年12月30日 15:06
  • 880

保护模式下的内存访问

保护模式下的内存访问模式、方法,而这个保护模式下的内存访问模式在实模式与保护模式已经介绍过是什么,这次来具体点看...
  • name_z
  • name_z
  • 2015年08月09日 16:33
  • 782

保护模式下的编程<一>

                                         保护模式下的编程一>       本文介绍如何在保护模式下编程.虽然这种技术在现在的环境中很难用到,但是如果你想写操作...
  • ywchen2000
  • ywchen2000
  • 2004年04月07日 14:16
  • 1793

保护模式编程——保护的详尽意义:通过调用门转移特权级

保护模式及其编程——保护机制 摘要:在汇编语言的编程和操作系统的编写过程中,我们经常能听说到“保护模式”这个名词。为什么要叫“保护模式”呢?保护 二字的含义何在?本文主要探讨,“保护模式”下面各种具体...
  • trochiluses
  • trochiluses
  • 2014年02月20日 22:14
  • 2992

保护模式下的逻辑地址,线性地址,物理地址

IA32保护模式中,逻辑地址=16位段选择子:32位偏移地址,具体的值应该是指令经过编译/汇编产生的,如果是应用编程的话,编译/汇编只产生偏移地址,段选择子的值由系统分配。在寻址时,16位段选择子位于...
  • matwat
  • matwat
  • 2009年02月22日 22:08
  • 1799

保护模式下的段寄存器值转化为线性地址过程

关键字: 段寄存器、段选择子、全局描述符表、局部描述符表、段描述符、线性地址;     保护模式下使用段机制的CS,SS,DS,ESt,FS,GS保存的并不是实模式下的段地址,而是一个包含了段选择...
  • eagleatustb
  • eagleatustb
  • 2013年07月23日 14:55
  • 2433

实模式及保护模式下的地址转换

本文转自http://blog.csdn.net/wukaiyu/article/details/1766804在此向作者表示感谢。 一。x86实模式介绍 x86体系的处理器刚开始时只有20根地址...
  • hncomputer
  • hncomputer
  • 2011年12月05日 18:29
  • 1832

【学习】【保护模式编程、四】

【LDT描述符&&特权级&&门】一、LDT(局部描述符)GDT是全局描述符,是整个系统的描述符,描述符着所有的段!!!在前几章我们已经熟悉了GDT的一些基本功能,与运作机制。对GDT描述符的定义与使用...
  • zhusongdong
  • zhusongdong
  • 2009年12月27日 15:16
  • 631

我看保护模式

保护模式,对于学过操作系统的人来说,是一个熟悉而又陌生的概念。之所以熟悉,就是所有的操作系统的书籍都会说到保护模式;之所以陌生,我敢说很多人学完了之后,压根不晓得什么是保护模式,怎么算是保护模式,再者...
  • xiao_0429
  • xiao_0429
  • 2015年08月02日 16:01
  • 3991

一个操作系统的实现(2)-认识保护模式

今天开始学习intel处理器的保护模式。书的第二章 这节讲述的是如何从实模式进入保护模式。用的例子是在保护模式下向屏幕上输出字符P 如何进入保护模式呢?主要步骤如下: 0. 进入保护模式的步骤...
  • u010197364
  • u010197364
  • 2016年05月14日 23:54
  • 10287
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:保护模式下的编程<四>
举报原因:
原因补充:

(最多只允许输入30个字)