由GDTR计算GDT的一些相关值

读张银奎老师的《软件调试》一书,其中一节讲保护模式中分段机制,举了一个例子,用WinDBG观察GDTR和LDTR值,并由此得出一些结论,实例如下:

kd> r gdtr

gdtr=8003f00

kd> r idtr

idtr=8003f400

kd>r gdtl

gdtl=000003ff

kd>r idtl

idtl=000007ff

 

结论是:GDT的边界是1023,总长度是1024字节,共有128个表项

       IDT的表长度是2048字节,共有256项

 

我们来看看是怎么计算得来,首先是GDT边界为gdtl=00003ff(H)=1023(D),总长度即0-1023,则为1024字节,也即为1K,这个没问题,我算的来。

 

一共有128个表项。为什么会有128项呢?怎么计算的呢?怎么想来想不明白。我就用1024÷128=8.我知道2的3次是8,关键这8从哪来的呢?代表什么意思,好难呀,想不明白。

百思不得其姐,错,是解,没折了就在那乱翻书,突然翻到段描述通用格式那节才想起来,其结构是64位,也即8个字节,这个8 是8 个字节,这样这个128表项就自然来了。

IDT的7ff(H)即是2047,从0开始共讲2048字节,也即2K,除以8,刚好256个表项。

 

读书最大的乐趣就在于“为伊消得人憔悴”后的“那人却在灯火阑珊处。”

 

 

时间: 2024-07-28 20:26:04

由GDTR计算GDT的一些相关值的相关文章

图形 曲线-画曲线图,需要画出圆滑的曲线并且可以在曲线上滑动显示某个点的相关值

问题描述 画曲线图,需要画出圆滑的曲线并且可以在曲线上滑动显示某个点的相关值 我想要做的效果,如下图 请问这种效果有没有第3方库可以做啊,或者自己画的话该怎么做~~菜鸟一枚,只能画出一个折线图效果,不知道该怎么画平滑的曲线,并且添加滑动效果,求做过的大神帮忙啊! 解决方案 什么平台没有说,是 web 么?这种曲线有很多库可以实现. http://www.cnblogs.com/lhb25/p/35-javascript-chart-and-graph-libraries.html 总有一个你喜欢

安装VSTO文件时,提示为文件dll计算出的哈希值与清单中的指定值不同

问题描述 用VS2010生成的VSTO文件,安装时提示错误:为文件Word.UI.dll计算出的哈希值与清单中的指定值不同.项目也没有使用clickonce发布,详细提示如下:System.Deployment.Application.InvalidDeploymentException:为文件Word.UI.dll计算出的哈希值与清单中的指定值不同.在Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeplo

设计-VB6.0计算整数排序的相关问题

问题描述 VB6.0计算整数排序的相关问题 设计一个如图所示的程序.单击"随机产生10个整数"菜单时,随机产生10个整数并显示在列表框List1中:单击"排序"菜单时,将产生的10个随机数按从大到小的顺序显示在列表框List2中. 解决方案 第一个按钮: for i = 1 to 10 list1.add int(rnd * 100) '产生0~100的随机数 next 第二个按钮: for i = 1 to 10 list2.add list1.list(i) n

delphi编程计算数据库某字段的值

在数据库中,有时需要做汇总工作,那么就要对某个字段的所有记录进行求和,我们使用如下代码: 先定义一个全局变量i,再加入Table1的OnCalcFields事件,那么就得出了数据库中"金额"字段的合计值 var i:double;{$R *.DFM} procedure TForm1.Table1CalcFields(dataset: Tdataset);varGoodsgold:double;beginGoodsgold:=table1.fieldbyname(金额).asfloat

用PHP编程计算中序表达式的值

编程 过程: 用class 模拟链表实现堆栈 .:p 完整测试程序地址: http://test.hightman.net/stack/stack_05.php 在表单里可输入: (3+5)/2 之类的表达试,支持 ()+-/*以下为全部代码 <?php/* =================== Program Description ==================== *//* Written by MingLian Mar. (hightman)                   

spark reducebykey计算多个value的值?如图

问题描述 解决方案 解决方案二:引用楼主Yt_Sports的回复:reducebykey只能是key-value的形式,你这里是三元tuple了,你可以先处理一行之后再reducebykey解决方案三:JavaPairRDD<String,String>rdd1=lines.mapToPair(newPairFunction<String,String,String>(){@OverridepublicTuple2<String,String>call(Stringar

C#如何实现像Git那样计算Hash值

从Git Tip of the Week: Objects一文中得知,Git是这样计算提交内容的Hash值的: Hash算法用的是SHA1 计算前,会在内容前面添加"blob 内容长度\0",\0表示的是空字符(NUL). 计算出来的Hash值是40位16进制序列(40-character hexadecimal sequence). 比如提交一个空文件,Git计算出来的Hash值是e69de29bb2d1d6434b8b29ae775ad8c2e48c5391,实际计算的内容是&qu

如何给MD5加上salt随机盐值_相关技巧

如何加点盐(salt)? 为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母.数字.字符,位数可以根据要求而不一样,使用不同的加盐值产生的最终密文是不一样的:      1).首先我们得到的是明文的hash值      2).进行计算获取MD5明文hash值      3).随机生成加盐值并插入      4).MD5插入加盐值得到的hash      5).得到最终的密文 看一个简单的加salt函数: /** * MD5加SALT函数

php计算多维数组中所有值总和的方法_php技巧

本文实例讲述了php计算多维数组中所有值总和的方法.分享给大家供大家参考.具体实现方法如下: php 内置函数 array_sum() 函数返回数组中所有值的总和,只能返回一维数组的总和: 计算多维数组所有值的和就要自定义函数了: function get_sum($array) { $num = 0; foreach($array as $k => $v) { if(is_array($v)) { $num += get_sum($v); } } return $num + array_sum