x86-64的长模式下,对16位以及32位代码进行了兼容,即使CPU上跑的是64位的操作系统,历史遗留的16位以及32位代码将都能够在该操作系统上运行。由于x86-64兼容IA32的指令,所以,这些代码在这种情况下运行,基本上没有性能损耗。 在传统模式(Legacy mode)下,x86-64的CPU的工作模式跟传统的IA32没有什么两样。
64位的X86处理器有16个通用寄存器RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP and R8-R15。对于应用来说太少了,所以需要存储数据到栈中。 栈的另一个用途是,调用函数时候,地址通过压栈,当函数执行结束后可以返回地址,在原先地方继续执行。 函数调用 例如: global _start section .text _start: mov rax, 1...
1、i386通常被用来作为对Intel(英特尔)32位微处理器的统称;2、i386的子集包含i686,i686适用于Pentium Pro,也适用于K7架构的Athlon;3、x86-64,又称“AMD64”或“x64”,是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发。
%rdx【参数】六个寄存器用于存储函数调用时的6个参数 %rcx【参数】六个寄存器用于存储函数调用时的6个参数 %r8【参数】六个寄存器用于存储函数调用时的6个参数 %r9【参数】六个寄存器用于存储函数调用时的6个参数 x86-64 寄存器内容.png ©著作权归作者所有,转载或内容合作请联系作者...
一x86、x86_64、AMD64 x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为“IA-32” x84_64是x86 CPU开始迈向64位的时候,有2选择:1、向下兼容x86。2、完全重新设计指令集,不兼容x86。AMD抢跑了...
X86-64是复杂指令集CISC的代表。 3.1 寄存器和数据类型 X86-64具有16个通用目的64位寄存器: 说它们是通用寄存器是不完全正确的,因为早期的CPU设计寄存器是专用的,不是所有的指令都能用到每一个寄存器。从名称上就可以看出来,前八个寄存器的作用,比如rax就是一个累加器。
二、x86-64与x64、AMD64等 “x86-64”,有时会简称为“x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品。“x64”最先由AMD设计,推出时被称为“AMD64”,其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过Clackamas Technology (CT)、IA-32e及EM64T。外界多使...
Arch命令:直接输出架构方式。aarch64 就是 ARM 架构,x86_64 就是 X86 架构 arch uname -a 命令:输出中有关键词 aarch64 就是 ARM 架构,有关键词 x86_64 就是 X86 架构 uname lscpu:查看CPU信息,其中Architecture就是指架构 lscpu 在docker中,x86_64是以AMD64显示,说明它们都是指一个架构 ...
3)最主要的是没有足够的信息被编码,只能恢复堆栈寄存器 前面章节提到,这种栈帧结构,在x86_64中被抛弃。gcc 在64位编译器中默认不使用rbp保存栈帧地址,即不再保存上一个栈帧地址,因此在x86_64中也就无法使用这种栈回溯方式(不过可以使用-fno-omit-frame-pointer选项保存栈帧rbp)。
iamlaosong评:虽然rpm包版本很多,不过目前的新机器都可以使用x86_64版本,而且也应该使用这个版本,除非一些特殊场合,比如为了使用一些老版程序。有些功能没有x86_64版本,那也只好用i386了。现在的发行包,一般也就提供i386和x86_64两个版本,即32位版本和64位版本,有些甚至已经不提供i386版本了。