896-битное целое число? Или 16384-битный?

Поскольку x86_64 имеет 14 регистров общего назначения (rsp и rbp для стека), не могли бы вы сделать 896-битное целое число?

Или вы могли бы даже использовать все 32 zmm регистра (512-битных) для создания 16384-битного целого числа, перемещая его части в 64-битные регистры и затем вычисляя? Меня не волнует, быстрее ли gmp по этому вопросу.


person theoo3    schedule 12.05.2021    source источник
comment
Вы можете использовать всю доступную память для создания одного длинного целого числа ...   -  person KamilCuk    schedule 13.05.2021
comment
Вы можете загружать регистры с произвольными значениями и говорить, что каждый представляет некоторые биты абстрактного целого числа, но я не понимаю, насколько это значимо или полезно каким-либо образом.   -  person that other guy    schedule 13.05.2021
comment
Да, очевидно, да, вы могли бы это сделать; adc / sbb упрощают эти операции. И вы можете использовать RBP для чего угодно. Вы даже можете использовать RSP для чего угодно, в пользовательском пространстве без обработчиков сигналов. Вы можете также использовать состояние MMX в дополнение к ZMM, k0..k7, и целочисленному состоянию общего назначения, все сразу для одного целого числа.   -  person Peter Cordes    schedule 13.05.2021
comment
Обратите внимание, что получение данных между GP и старшими частями регистров ZMM будет означать перетасовку вниз для чтения или маскированную трансляцию для записи. (или сохранить / перезагрузить в память). Использование регистров ymm в качестве места хранения, аналогичного памяти, показывает, как это сделать. Я закрываю это как дубликат, потому что, кроме «да», неясно, какой ответ ищет этот вопрос, кроме того, как получить данные в / из широких векторных регистров. Вы ведь знаете, как использовать add / adc?   -  person Peter Cordes    schedule 13.05.2021