免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1703 | 回复: 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个非易失寄存器我已经嫌多了,正在考虑裸奔方案呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

ITPUB技术栈

ITPUB技术栈是ITPUB企业打造的垂直于IT领域的知识社群平台,在这里,你既可以是创作者也可以是消费者。如果你的IT生涯丰富多彩,喷薄的个人价值尽可在小栈内体现;如果你渴望找到志同道合的伙伴,拓宽人脉,小栈比跑会场更快。 小栈特色:
1.极高的用户转化率,实现更直接的知识变现;
2.随时随地,刷个朋友圈的时间,实现更长效的信息沉淀;
3.戳痛、难点的专业咨询,更接近成功解决方案的时刻;
4.贴近意见领袖,个人高速成长,迈入更富有价值的人际圈。

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

技术小栈>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP