YMMレジスタが呼び出し元と呼び出し先によってどのように処理されるかを定義するドキュメントが見つかりませんでした。
私の質問に焦点を合わせるために、これが私が知りたいことです:
- 呼び出し元に戻る前に、呼び出し先が復元する必要があるYMMレジスタはどれですか。
- LinuxとWindowsではXMMレジスタに違いがあるので、YMMレジスタも同じルールに従わないと思います。各OSのルールは何ですか?
編集:以下の回答のおかげで、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.
..."