最新要闻
- 今日热讯:央视315晚会曝光直播间苦情戏:“儿子”们专骗老人、1.2元“神药”卖9.9元
- 全球滚动:任天堂:Switch 2将给玩家新惊喜和新玩法
- 即时看!央视3·15曝光:水军操盘直播间诱导跟风下单 一台手机操控2万个
- 热门:512GB售价8999元:雷克沙发布新款CFexpress Type-B存储卡
- 今日热闻!459元 腾达发布首款面板AP:10秒下载一部电影
- 2023央视3·15晚会第一曝 “泰国香米”竟是香精勾兑!渉事公司食品许可证已失效
- 全球快消息!hdr和sdr区别_hdr
- 快消息!SteamDeck升级OLED屏无望:V社称难度比预想中更高
- 焦点播报:俄式风味!秋林格瓦斯:12瓶到手24元 0脂低糖
- 微星推出G2712电竞显示器:170Hz高刷、1ms响应
- 全球消息!“史诗级产品”!GPT-4来了:看图玩梗考律师 能力超90%人类
- 世界消息!偷工减料!南京蜜雪冰城频繁改标签过期继续用 被责令整改
- 网易云音乐会员不再支持车机版 车上听歌要加钱
- 天天滚动:U20国足队长出局后一夜没睡:裁判对中国队不公
- 焦点观察:中国土豪花109万元购买《CS:GO》AK47野荷皮肤 网友吐槽太丑
- 长安深蓝SL03行驶中自燃 车尾冒出明火和浓烟
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
5.9 GDT与IDT的初始化(harib02i)
5.9 GDT与IDT的初始化(harib02i)
CPU用8字节来表示一个段的1.段的大小2.段的起始地址3.段的管理属性(禁止写入,禁止执行,系统专用)信息,但8字节(64位)远大于段寄存器(16位),故用段寄存器来存储段号,由于16位中的低三位不能用,故只有0~8191的区域,即8192个段,8192*8=68836字节(64kb),64kb的数据CPU无法储存,故存储在内存中,这64kb的数据即为GDT(global(segment) descriptor table)全局段号记录表,而为了使用GDT方便,便将GDT的首地址和有效设定个数存入GDTR(global(segment) descriptor table register)特殊寄存器中
- GDT:global(segment) descriptor table全局段号记录表
段寄存器:16位
IDT:interrupt descriptor table 中断记录表IDT记录了0~255的中断号码与调用函数的对应关系,其设定方法与GDT相似(也许是因为使用同样方法可以简化CPU电路)
(资料图片)
注意:设定IDT(interrupt descriptor table)最好先于设定GDT(global(segment) descriptor table),否则会比较麻烦
/*SEGMENT_DESCRIPTOR与GATE_DESCRIPTOR一样,均是以CPU的资料为基础,写成结构体的形式*/struct SEGMENT_DESCRIPTOR {//8字节=2*2字节+2*1字节+2*1字节short limit_low, base_low;//short类型占两字节char base_mid, access_right;char limit_high, base_high;};struct GATE_DESCRIPTOR {//8字节=2*2字节+2*1字节+1*2字节short offset_low, selector;//short类型占两字节char dw_count, access_right;short offset_high;};
void init_gdtidt(void){ /*表明要使用内存0x00270000~0x0027ffff的65535B设为GDT,原因是这一块内存未被使用*/struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) 0x00270000; /*表明要使用0x0026f800~0x00270000的2048B设为IDT,这也应证了“有256个中断号码,用8B表示每个中断对应的信息”*/struct GATE_DESCRIPTOR *idt = (struct GATE_DESCRIPTOR *) 0x0026f800;int i;/* global(segment) descriptor table 全局短号记录表*//* GDT初始化 */for (i = 0; i < 8192; i++) {/*此处要注意C语言进行指针的加法运算时,内部隐含着乘法运算*/set_segmdesc(gdt + i, 0, 0, 0);} /*设定,段号为1的段,上限值为0xffffffff(即大小正好是4GB),地址是0,它表示的是CPU所能管理的全部内存本身。段的属性设为0x4092,它的含义我们留待明天再说*/set_segmdesc(gdt + 1, 0xffffffff, 0x00000000, 0x4092); /*段号为2的段,它的大小是512KB,地址是0x280000。这正好是为bootpack.hrb而准备的。这个段可以执行bootpack.hrb。因为bootpack.hrb是以ORG 0为前提翻译成的机器语言。*/set_segmdesc(gdt + 2, 0x0007ffff, 0x00280000, 0x409a);load_gdtr(0xffff, 0x00270000);/*同下方的load_idtr(0x7ff, 0x0026f800);,C语言不能给GDTR赋值*//* interrupt descriptor table 中断记录表*//* IDT初始化 */for (i = 0; i < 256; i++) {set_gatedesc(idt + i, 0, 0, 0);}load_idtr(0x7ff, 0x0026f800);return;}
//上限(limit,指段的字节数-1),基址(base),访问权限void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar){if (limit > 0xfffff) {ar |= 0x8000; /* G_bit = 1 */limit /= 0x1000;}sd->limit_low = limit & 0xffff;sd->base_low = base & 0xffff;sd->base_mid = (base >> 16) & 0xff;sd->access_right = ar & 0xff;sd->limit_high = ((limit >> 16) & 0x0f) | ((ar >> 8) & 0xf0);sd->base_high = (base >> 24) & 0xff;return;}
void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar){gd->offset_low = offset & 0xffff;gd->selector = selector;gd->dw_count = (ar >> 8) & 0xff;gd->access_right = ar & 0xff;gd->offset_high = (offset >> 16) & 0xffff;return;}
此处将6.4中的内容提前到此处
_load_gdtr:; void load_gdtr(int limit, int addr);MOVAX,[ESP+4]; limitMOV[ESP+6],AXLGDT[ESP+6];将从地址[ESP+6]起的6字节数据赋值给GDTR寄存器RET
_load_gdtr函数的功能是将段上限(limit)和地址值赋值给名为GDTR(global(segment) descriptor table register)的48 位寄存器。注意:GDTR不能用正常的MOV指令进行赋值,只能使用LGDT指令
关于GDTR寄存器,其低16位(即内存的最初2个字节)是段上限(即GDT 的有效字节数 - 1),剩下的高32位, 代表GDT的开始地址。
经过上图的变换,即可完成写入GDT的任务。
注意:从ESP到ESP+3的四字节空间应该是被函数_load_gdtr的什么属性占据了,查明资料后补充
struct SEGMENT_DESCRIPTOR {//8字节=2*2字节+2*1字节+2*1字节short limit_low, base_low;//short类型占两字节char base_mid, access_right;char limit_high, base_high;};
结构体中base分为low(2字节),mid(1字节),high(1字节) 3段,合起来刚好是32位。分三段是为了与80286时代的程序兼容,这样80286用的操作系统,可以不用修改就在386以后的CPU上运行了。
//上限(limit,指段的字节数-1),基址(base),访问权限void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar){if (limit > 0xfffff) {ar |= 0x8000; /* G_bit = 1 */limit /= 0x1000;}sd->limit_low = limit & 0xffff;sd->base_low = base & 0xffff;sd->base_mid = (base >> 16) & 0xff;sd->access_right = ar & 0xff;sd->limit_high = ((limit >> 16) & 0x0f) | ((ar >> 8) & 0xf0);sd->base_high = (base >> 24) & 0xff;return;}
也正因为是三段,所以以上set_segmdesc函数中需要使用移位运算符和AND运算符来填入数据
由于段上限最大是4GB,即一个32位(4字节)数值,所以段大小占4字节,基址(base 起始地址)再占4字节,则段的管理属性没地方保存。若想保存段的管理属性,则段的大小只能使用20位,则可以使用的段上限缩小为1MB。故因特尔的解决办法是给段增加一个属性——Gbit,该标志位为1时,将limit的单位解释为页(4KB),1M*4KB=4GB,则不会产生浪费。因此20位的段上限写到limit_low(2字节)和limit_high(1字节)的低四位中,limit_high(1字节)的高四位写入段属性(还有一部分在access_right)。
access_right或ar的高4位(即limit_high(1字节)的高四位)被称为“扩展访问权”,因为它在80286时代不存在,386后才可以用。这四位由“GD00”构成,G为上文中的Gbit标志位,D为段的模式(1是指32位模式,0是指16位模式),这里的16位模式主要只用于运行 80286的程序,不能用于调用BIOS。所以,除了运行80286程序以外, 通常都使用D=1的模式。
access_right或ar的低4位在80286时代就已经有了,下面简单介绍以下
00000000(0x00):未使用的记录表(descriptor table)。10010010(0x92):系统专用,可读写的段。不可执行。10011010(0x9a):系统专用,可执行的段。可读不可写。11110010(0xf2):应用程序用,可读写的段。不可执行。11111010(0xfa):应用程序用,可执行的段。可读不可写。
32位模式下,CPU有系统模式(也称为“ring0”)和应用模式(也称为“ring3”)
举例:在应用模式下不允许执行LGDT指令(从指定的地址读取6个字节(48位),然后赋值给GDTR),一旦可以执行LGDT便可以修改GDTR,从而对GDT进行修改
struct SEGMENT_DESCRIPTOR {//8字节=2*2字节+2*1字节+2*1字节short limit_low, base_low;//short类型占两字节char base_mid, access_right;char limit_high, base_high;};
关键词:
5.9 GDT与IDT的初始化(harib02i)
环球快资讯:谈谈GPT-4模型的亮点
世界头条:ChatGPT对跟踪算法以及跟踪轨迹问题的解答
今日热讯:央视315晚会曝光直播间苦情戏:“儿子”们专骗老人、1.2元“神药”卖9.9元
全球滚动:任天堂:Switch 2将给玩家新惊喜和新玩法
即时看!央视3·15曝光:水军操盘直播间诱导跟风下单 一台手机操控2万个
day04-实现SpringBoot底层机制
焦点报道:有监督学习——支持向量机、朴素贝叶斯分类
当前动态:Windows 下 JNA 调用动态链接库 dll
Java并发小结02
【新视野】区块链技术入门教程 - Decert
热门:512GB售价8999元:雷克沙发布新款CFexpress Type-B存储卡
今日热闻!459元 腾达发布首款面板AP:10秒下载一部电影
2023央视3·15晚会第一曝 “泰国香米”竟是香精勾兑!渉事公司食品许可证已失效
快播:第130篇:BOM(window对象)
全球快消息!hdr和sdr区别_hdr
快消息!SteamDeck升级OLED屏无望:V社称难度比预想中更高
焦点播报:俄式风味!秋林格瓦斯:12瓶到手24元 0脂低糖
微星推出G2712电竞显示器:170Hz高刷、1ms响应
全球消息!“史诗级产品”!GPT-4来了:看图玩梗考律师 能力超90%人类
世界消息!偷工减料!南京蜜雪冰城频繁改标签过期继续用 被责令整改
环球速递!火山引擎数智平台 VeDI 帮助智能投影仪更懂用户需求
天天观察:【学习日志】Java基本数据类型的自动装箱和拆箱
焦点滚动:智能制造 | AIRIOT智慧工厂管理解决方案
看热讯:iOS转场之present与dismiss的使用
网易云音乐会员不再支持车机版 车上听歌要加钱
天天滚动:U20国足队长出局后一夜没睡:裁判对中国队不公
焦点观察:中国土豪花109万元购买《CS:GO》AK47野荷皮肤 网友吐槽太丑
长安深蓝SL03行驶中自燃 车尾冒出明火和浓烟
世界看热讯:上海网红餐厅火烧云吃出异物:店家称没吃出问题就算了
当前速读:Linux LVM磁盘分区管理
环球今头条!记录--前端实现电子签名(web、移动端)通用
新动态:GPT-4 重磅发布,用户直呼:强得离谱
【聚看点】Python处理Unicode字符时出现中文乱码的情况
世界今亮点!go开发入门篇之go语言
【世界速看料】充电慢犯法!iPhone 15若限制充电速度或违反欧盟法律
当前观点:词典笔迎来第三代!阿尔法蛋AI词典笔T20图赏
每日播报!旧车置换宝马新车?4S店销售“张伟”骗了13位车主200余万元
【世界播资讯】国内喝星巴克的人越来越少了引热议:至少30元/杯、国人消费理智、竞争加剧
焦点简讯:电影《红海行动2》今年开拍:前作票房超36亿 网友“自来水”安利
【全球快播报】10999元起 LG gram Style轻薄本开售:轻至999g
天天新动态:HTML/XML字符转义对照表
环球新消息丨易基因:高通量测序后的下游实验验证方法——ChIP-seq篇|干货系列
焦点观察:爬虫-requests
记一次运气非常好的服务器渗透经历
【环球快播报】Chrome高级调试技巧
《黑暗荣耀2》演员被查有无校园暴力 空姐名场面是CG
【世界报资讯】《暗黑破坏神4》终极版宣传片发布:花100美元提前4天玩 还送坐骑等
当前最新:六分钟泡出武汉热干面 原汁味道!大汉口速食热干面大促:2.5元/袋
全球热议:借车给朋友车祸致人死亡!车主被判担责三成
实现内屏自动开合!魅族新折叠屏手机专利公布
全球简讯:外网信息搜集
每日热门:这啥?竟能让羊毛党无能狂怒!|无感验证还不快来体验
全球快讯:02.SQL
通过随机数Random 和 redis的incr每次增加一的原子性来动态绑定队列
uniapp,常用工具函数
天天讯息:2023年3月15日商丘嘉盛纸业A级箱板纸价格下调
每日信息:扫码点餐索要手机号违法吗?消保委暗访奶茶店和快餐店
全球热讯:山航就中国俄航等调侃信息发声明:不认同不符合客观事实的内容
东方甄选被曝养殖虾当野生虾卖 官方回应:被供应商骗了
【世界快播报】三星回应Galaxy S23 Ultra拍月亮“造假”:未进行任何图像叠加处理
世界聚焦:不给友商留机会 GPT-4大量技术细节不再公开:安全更重要
天天观焦点:CentOS 7 安装 YApi
易基因:染色质免疫共沉淀测序(ChIP-seq)的数据挖掘思路 |干货系列
fabric使用
当前简讯:企业微信对接openai实现chatgpt3.5聊天机器人
焦点快报!濒死恒星演化成超新星前一幕被韦伯捕捉:壮观至极!
全球热议:OpenAI还在烧钱 但开发者已经利用GPT挣钱了:还是国产的
FIFA官宣2026世界杯改制:48队分为12个组 赛事总场次增至104场
环球即时:合肥发布新能源汽车消费补贴政策:最高补贴5000元
环球动态:真不用羡慕油车了!特斯拉V4超级充电桩落地:最高功率350kW
全球快资讯:VMware安装虚拟机时提示错误"Failed to install the hcmon driver."解决办法
环球即时看!C# || 批量翻译工具 || 百度翻译api || 读取.cs文件内容 || 正则表达式筛选文件
这是一篇纯讲SQL语句优化的文章!!!| 博学谷狂野架构师
消息!前端架构工作
【全球速看料】Linux进程通信 | 管道与FIFO
全球微速讯:智动力:目前暂未涉及6G通信网络相关领域
焦点速讯:你支持吗?快递不告而放或最高可罚3万 直接放菜鸟也不接受?
【天天速看料】哪吒汽车跟进90天保价 哪吒S 1160增程小版限时17.98万元
林依晨和郑元畅在一起过吗?林依晨和郑元畅参加的综艺节目叫什么?
泰坦尼克号是真实的故事吗?泰坦尼克号的男女主角叫什么?
前锋燃气灶质量怎么样?燃气灶十大品牌排行榜
iis是什么软件?iis在哪里打开?
aspx文件是什么?aspx文件怎么打开?
Prime95烤机教程
观点:成人崩溃就在一瞬间 外卖小哥酒后误上高速 电量跑光痛哭不止
全球今头条!生产环境触目惊心!汕头知名橄榄菜企业被连夜查处:线上平台火速下架
播报:全周期订单数突破35万!魅族20系列无界超前订圆满结束
湖南邵阳疑似挖出龙化石?当地回应:或为天然石头
世界视点!Model Y行驶中刹车变硬 车主:售后说是常态化事情
GPT-4上线:史上最强大多模态语言模型,堪称最强人工智能,目前OpenAI付费升级GPT-4平台已崩溃
观点:报复性消费来了:我国网上零售额月均破万亿元
16岁女孩将挑战珠峰 父亲众筹50万 回应来了:女儿想法
奔驰EQC刚买半年驱动电机就被烧毁 车主质疑4S店故意欺诈
环球新动态:电机品牌排行榜_电机品牌
环球速递!文盘Rust -- 安全连接 TiDB/Mysql
自从用了 EasyExcel,导入导出 Excel 更简单了!
浅谈var,let,const
今日最新!Maven学习笔记3:在idea中使用Maven
全球播报:玩家最喜欢的复古游戏TOP5:《俄罗斯方块》排第二