реклама на сайте
подробности

 
 
> Сдвиг 64битного беззнакового целого
coolibin
сообщение Jul 1 2009, 09:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Есть код:

CODE

#define UINT unsigned int
#define UINT64 unsigned long long
....
UINT64 iValue;
UINT iOffset;

iOffset = rand()&63;
iValue = (UINT64)(1) << iOffset;


компилятор генерит такой асм:

CODE

_BLF rand,??rand??rT
LSLS R2,R0,#+26
LSRS R2,R2,#+26
MOVS R0,#+1
MOVS R1,#+0
_BLF ??lllsl_t,??rT??lllsl_t


т. е. он юзает функцию lllsl_t для сдвига. Как заставить его обойтись без этой функции, т. е. через простые операции, если это конечно, возможно?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th July 2025 - 23:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016