Я пытаюсь понять AMD64 ABI, описанный здесь . Вещь, которую я не понимал, касалась выравнивания стека и больших операндов (__m256
, __m512
). Вот соответствующая цитата:
Конец области входного аргумента должен быть выровнен по
16 (32 или 64, если __m256
или __m512
передается в стеке) граница байта.
Другими словами, значение (%rsp+ 8)
всегда кратно 16 (32 или 64)
когда управление передается в точку входа в функцию. Стек
указатель %rsp
всегда указывает на конец последнего выделенного стека
рама.
Я интерпретировал часть о __m256
и __m512
как то, что мы нажимаем ymmN
, zmmN
, но мы не можем сделать это с помощью инструкции push
. Можете ли вы объяснить, что это значит?