Re[6]: Как обойти strict aliasing rule?
От: Eeel Россия  
Дата: 18.06.16 13:08
Оценка:
Здравствуйте, Erop, Вы писали:

E>А где тут минус

E>и and с чем-то не тем...
E>Тут или какой-то хитрый рюх или 1<<32 не в то посчитался, (лучше, конечно, 1ULL<<32 писать) или ещё чего...

Наверно, потому что имелось в виду

a + b — ( (1ull<<32)&((a+b)^~(a^b)) )

(В оригинале суффикса ull не было.)

Теперь получается

    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
Отредактировано 27.06.2016 18:07 S. Schlongberg . Предыдущая версия . Еще …
Отредактировано 21.06.2016 9:52 S. Schlongberg . Предыдущая версия .
Отредактировано 18.06.2016 15:08 S. Schlongberg . Предыдущая версия .
Отредактировано 18.06.2016 13:09 S. Schlongberg . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.