Или это я туплю, или не знаю даже что и думать. Вот такой код: #include <stdio.h> int main(int argc, char **argv) { unsigned int a = 0x0a; unsigned int i; #if 0 /* case 1 */ __asm ( "bsrl %1, %0\n\t" :"=c"(i) : "m"(a) ); #else /* case 2 */ __asm ( "bsrl %1, %0\n\t" :"=c"(i) : "q"(0x0a) ); #endif printf("a %u (0x%08x), i %u\n", a, a, i); return 0; } $ gcc -Wall -O0 -g btst.c -o btst $ ./btst a 10 (0x0000000a), i 3 То есть оно возвращает индекс самого старшего установленного бита, но только считая не с того конца (???!) В обоих случаях (case 1 && case 2) Что бы это значило?
Ответ на:
комментарий
от anonymous_incognito
Ответ на:
комментарий
от kosmonavt
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Потестируем инкремент! (2005)
- Форум Простейший вопрос - свои первые строчки на C. Где argv ? (2004)
- Форум математика (2005)
- Форум Покритикуйте функцию вывода шестнадцатеричного числа без использования %X, (2005)
- Форум Warnings при использовании basename () (2004)
- Форум Что происходит в этом коде (2014)
- Форум что не так в использовании структуры (2008)
- Форум [emacs][cedet] Автодополнение (2010)
- Форум mount in c++ ?? (2005)
- Форум Си (2013)