我找不到任何定义调用者和被调用者如何处理 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.
..."