Почему Дополнение 1 все еще используется для кодирования векторных инструкций?
В ответе jww указывает, что дополнение 1 все еще используется в кодировании векторных инструкций на архитектурах intel, и Руслан уточняет, что эти инструкции используются больше, поскольку авто-векторизация становится общей.
Есть ли преимущество дополнения 1, которое заставляет его продолжать использоваться в этих инструкциях, или оно просто используется по историческим причинам?
Цитирую jww:
От Intel® 64 и IA-32 архитектуры программного обеспечения Руководство разработчика 2A, стр. 3-8:
3.1.1.8 Раздел Описания
Каждая инструкция затем описывается числом информационных секций. В разделе "Описание" более подробно описывается назначение инструкций и требуемые операнды.
Краткое описание терминов, которые могут быть использованы в разделе описания:
* Устаревший SSE: относится к SSE, SSE2, SSE3, SSSE3, SSE4, AESNI, PCLMULQDQ и любым будущим наборам команд ссылка на регистры XMM и кодирование без префикса VEX.
* ДОСАЖДАТЬ.вввв. Битовое поле Векс, задающее регистр источника или назначения (в форме дополнения 1).
* rm_field: сокращение для поля ModR/M r/m и любого REX.B
* reg_field: стенография на поле присутствует modr/м Рег и любой Рекс.R
1 ответ:
Эта статья не говорит о том, что дополнение 1 используется для хранения целых чисел. Даже закодированные ВЕКСОМ целочисленные инструкции будут действовать на целых числах комплимента 2.
Все, что комплимент 1 говорит, что кодированный идентификатор регистра в инструкции VEX должен иметь обычные биты, используемые для идентификации перевернутого регистра. Некоторые в этом вопросе предположили, что это было сделано для предотвращения столкновений с существующими инструкциями, которые имеют много смысла для меня.