Assembly x86-64Instruções
Aritmética e lógica
add, sub, imul, xor, shl, sar…
Instruções
Operações de inteiro e bit a bit. Quase todas atualizam o RFLAGS (ZF, CF, SF, OF), o que os saltos condicionais depois consultam.
| Instrução | Operandos | Descrição |
|---|---|---|
| add / sub | dst, src | Soma / subtrai src em dst. |
| inc / dec | dst | Incrementa / decrementa dst em 1. |
| imul / mul | src | Multiplica (com / sem sinal). imul também tem formas de 2 e 3 operandos. |
| idiv / div | src | Divide rdx:rax por src (com / sem sinal); quociente em rax, resto em rdx. |
| neg | dst | Nega dst (complemento de dois). |
| and / or / xor | dst, src | Lógica bit a bit. xor reg, reg é o jeito idiomático de zerar um registrador. |
| not | dst | Inverte todos os bits (complemento de um). |
| shl / shr | dst, n | Desloca os bits à esquerda / direita (lógico, preenche com 0). |
| sar | dst, n | Deslocamento aritmético à direita: preserva o bit de sinal. |
zerar, somar e o idioma xor
xor eax, eax ; rax = 0 (zera os 64 bits — mais curto que mov)
add eax, 10 ; rax = 10
sub eax, 3 ; rax = 7
shl eax, 1 ; rax = 14 (desloca 1 bit = multiplica por 2)
and eax, 0xF ; mantém só os 4 bits baixos -> 14