百科狗-知识改变命运!
--

X86和X64有什么区别

梵高1年前 (2023-12-05)阅读数 19#综合百科
文章标签寄存器参数

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位的返回地址;

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

X86和X64有什么区别

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

三、参数传递的不同

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倍。

讴歌rdx是什么样的引擎?讴歌rdx使用的是2.0T发动机。这辆车合起来推出了动力机型。动力方面,该车搭载的2.0T发动机最大功率为195kw,最大扭矩为380牛米,与同级车相比,该发动机的动力表现症状非常出色。这辆车的车身重量在1.7吨左右,这样的动力与这辆车相比能够充分表现出来。由于发动机使用涡轮增压的增压方式,车辆运行速度提高时涡轮会介入,可以更好地提高这辆车的动力。该发动机最大扭矩在3000转时开始出力,1600转时可以发挥370米的扭矩,使该车行驶更加轻松。在车辆行驶过程中,整个发动机的症状也非常直线,在整个行驶过程中,该发动机的症状会被自然吸收。在调整发动机方面,该动力系统不是为直线加速而产生的,多为车辆的操纵性服务。那么,主编今天就介绍了这么多。通过阅读主编的说明,您应该了解了rdx使用的是什么引擎。最后,主编希望这些内容对您有帮助,感谢您的支持。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)