线性地址和物理地址

简介: Intel架构下凡是在代码中书写的内存地址都是逻辑地址, 也就是采用基地址:偏移量, 我们能够直接看到的也是逻辑地址, 通过左移等操作可以计算出对应的物理地址(在实模式下逻辑地址与物理地址没有中间层所以是可以的, 但是在保护模式则是行不通的, 再说)实模式下逻辑地址通过左移等操作可以计算...

Intel架构下

  • 凡是在代码中书写的内存地址都是逻辑地址, 也就是采用基地址:偏移量, 我们能够直接看到的也是逻辑地址, 通过左移等操作可以计算出对应的物理地址(在实模式下逻辑地址与物理地址没有中间层所以是可以的, 但是在保护模式则是行不通的, 再说)

实模式下

  • 逻辑地址通过左移等操作可以计算出对应的物理地址

保护模式

  • 在逻辑地址和物理地址之间多了一个中间层线性地址
  • 逻辑地址左移等操作计算出来的是线性地址而不再是物理地址了, 线性地址就是32位的整数
  • 通过分页机制将线性地址转为32位的物理地址

在Intel保护模式下32位为了兼容老式机强制要求分段机制, 但是在其他硬件平台则只是支持了分页机制

  • Linux为了可以解决硬件平台的不兼容, 巧妙的绕过了Intel的分段机制, 那就是将所有的基地址为0x00000000, 偏移量为4GB的范围
  • IA-32还规定需要为代码段和数据段创建不同的段, 注意: 段地址和基地址不同, 基地址是保存在CPU的寄存器中的, 而段地址就是一个Label而已, 同时Intel的CPU有0和3两个特权, 这两个级别的代码段和数据段是不能共用的, 所以要为两个级别创建不同的代码段和数据段

在Intel64位下去掉了段机制, 直接使用线性地址(32位整数)访问内存地址

  • 这样我们就可以理解下面的代码了

; 在保护模式下32位(还是采用段机制访问内存)
; 初始化临时的要进入到IA-32e模式的GDT数据结构
LABEL\_GDT64:    dq 0x0000000000000000
LABEL\_DESC\_CODE64:    dq     0x0020980000000000
LABEL\_DESC\_DATA64:    dq      0x0000920000000000

GdtLen64       equ    $ - LABEL\_GDT64
GdtPtr64        dw     GdtLen64 - 1
                     dd      LABEL\_GDT64

; 我们知道GdtPtr64中的值是要加载到gdtr寄存器中的, 而gdtr中的4b保存的地址, 这里我们发现地址时就是一个线性地址而不是0x00000:004114等等
目录
相关文章
|
存储 人工智能 NoSQL
【AI系统】LLVM IR 详解
本文深入探讨了LLVM IR(中间表示)的概念,解释了其在编译器中的重要性和作用。LLVM IR作为一种抽象程度适中的中间语言,不仅涵盖了源代码的大部分信息,还支持编译器进行灵活的代码优化。文章进一步解析了LLVM IR的三地址码表示及其优点,并通过具体示例展示了LLVM IR的设计原则和内存模型,帮助读者更好地理解编译器内部的工作机制。
542 5
|
数据采集 监控 数据可视化
BI工具在数据分析和业务洞察中的应用
BI工具在数据分析和业务洞察中的应用
486 11
|
存储 算法 Java
算法系列之数据结构-二叉树
树是一种重要的非线性数据结构,广泛应用于各种算法和应用中。本文介绍了树的基本概念、常见类型(如二叉树、满二叉树、完全二叉树、平衡二叉树、B树等)及其在Java中的实现。通过递归方法实现了二叉树的前序、中序、后序和层次遍历,并展示了具体的代码示例和运行结果。掌握树结构有助于提高编程能力,优化算法设计。
398 10
 算法系列之数据结构-二叉树
|
12月前
|
JavaScript UED 开发者
《ArkTS开发必学:打造丝滑交互的融合技巧》
ArkTS是一种基于声明式UI开发范式的现代应用开发语言,通过简洁直观的代码构建用户界面。其核心在于将事件驱动逻辑与声明式UI无缝融合,从而提升应用交互性和用户体验。开发者可通过绑定事件处理函数实现用户操作响应,利用状态管理机制确保数据更新时UI自动同步,并结合动画效果优化交互体验。此外,合理管理事件流和响应式编程特性,可进一步增强应用的流畅性和功能性。掌握这些关键要点,能充分释放ArkTS潜力,打造高质量应用。
224 0
|
SQL XML Java
八、(了解即可)MyBatis懒加载(或者叫延迟加载)
八、(了解即可)MyBatis懒加载(或者叫延迟加载)
401 1
|
文字识别 自然语言处理 API
如何结合NLP(自然语言处理)技术提升OCR系统的语义理解和上下文感知能力?
通过结合NLP技术,提升OCR系统的语义理解和上下文感知能力。方法包括集成NLP模块、文本预处理、语义特征提取、上下文推理及引入领域知识库。代码示例展示了如何使用Tesseract进行OCR识别,并通过BERT模型进行语义理解和纠错,最终提高文本识别的准确性。相关API如医疗电子发票验真、车险保单识别等可进一步增强应用效果。
1012 4
|
运维 监控 安全
Landing Zone一站式上云框架场景和实践
本文将介绍阿里云Landing Zone的方案、应用场景及新功能。Landing Zone是云上安全可控、可扩展的架构,涵盖资源规划、财务管理、身份权限、合规审计、网络规划、安全防护、运维管理和自动化模块八大方面,帮助企业敏捷创新并满足IT治理需求。具体应用包括零售行业的多品牌管理、生命科学的数据交换、自动驾驶的合规监管和金融行业的严格合规要求。新功能则聚焦于财年上线的统一管控产品,如配额管理、Prometheus监控和网络IPAM方案,以及降低跨账号安全门槛。
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
数据采集 前端开发 开发者
Selenium中如何实现翻页功能
在使用Python的Selenium库进行网页爬虫开发时,翻页操作是常见需求。本文详细介绍如何通过Selenium实现翻页,包括定位翻页控件、执行翻页动作以及等待页面加载等关键步骤,并提供了基于“下一页”按钮和输入页码两种方式的具体示例代码。此外,还特别提醒开发者注意页面加载完全、动态内容加载及反爬机制等问题,确保爬虫稳定高效运行。
1558 3
|
网络协议 安全 前端开发
QUIC 和 TCP:了解为何 QUIC 是未来的网络协议
在过去的三十年里,HTTP(超文本传输协议)一直是互联网的支柱。我们可以通过 HTTP 浏览网页、下载文件、流式传输电影等。这一协议随着时间的推移已经得到了重大改进。