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

X86和X64的区别

一、简介

X86:32位系统,是指操作系统一次性可以处理的位数是32。x86指的是一种cpu的架构,x86架构的特点是cpu的寄存器是32位的。

X64:也可写作X86-64,64位系统,指操作系统一次性可以处理的位数是64。x64架构的特点是cpu的寄存器是64位的。

 

二、数据类型长度

不同位数OS下的变量类型的长度如下:

32位平台

char         1个字节8位

short        2个字节16位

int            4个字节32位

long         4个字节

long long 8个字节

指针         4个字节

64位平台

char         1个字节

short        2个字节

int            4个字节

long         8个字节(区别)

long long 8个字节

指针        8个字节(区别)

 

三、寄存器

32位系统的寄存器如下:

 

64位系统的寄存器如下:

在64位模式下,有16个64位宽通用寄存器(32位模式是8个通用寄存器),默认的操作数宽度是32位(注:与32位模式相同)。但是,通用寄存器保存32位或64位的操作数。如果指定了32位操作数,则可以使用EAX/EBX/ECX/EDX/EBP/ESP/ESI/EDI和新增的R8D~R15D(注:这里D表示Doubledord,32比特宽)。

如果是64位的操作数,则可以使用RAX/RBX/RCX/RDX/RBP/RSP/RSI/RDI和新增的R8~R15。所有的这些寄存器都可以按字节/单字/双字/四字/八字为单位访问。REX指令前缀用来生成64位的操作数,或者用于访问寄存器R8~R15。

当从64位模式切换到兼容模式,再返回到64位模式后,仅存在于64位模式下的寄存器(R8~R15和XMM8~XMM15)中的值会保持不变。但是如果从64位模式切换到兼容模式,再切换到传统模式(注:即32位保护模式或SMM模式)或实模式,最后通过兼容模式返回到64位模式后,R8~R15和XMM8~XMM15寄存器中的值是未定义的(undefined)。
 

区别有:

  1. 64位有16个寄存器,32位只有8个。但是32位前8个都有不同的命名,分别是e _ ,而64位前8个使用了r代替e,也就是r _。e开头的寄存器命名依然可以直接运用于相应寄存器的低32位。而剩下的寄存器名则是从r8 - r15,其低位分别用d,w,b指定长度。
  2. 32位使用栈帧来作为传递的参数的保存位置,而64位使用寄存器,分别用rdi,rsi,rdx,rcx,r8,r9作为第1-6个参数。rax作为返回值
  3. 64位没有栈帧的指针,32位用ebp作为栈帧指针,64位取消了这个设定,rbp作为通用寄存器使用
  4. 64位支持一些形式的以PC相关的寻址,而32位只有在jmp的时候才会用到这种寻址方式。
http://www.lryc.cn/news/2419661.html

相关文章:

  • tex中enumitem 宏包对itemize环境的调整
  • 内存学习(二):物理地址空间虚拟地址空间布局
  • Android ContentResolver的使用
  • Android 简单定位----Google Location Service的使用
  • Matlab中function函数的使用
  • 文件操作函数(C语言)!
  • tinyxml在linux和windows下的编译及使用详解
  • PowerManager简介
  • Flutter Ink,InkWell,InkResponse水波纹实现(2.3)
  • fiddler4使用方法以及相关抓包分析
  • 【同花顺函数汇总】
  • Parse error: syntax error, unexpected ''解决办法
  • 软件设计文档如何编写,设计文档内容都包括什么
  • Tribon二次开发-逆向
  • Oracle GoldenGate(OGG)- 超级详细,五步搞定Golang开发环境部署
  • Chromium 历史版本离线安装包 - 下载方法
  • SharpDevelop源码分析笔记(一)
  • readonly和disabled的作用?区别?别翻了,这有精细汇总齐的秘籍!
  • 交互设计的视觉设计:如何创造吸引人的视觉效果
  • sdcard-dma
  • python爬虫最简单入门
  • 条件编译指令的用法总结
  • 手把手教你如何在Linux上安装Deb软件包 (linux 安装 deb)
  • MessageBox.Show 用法介绍
  • GeoGebra
  • 计算机网络中的NET与应用中的.NET
  • TOMCAT的配置(整理)
  • C语言小游戏--贪吃蛇(完整代码)
  • html入门:网页字体的设置
  • 【Bilibili直播源】浏览器抓取真实直播源地址(纯前端JS PHP解析源码)