免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1733 | 回复: 3

[其他] 看了下MSDN的WIN64 ABI资料。。。 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2013-03-19 15:40 |显示全部楼层
在AMD64 SYS V ABI中
非易失通用寄存器仅仅有RBX、RSP、RBP、R12、R13、R14、R15这7个,额外考虑R10的话,总计8个
也就是说,被调用者仅仅需要8 x 8 = 64字节内存备份非易失通用寄存器,就能够使用全部16个通用寄存器
不备份通用寄存器的话,被调用者内至少也有8个通用寄存器(不含R10,含R10就是9个)可用
16个XMM寄存器都是可自由使用的易失寄存器
调用者毋须备份/恢复通用寄存器,只有被调用者需要考虑保留非易失寄存器内容的问题

WIN64则不然,非易失寄存器是如此之多,不进行备份/恢复的话,仅有下列寄存器可自由使用
通用寄存器5个:RAX、RCX、RDX、R8、R9
XMM寄存器4个:XMM0、XMM1、XMM2、XMM3
其它寄存器使用,有调用者保留的,也有被调用者保留的

还是UNIX自由啊

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
发表于 2013-03-19 16:04 |显示全部楼层

そうか。了解了

论坛徽章:
0
发表于 2013-03-19 22:14 |显示全部楼层

uinx/linux 粉总是想找出那么一点自以为是的优点,来满足虚荣心

寄存器的保存显然的双刃利
如果,callee 无需保存和恢复更多的寄存器,那么函数内满足可用要求的寄存器也会减少:

mov rbx, XXXX                   ; rbx 作为 context 内容

call Func                            ; 如果 Func 内修改了 rbx 寄存器,Func 也不保存/恢复的话

mov XXX, rbx                     ;  还不是不能满足 rbx 的可用

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2013-03-20 12:02 |显示全部楼层
城市小鸭 发表于 2013-03-19 22:14
uinx/linux 粉总是想找出那么一点自以为是的优点,来满足虚荣心

寄存器的保存显然的双刃利


易失寄存器越多,caller/callee的麻烦就越少,怎么会减少可用寄存器数量呢?
SYS V约定使用8个非易失寄存器我已经嫌多了,正在考虑裸奔方案呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP