您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:88 来源:未知

本文章共6244字,分5页,当前第4页,快速翻页:
 
 但是,在任务切换时,处理器并不把换出任务但是的寄存器CR3和LDTR的内容保存到TSS中的地址映射寄存器区域。事实上,处理器也从来不向该区域自动写入。因此,如果程序改变了LDTR或CR3,那么必须把新值人为地保存到TSS中的地址映射寄存器区域相应字段中。可以通过别名技术实现此功能。

4.链接字段

 链接字段安排在TSS内偏移0开始的双字中,其高16位未用。在起链接作用时,地16位保存前一任务的TSS描述符的选择子。
 如果当前的任务由段间调用指令CALL或中断/异常而激活,那么链接字段保存被挂起任务的 TSS的选择子,并且标志寄存器EFLAGS中的NT位被置1,使链接字段有效。在返回时,由于NT标志位为1,返回指令RET或中断返回指令IRET将使得控制沿链接字段所指恢复到链上的前一个任务。

5.其它字段

 为了实现输入/输出保护,要使用I/O许可位图。任务使用的I/O许可位图也存放在TSS中,作为TSS的扩展部分。在TSS内偏移66H处的字用于存放I/O许可位图在TSS内的偏移(从TSS开头开始计算)。关于I/O许可位图的作用,以后的文章中将会详细介绍。
 在TSS内偏移64H处的字是为任务提供的特别属性。在80386中,只定义了一种属性,即调试陷阱。该属性是字的最低位,用T表示。该字的其它位置被保留,必须被置为0。在发生任务切换时,如果进入任务的T位为1,那么在任务切换完成之后,新任务的第一条指令执行之前产生调试陷阱。

6.用结构类型定义TSS

 根据上图给出的任务状态段TSS的结构,可定义如下的TSS结构类型:
;----------------------------------------------------------------------------

;任务状态段结构类型定义

;----------------------------------------------------------------------------

TSS             STRUC



TRLink          DW      0      ;链接字段

                DW      0      ;不使用,置为0

TRESP0          DD      0      ;0级堆栈指针



TRSS0           DW      0      ;0级堆栈段寄存器

                DW      0      ;不使用,置为0

TRESP1          DD      0      ;1级堆栈指针



TRSS1           DW      0      ;1级堆栈段寄存器

                DW      0      ;不使用,置为0

TRESP2          DD      0      ;2级堆栈指针



TRSS2           DW      0      ;2级堆栈段寄存器

                DW      0      ;不使用,置为0

TRCR3           DD      0      ;CR3



TREIP           DD      0      ;EIP

TREFlag         DD      0      ;EFLAGS

TREAX           DD      0      ;EAX



TRECX           DD      0      ;ECX

TREDX           DD      0      ;EDX

TREBX           DD      0      ;EBX



TRESP           DD      0      ;ESP

TREBP           DD      0      ;EBP

TRESI           DD      0      ;ESI



TREDI           DD      0      ;EDI

TRES            DW      0      ;ES

                DW      0      ;不使用,置为0



TRCS            DW      0      ;CS

                DW      0      ;不使用,置为0

TRSS            DW      0      ;SS



                DW      0      ;不使用,置为0

TRDS            DW      0      ;DS

                DW      0      ;不使用,置为0



TRFS            DW      0      ;FS

                DW      0      ;不使用,置为0

TRGS            DW      0      ;GS



                DW      0      ;不使用,置为0

TRLDTR          DW      0      ;LDTR

                DW      0      ;不使用,置为0



TRTrip          DW      0      ;调试陷阱标志(只用位0)

TRIOMap
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 5 - 下一页>>
相关文章

程式语言效率分析(1)
学习更多关于“绘制”文本串的知识
给程序加个图标
MASM的反反汇编技术
进一步学习对话框
驻留exe文件
如何建立汇编工作环境
汇编与C语言配合
动态链接库
masm中宏指令的bug
只能在保护模式下执行的指令
系统托盘中的快捷图标
DEBUG命令详解
仿FDISK及PQMAGIC列出分区逻辑盘符的prw.as
保护方式简介
实模式和任何特权级下可执行的指令
汇编语言的高级语言特性
关于div/idiv/mul/imul指令的用法
建立自己的动态链接库
超类化

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31