x86 addl vs subl

Я только заметил, что 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
5
задан sidyll 12 April 2012 в 15:41
поделиться