Сообщение Re[6]: Как обойти strict aliasing rule? от 18.06.2016 13:08
Изменено 27.06.2016 18:07 S. Schlongberg
Re[6]: Как обойти strict aliasing rule?
Здравствуйте, Erop, Вы писали:
E>А где тут минус
E>и and с чем-то не тем...
E>Тут или какой-то хитрый рюх или 1<<32 не в то посчитался, (лучше, конечно, 1ULL<<32 писать) или ещё чего...
Наверно, потому что имелось в виду
Теперь получается
E>А где тут минус
E>и and с чем-то не тем...
E>Тут или какой-то хитрый рюх или 1<<32 не в то посчитался, (лучше, конечно, 1ULL<<32 писать) или ещё чего...
Наверно, потому что имелось в виду
(В оригинале суффикса ull не было.)a + b — ( (1ull<<32)&((a+b)^~(a^b)) )
Теперь получается
mov rax, QWORD PTR [rcx]
mov r8, rax
xor r8, rdx
not r8
lea rcx, QWORD PTR [rax+rdx]
xor r8, rcx
mov rcx, 4294967296 ; 0000000100000000H
and r8, rcx
sub rax, r8
add rax, rdx
ret 0