Я только заметил, что Clang компилирует этот оператор (без какой-либо оптимизации, конечно):
--x; /* int x; */
в:
addl $4294967295, %ecx ## imm = 0xFFFFFFFF
Почему? Есть ли преимущество в использовании addl
вместо «очевидного» subl
? Или это просто факт реализации?
Меня обманывает то, что этот:
x -= 1;
становится:
subl $1, %eax
Clang info:
Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn) Target: x86_64-apple-darwin11.2.0 Thread model: posix