如何查看linux x86和x64

如何查看linux x86和x64,第1张

1、切换到root用户,su - root,如下图。

2、getconf LONG_BIT

通过命令getconf LONG_BIT获取系统位数,返回32就表示是32位,返回64就表示是64位,如下图。

3、uname -a

通过命令uname -a获取系统位数,返回ixxx的全是32位的,有X86_64的全是64位,如下图。

4、file /sbin/init或file /bin/ls

通过命令file /sbin/init或file /bin/ls获取系统位数,有32-bit的是32为的,有64-bit的是64位的,如下图。

Linux *** 作系统中x64和x86的区别如下:

一、寄存器分配的不同

64位有16个寄存器,32位只有8个,32位前8个都有不同的命名,分别是e_,而64位前8个使用r代替e,即r_

32位使用栈帧来作为传递的参数的保存位置,而64位使用寄存器,分别用rdi、rsi、rdx、rcx、r8、r9作为第1-6个参数,rax作为返回值

64位没有栈帧的指针,32位用ebp作为栈帧指针,64位取消了这个设定,rbp作为通用寄存器使用

二、函数调用的不同

x_64的参数通过寄存器传递,callq在栈里存放一个8位的返回地址

许多函数不再有栈帧,只有无法将所有本地变量放在寄存器里的才会在栈上分配空间

一些寄存器被设计成为被调用者-存储的寄存器,这些必须在需要改变他们值的时候存储他们并且之后恢复他们。

三、参数传递的不同

6个寄存器用来传递参数

剩下的寄存器按照之前的方式传递(不过是与rsp相关了,ebp不再作为栈帧指针,并且从rsp开始第7个参数,rsp+8开始第8个,以此类推)

调用时,rsp向下移动8位(存入返回地址),寄存器参数无影响,第7个及之后的参数现在则是从rsp+8开始第7个,rsp+16开始第8个,以此类推

四、栈帧的不同

很多情况下不再需要栈帧,比如在没有调用别的函数,且寄存器足以存储参数,那么就只需要存储返回地址即可,需要栈帧的情况:

a. 本地变量太多,寄存器不够

b. 一些本地变量是数组或结构体

c. 函数使用了取地址 *** 作符来计算一个本地变量的地址

d. 函数必须用栈传送一些参数给另外一个函数

e. 函数需要保存一些由被调用者存储的寄存器的状态(以便于恢复)

五、运算速度的不同

64位cpu的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据,比32位提高了一倍,理论上性能会相应提升1倍。

发行版中的i386/i686/x86-64的区别:

i386用来处理32位系统,i686是i386的下集;x86-64用来处理64位系统。

linux发行版中的i386/i686/x86-64各自含义:

1、i386通常被用来作为对Intel(英特尔)32位微处理器的统称;

2、i386的子集包含i686,i686适用于Pentium  Pro,也适用于K7架构的Athlon;

3、x86-64,又称“AMD64”或“x64”,是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发。

扩展资料:

Linux *** 作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX  *** 作系统、MINIX  *** 作系统、GNU计划、POSIX 标准和Internet 网络。

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、 *** 作系统、进程等等对于 *** 作系统内核而言,都被视为拥有各自特性或类型的文件。

至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

Linux是一款免费的 *** 作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的 *** 作系统所做不到的。

正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

参考资料:百度百科-linux


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7406838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存