Информация об изменениях

Сообщение 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 писать) или ещё чего...

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

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