На моей 64-битной машине Intel работает следующий код:
mov rdi, 1 << 40
add r10, rdi
и этот вполне эквивалентный вид выдает предупреждение и не работает:
add r10, 1 << 40
Должен ли я просто придерживаться номера 1 или я что-то упускаю? Такое поведение кажется неправильным.
Предупреждение, выдаваемое кодом № 2:
warning: signed dword immediate exceeds bounds
mov
записать константу в регистр, как и для инструкций ALU, таких какadd
. - person Peter Cordes   schedule 01.03.2018mov r64, imm64
по сравнению с загрузкой из памяти. - person Peter Cordes   schedule 02.03.2018add dword ptr [var + 4], (1 << 40) >> 32
- person phuclv   schedule 10.10.2020