Как регистры AVX обрабатываются в соответствии с общими соглашениями о вызовах?

Я не смог найти ни одного документа, определяющего, как регистры YMM обрабатываются вызывающим и вызываемым.

Чтобы сфокусировать свой вопрос, вот что я хотел бы знать:

  1. Какие регистры YMM должны быть восстановлены вызываемым, прежде чем возвращаться вызывающему?
  2. Поскольку существуют различия для регистров XMM в Linux и Windows, Я предполагаю, что регистры 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.
..."
6
задан zr. 15 January 2012 в 08:27
поделиться