接触一点amd64
来源:互联网 发布:苹果软件下载排行 编辑:程序博客网 时间:2024/06/06 02:05
以前没接触过,看那篇patchGuard的文章之后翻了翻手册和wiki,整理的东西放上来
概述
一、寄存器
通用寄存器扩展到64位,通用寄存器数目由原有8个扩展到16个
• Sixteen 8-bit low-byte registers (A L,BL, CL, DL, SIL, DIL, BPL, SPL, R8B, R9B, R10B, R11B,
R12B, R13B, R14B, R15B).
• Four 8-bit high-byte registers (A H,BH, CH, DH), addressable only when no REX prefix is used.
• Sixteen 16-bit registers (AX, BX, CX,DX, DI, SI, BP, SP, R8W, R9W, R10W, R11W, R12W,
R13W, R14W, R15W).
• Sixteen 32-bit registers (EAX, EB X,ECX, EDX, EDI, ESI, EBP, ESP, R8D, R9D, R10D, R11D,
R12D, R13D, R14D, R15D).
• Sixteen 64-bit registers (RAX, RBX,RCX, RDX, RDI, RSI, RBP, RSP, R8, R9, R10, R11, R12,
R13, R14, R15).
rip可以用来寻址: mov,rax,qwordptr [rip+100]
具体情况就是这样了……
二、寻址模式
Long Mode (保护模式扩展,包括64位模式和x86兼用模式两种子模式,不支持实模式和虚拟8086模式,不支持硬任务切换)
-虚拟地址扩展到64位
- 64位的rip – 相对于x86的eip
- Instruction-pointer-relati ve data-addressing mode. – rip来做数据寻址基址?
- 依然是平坦地址空间
64-Bit Mode
寄存器增加、64位地址、rip相对寻址
Compatibility Mode
兼用模式,对于win32程序,一切如旧;对于系统而言,地址转译 中断 异常处理以及数据结构则是64位模式下的了。
Legacy Mode
让amd64运行在x86的模式下,也就是可以运行x86的系统
内存模型
一、内存组织
64位模式下是平坦模式,Compatibility mode下是分段的(当然x86 windows也没分段)
64位下是只支持平坦模式了
二、内存转译
64位模式下,没有用到64位寻址那么大的空间(2^64 = 16EB)。只有虚拟地址的最低48位才会在地址转换(页表查询)时被使用。但是,任何虚拟地址的48位至63位必须与47位一致(按照符号位扩展的方式),否则处理器将会报告一个general-protection 异常。符合这一规则的地址被称作“canonical address form”。传统格式将从0至00007FFF`FFFFFFFF,以及从FFFF8000`00000000至FFFFFFFF`FFFFFFFF总计256TB的地址范围作为可以使用的虚拟地址空间。
操作系统通常以此来划分ring0和ring3的界限。【1】
寻址方式上除了多出rip方式:Instruction-RelativeAddresses 以外,其他和以往一样。
关于内存分页,采用了4级寻址。
一口气搞懂amd64是不太现实。。。手册好长。。。
另:这哥们的书单不错,mark 有空看看 http://blog.csdn.net/cndvdc/article/details/5084747
参考:amd64手册,wiki,http://hi.baidu.com/andimeo/item/5978216aee06f236ad3e830b
【1】PatchGuard2利用了这个技巧向常规DPC历程中传递非法指针。这个指针不是canonical address,从而通过#GP异常将patchGuard请求捕获。
这个指针只能在非canonical address区 。否则会引发PAGEFAULT_IN_NONPAGED_AREA or IRQL_NOT_LESS_OR_EQUAL而直接BSOD。
- 接触一点amd64
- 初接触jquery easyui的一点认知
- 初次接触spark的一点理解
- 刚开始接触ios命令的一点总结
- 接触eclipse的一点心得,环境配置问题
- 关于对webrtc的初次亲密接触的一点感想!
- 接触
- AMD64 Architecture
- AMD64 Architecture
- 关于卡尔曼滤波KF与粒子滤波的一点理解,刚刚接触,求指点。
- debian amd64 安装 java
- Debian-amd64 安装全过程
- calling conventions:amd64
- AMD64 体系结构 学习笔记
- debian amd64安装linuxqq
- AMD64 and Intel EM64T
- 配置debian amd64
- X86 X64 AMD64 IA64
- FreeRTOS 源码注释(prvCheckTasksWaitingTermination)
- FreeRTOS 源码注释(prvIdleTask)
- android 开发 @override 编译错误 解决办法
- Win32Asm小程序案例之显示行号的记事本
- android写联系人信息的方法
- 接触一点amd64
- git实验之应用标签
- Android Bitmap 位图相关
- DAI:Digital Audio Interfaces(音频设备的硬件接口)
- 佳能全系列镜头简评与介绍--详细超过佳能镜头宝典(四)
- 佳能全系列镜头简评与介绍--详细超过佳能镜头宝典(三)
- 佳能全系列镜头简评与介绍--详细超过佳能镜头宝典(五)
- Eclipse中LogCat如何打开
- include_next directive