当前位置: 首页 > news >正文

档案网站建设文献综述vps正常网站打不开

档案网站建设文献综述,vps正常网站打不开,中国建设银行的官方网址,网站加速cdncpu中本来是没有实模式这一称呼的#xff0c;是因为有了保护模式后#xff0c;为了将老的模式区别开来#xff0c;所以称老的模式为实模式。这情况就像所有同学坐在同一个教室里#xff0c;本来没有老同学这一概念#xff0c;但某天老师领着一个陌生人进入教室并和大家宣布…cpu中本来是没有实模式这一称呼的是因为有了保护模式后为了将老的模式区别开来所以称老的模式为实模式。这情况就像所有同学坐在同一个教室里本来没有老同学这一概念但某天老师领着一个陌生人进入教室并和大家宣布“这是新转到我们班的韩梅梅大家欢迎新同学”。得无形之中大伙儿就成了老同学。 实模式的“实”体现在程序中用到的地址都是真实的物理地址“段基址段内偏移”产生的逻辑地址就是物理地址也就是程序员看到的完全是真实的内存。 不过要说实模式咱们还得从cpu的发展说起任何事物发展到今天都是有一段“合理”的过程了解这一过程是怎么来的有助于理解它今天的形态。 不知道各位同学当初学习汇编语言时有没有这样疑问“老师都是拿8086型号的cpu举例为什么不拿最新型号的呢用那么古老的cpu讲解知识是否已经落伍太久了我们学习的知识到社会上能用吗”我记得当初学习汇编时那时的cpu都是奔腾2.8了。我带着这样的疑问请教了老师老师回答我说“8086是intel历史上第一个x86的cpu也就是自那以后的cpu称为286、386、486、586…即使是现在的奔腾也是属于x86体系道理是不变的而且用最简单的8086 cpu学习这才更容易理解和看透cpu运行机制。”一番话彻底打消了我的疑虑自那以后我才理解x86中的x原来是个变量^_^它是指代intel所有86系列的产品。 在8086之前的cpu是什么样呢为什么8086就可以称为cpu界的里程碑呢原因是这样的在它之前的cpu前辈们对内存的访问比8086还要“实诚”它们没有段的概念程序中要访问内存需要把地址写死也就是所谓的“硬编码”这其实很麻烦的首先程序无法重定位必须加载到内存中固定的位置如果在此位置有其它程序在用得您先睡会等它运行完成后我叫您。您看得等人家运行完了腾出内存后才轮得到自己可见程序对地址的依赖性之强。当可用内存很多但却因为某一个字节的内存被占用而让后来的程序等很久这是很平常的事。有些开发人员等不及了干脆把程序中的地址改成别的吧重新编译后发现还是有某个地址被占用还是没法上cpu运行怎么办再改地址…所以我估计那时的开发人员脾气都会很差这人脾气差就容易伤肝肝火一旺就会两鬓斑白所以IT工程师还是很值得体恤的。 看着越来越多的程序员两鬓斑白intel早期的工程师难以承受内心的自责不顾自己的满头白发熬了无数通宵之后终于发明了“段”即cpu访问内存用“段偏移”的形式。这就是前面曾经讲解过访问内存用“段基址段内偏移地址”的策略它就是首次在8086上出现的。自那之后的cpu都是用这类思想访问内存只是在形式上有所小改动难怪8086如此极富盛名了。为了支持段机制cpu中新增了段寄存器如cs、ds、es等。 8086的地址总线是20位宽也就是其寻址范围是2的20次方1M。但其内部寄存器都是16位的若用单一寄存器来寻址的话只能访问到2的16次方等于64K的空间。 由于地址线位宽和寄存器位宽是没有必然联系的所以大家不要觉得为什么寄存器不是20位的这样通过寄存器寻址就能访问到1M空间了显得多“配套”。 如8086的多种寻址方式中有一种是基址寻址这是用基址寄存器bx或bp来提供偏移地址。如mov [bx], 0x5;这条指令便是将立即数0x5存入ds:bx指向的内存。 大家看bx寄存器是16位的它最大只能表示0xFFFF的地址也就是单一的一个寄存器无法表示20位的地址空间1M。也许有人会说段基址和段内偏移地址都搞到最大都为0xFFFF。对不起方案不成立首先说会溢出结果是0xFFFE地址不增反小了个1。即使不溢出的话其结果也只是由16位变成了17位即两个n位的数字无论多大其相加的结果也超不过n1位道理很简单即使两个数都是n位能表示的最大数两个相同的数相加相当于乘以2也就是数值上等于左移一位而已。依然无法访问20位的地址空间。也许有同学又有好建议了cpu的寻址方式又不是仅仅这一种上面的限制是因为寄存器是16位只要不全部通过寄存器寻址不就行了吗。段寄存器也是寄存器同样也是16位既然它必须得用那就在偏移地址上下功夫不要把偏移地址写在寄存器里了把它直接写成20位立即数不就行啦。如mov ax, [0x12345]这样最终的地址是ds0x12345肯定是20位解决啦。不错这种是直接寻址方式至少道理上讲得通这是通过编程技巧来突破这一瓶颈能想到这一点我觉得非常nice。但是做为一个严谨的cpu既然宣称支持通过寄存器来寻址那就要能够自圆其说才行不能靠程序员的软实力来克服cpu自身的缺陷。于是一个大胆的想法出现了。 为了让16位的寄存器寻址能够访问20位的地址空间注意啦亲我这里一直说的是通过寄存器寻址因为只有通过16位的寄存器去寻址才会受到16位的限制cpu工程师定位到根本瓶颈是在段寄存器它要是能提供20位的段地址哪怕偏移地址是1也照样可以访问到内存的各个角落。于是通过先把16位的段基址左移4位后变成20位再加段内偏移地址这样便形成了20位地址只要保证了段基址是20位的偏移地址是多少位都不关心了从而突破了16位寄存器做为偏移地址而无法访问1M空间的限制。 有了20位地址便能访问到20位的空间虽然解决了一个大问题但是引入了一个小问题。还拿0xFFFF来说现在能访问的最大的地址是0xFFFF:0xFFFF经过左移段基址4位后得到的最大地址是0xFFFF*160xFFFF0xFFFF00xFFFF0xFFFFF0xFFF01M16*4k-16-10x10FFEF。这公式有点晕是吗其实最后结果是0x10FFEF是最重要的前面的推算就是想告诉大家按照新方法获取地址可以得到的最大地址是1M64K-16字节因为这是空间范围所以要减去1得到地址范围。 大家看到了当初费了好大周折才搞定了能够访问20位地址空间现在反而有点过了过头的原因是段基址为0xFFFF0偏移地址应该小于等于F就对啦而这个偏移地址却是0xFFFF超出了0xFFF0的空间也就是多出来的64K-16字节这部分内存就是传说中的高端内存区HMA(High Memory Area)。可是这部分内存不存在怎么处理呢。 答案说出来吓你一跳不用处理哈哈。您想8086一共就20条地址地址线是从0开始的即A0~A19所以其地址空间才是1M的啊。内存地址0xFFFFF是要用到A20地址线可是8086它没有啊只能接收20位长的地址。所以由于超过了20位而产生的进位就给丢掉了。其作用相当于把地址对1M取模了。举例如0xFFFFF2理论上是变成了0x100001。但由于只能容纳20位长的数据所以最终结果是0x00001。这是地址回卷的效果即超过最大范围后从0重新开始计数。回卷英文称为wrap-around示意如图 这就引出了从实模式到保护模式要打开A20地址线的问题不过这部分在讲保护模式时咱们再说。兄弟们下次再来玩儿哟。
http://www.pierceye.com/news/435556/

相关文章:

  • 网站开发要做什么在线网页转pdf
  • 购物网站开发教程中文如何调整wordpress页面的顺序
  • 网站网页设计制作教程成都外贸seo
  • 网站开发的资料设备英国搜索引擎
  • 什么样企业需要网站建设网络规划毕业设计
  • 广东制作公司网站和谐校园网站建设
  • 找潍坊做网站的h5用什么软件做的
  • 南宁网站推广费用0505网页制作与网站建设
  • 2345电视剧网站免费电子营业执照
  • 河北省沧州建设厅网站怎样保存网站资料 做证据
  • 网站同时做竞价和优化可以吗做网站游戏推广赚钱吗
  • 台州建站模板搭建上海远程教育网站设计与开发公司
  • 网站如何做淘客类似58同城分类信息网站开发
  • 网站源码文件安装教程苏州网站建设致宇
  • 免费注册域名网站知乎做网站做图电脑需要什么配置
  • 高埗做网站营销策略分析包括哪些内容
  • wordpress获取站点链接网站门户
  • flashxml网站模板网站后期培训机构全国排名
  • 企业网站设计网站页面设计中为什么要有优先级排列
  • 暗网是什么网站滨江区网站开发公司
  • 南京网站排名优化费用株洲58同城网站建设电话
  • 电子商务网站建设与管理理解上海网站推广企业
  • 设计师网站pintsetseo短视频网页入口引流免费
  • 个人如何注册微信公众号怎么创建网站优化的意义
  • 网站换空间要重新备案吗百度人工电话
  • 做网站要注意哪些问题网站用什么工具做
  • 在福州的网站制作公司滨海新网站建设
  • 帝国网站地图插件泰兴企业网站建设
  • wordpress布置网站教程用dw做简单图片网站
  • 网页制作模板左右结构百度seo关键词优化方案