- 1
- 2
- 3
- 4
- 5
- 6
- 7
static inline int int_cmp(const void *a, const void *b) {
const ut64 va = *(const ut64 *)a;
const ut64 vb = *(const ut64 *)b;
if (va > vb) return 1;
if (va < vb) return -1;
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−47
static inline int int_cmp(const void *a, const void *b) {
const ut64 va = *(const ut64 *)a;
const ut64 vb = *(const ut64 *)b;
if (va > vb) return 1;
if (va < vb) return -1;
return 0;
}
j123123 10.05.2016 06:47 # +4
чтение uint64_t может производиться не по выравненным под 8 байт адресам. Для некоторых архитектур (в частности ARM) необходимо, чтобы обращения к памяти имели естественное выравнивание, т.е. адрес памяти должен быть кратен размеру данных (2 для short, 4 для int, 8 для uint64_t и double).
j123123 10.05.2016 06:55 # +1
чтоб без if-ов
j123123 10.05.2016 07:05 # +9
kurwa 10.05.2016 09:57 # 0
wvxvw 10.05.2016 11:36 # +3
mittorn 10.05.2016 14:21 # +1
Bobik 10.05.2016 10:50 # +1
j123123 10.05.2016 11:11 # 0
так и есть
TarasB 10.05.2016 11:33 # +2
Bobik 10.05.2016 12:07 # 0
mittorn 10.05.2016 14:23 # +4
WGH 16.06.2016 00:13 # +3
На первый взгляд всё круто, все сотни абстракций libopencm3 в ассемблере превращаются в достаточно короткий код без вызовов функций, как будто сам байтоебил на асме.
Однако на самом деле некоторые вещи просто-таки идут по пизде. std::uniform_real_distribution<float>(0, 1)(random_engine) упорно возвращает 2.0f, а std::uniform_int_distribution<>(0, 1)(random_engine) зацикливается нахуй.
Такие дела.
guest 17.06.2016 11:43 # 0