Я скачал пакет кодов Keccak с их веб-сайта , и сейчас я пытаюсь реализовать алгоритм Kangaroo Twelve с использованием источников, которые они предоставляют в пакете.
Однако у меня есть проблема, с которой я уже столкнулся при реализации деривации ключей AES-NI (это была точно такая же проблема), которая связана с приведением структуры, которое не разрешено в Visual Studio, как это происходит в блоках кода с компилятором GCC..
Так вот мой код:
int main()
{
_m256i *stateAsLanes;
unsigned int i;
const UINT64 *curData0;
const UINT64 *curData1;
const UINT64 *curData2;
const UINT64 *curData3;
_m256i lanes0, lanes1, lanes2, lanes3, lanesL01, lanesL23, lanesH01, lanesH23;
lanes0 = _mm256_loadu_si256((const _m256i *)&(curData0[0]));
lanes1 = _mm256_loadu_si256((const _m256i *)&(curData1[0]));
lanes2 = _mm256_loadu_si256((const _m256i *)&(curData2[0]));
lanes3 = _mm256_loadu_si256((const _m256i *)&(curData3[0]));
lanesL01= (_m256i )_mm256_permute2f128_ps((__m256)(lanes0), (__m256)(lanes2), 0x20);
...
}
Ошибка в последней строке:
приведение к типу "__m256i" не разрешено
приведение к типу "__m256" не разрешено
приведение к типу "__m256" не допускается
Iтолько дал вам кусок кода, поскольку это та же самая проблема «приведение к типу - Внутренний тип - не разрешено» везде в коде.
Итак, вот мой последний вопрос: как я могу получить этокод для компиляции под компилятором Visual Studio, а такжеэто с компилятором GCC?Есть ли способ "разрешить" такие виды приведения в Visual Studio?