加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – AVX寄存器如何通过公共调用约定处理?

发布时间:2020-12-14 02:27:47 所属栏目:Windows 来源:网络整理
导读:我找不到任何定义调用者和被调用者如何处理YMM寄存器的文档. 为了集中我的问题,这是我想知道的: 在返回呼叫者之前,被叫方必须恢复哪些YMM寄存器? 由于Linux和Windows中的XMM寄存器存在差异,我假设YMM寄存器也遵循相同的规则.每个操作系统的规则是什么? 编
我找不到任何定义调用者和被调用者如何处理YMM寄存器的文档.

为了集中我的问题,这是我想知道的:

>在返回呼叫者之前,被叫方必须恢复哪些YMM寄存器?
>由于Linux和Windows中的XMM寄存器存在差异,我假设YMM寄存器也遵循相同的规则.每个操作系统的规则是什么?

编辑:
感谢下面的回答,我能够在Win64的上述文档中找到答案.我很确定Linux遵循类似的规则:

"...
The YMM registers do not have callee-save status,except for the lower half
of YMM6-YMM15 in 64-bit Windows,where XMM6-XMM15 have callee-save status.
Possible future extensions of the vector registers to 512 bits or more will not have calleesave
status.
..."

解决方法

你的两个问题的答案(假设你在谈论用C语言调用约定)是由Agner Fog在伟大的 optimization guide中:

Calling conventions for different C++ compilers and operating systems.

请参见第10页的第6节(寄存器用法).另请参见第22页的7.2(传递和返回SIMD类型).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读