Цитата(phenixs @ Dec 25 2015, 10:46)

У меня единственная операция, это сдвиг вправо(влево) в цикле 64 раза...
Вот и не пойму как разделить это дело ...
Если у Вас единственный сдвиг 0x01 конкретно на 64 бита, то для структуры достаточно операции
Код
struct U64 {
uint32_t low, hi;
};
low = 0x00;
hi = 0x01;
А если встречается различное количество сдвигов то удобнее тип оформить в виде массива 8 байт d[8] и
саму сдвижку производить на ассемблере по алгоритму:
1. d[0] - логический сдвиг для заноса в carry-флаг старшего бита
2. с d[1] - и далее - циклический сдвиг
на С сдвиг на 1 приблизительно так:
CODE
unsigned char carry;
carry = d[0];
d[0]<<=0x01;
for (i=1; i<8;i++)
{
if(carry&0x80)
{
carry=d[i];
d[i]<<=0x01;
d[i]|=0x01;
}
else
{
carry=d[i];
d[i]<<=0x01;
}
}
Сообщение отредактировал IgorKossak - Dec 25 2015, 10:55
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!