我找不到任何文件定义调用者和被调用者如何处理YMM寄存器。
为了聚焦我的问题,这是我想知道的内容:
1.在返回给调用者之前,调用者必须恢复哪些YMM寄存器?
2.由于Linux和Windows中的XMM寄存器存在差异,我认为YMM寄存器也不遵循相同的规则。每个操作系统的规则是什么?
编辑:感谢下面的答案,我能够在Win64的文档中找到答案。我非常确定Linux遵循类似的规则。
为了聚焦我的问题,这是我想知道的内容:
1.在返回给调用者之前,调用者必须恢复哪些YMM寄存器?
2.由于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.
..."