The data transfer instructions move data between memory and the general-purpose and segment registers, and perform operations such as conditional moves, stack access, and data conversion.
Table 3–1 Data Transfer Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
BSWAP |
byte swap |
bswapq valid only under -xarch=amd64 |
|
CBW |
convert byte to word | ||
CDQ |
convert doubleword to quadword |
%eax -> %edx:%eax |
|
CDQE |
convert doubleword to quadword |
%eax -> %rax cltq valid only under -xarch=amd64 |
|
CMOVA |
conditional move if above |
cmovaq valid only under -xarch=amd64 |
|
CMOVAE |
conditional move if above or equal |
cmovaeq valid only under -xarch=amd64 |
|
CMOVB |
conditional move if below |
cmovbq valid only under -xarch=amd64 |
|
CMOVBE |
conditional move if below or equal |
cmovbeq valid only under -xarch=amd64 |
|
CMOVC |
conditional move if carry |
cmovcq valid only under -xarch=amd64 |
|
CMOVE |
conditional move if equal |
cmoveq valid only under -xarch=amd64 |
|
CMOVG |
conditional move if greater |
cmovgq valid only under -xarch=amd64 |
|
CMOVGE |
conditional move if greater or equal |
cmovgeq valid only under -xarch=amd64 |
|
CMOVL |
conditional move if less |
cmovlq valid only under -xarch=amd64 |
|
COMVLE |
conditional move if less or equal |
cmovleq valid only under -xarch=amd64 |
|
CMOVNA |
conditional move if not above |
cmovnaq valid only under -xarch=amd64 |
|
CMOVNAE |
conditional move if not above or equal |
cmovnaeq valid only under -xarch=amd64 |
|
CMOVNB |
conditional move if not below |
cmovnbq valid only under -xarch=amd64 |
|
CMOVNBE |
conditional move if not below or equal |
cmovnbeq valid only under -xarch=amd64 |
|
CMOVNC |
conditional move if not carry |
cmovncq valid only under -xarch=amd64 |
|
CMOVNE |
conditional move if not equal |
cmovneq valid only under -xarch=amd64 |
|
CMOVNG |
conditional move if greater |
cmovngq valid only under -xarch=amd64 |
|
CMOVNGE |
conditional move if not greater or equal |
cmovngeq valid only under -xarch=amd64 |
|
CMOVNL |
conditional move if not less |
cmovnlq valid only under -xarch=amd64 |
|
CMOVNLE |
conditional move if not above or equal |
cmovnleq valid only under -xarch=amd64 |
|
CMOVNO |
conditional move if not overflow |
cmovnoq valid only under -xarch=amd64 |
|
CMOVNP |
conditional move if not parity |
cmovnpq valid only under -xarch=amd64 |
|
CMOVNS |
conditional move if not sign (non-negative) |
cmovnsq valid only under -xarch=amd64 |
|
CMOVNZ |
conditional move if not zero |
cmovnzq valid only under -xarch=amd64 |
|
CMOVO |
conditional move if overflow |
cmovoq valid only under -xarch=amd64 |
|
CMOVP |
conditional move if parity |
cmovpq valid only under -xarch=amd64 |
|
CMOVPE |
conditional move if parity even |
cmovpeq valid only under -xarch=amd64 |
|
CMOVPO |
conditional move if parity odd |
cmovpoq valid only under -xarch=amd64 |
|
CMOVS |
conditional move if sign (negative) |
cmovsq valid only under -xarch=amd64 |
|
CMOVZ |
conditional move if zero |
cmovzq valid only under -xarch=amd64 |
|
CMPXCHG |
compare and exchange |
cmpxchgq valid only under -xarch=amd64 |
|
CMPXCHG8B |
compare and exchange 8 bytes | ||
CQO |
convert quadword to octword |
%rax -> %rdx:%rax cqtd valid only under -xarch=amd64 |
|
CQO |
convert quadword to octword |
%rax -> %rdx:%rax cqto valid only under -xarch=amd64 |
|
CWD |
convert word to doubleword |
%ax -> %dx:%ax |
|
CWDE |
convert word to doubleword in %eax register |
%ax -> %eax |
|
MOV |
move data between immediate values, general purpose registers, segment registers, and memory |
movq valid only under -xarch=amd64 |
|
MOVABS |
move immediate value to register |
movabs valid only under -xarch=amd64 |
|
MOVABS |
move immediate value to register {AL, AX, GAX, RAX} |
movabs valid only under -xarch=amd64 |
|
MOVSX |
move and sign extend |
movsbq and movswq valid only under -xarch=amd64 |
|
MOVZX |
move and zero extend |
movzbq and movzwq valid only under -xarch=amd64 |
|
POP |
pop stack |
popq valid only under -xarch=amd64 |
|
POPA |
pop general-purpose registers from stack |
popaw invalid under -xarch=amd64 |
|
POPAD |
pop general-purpose registers from stack |
invalid under -xarch=amd64 |
|
PUSH |
push onto stack |
pushq valid only under -xarch=amd64 |
|
PUSHA |
push general-purpose registers onto stack |
pushaw invalid under -xarch=amd64 |
|
PUSHAD |
push general-purpose registers onto stack |
invalid under -xarch=amd64 |
|
XADD |
exchange and add |
xaddq valid only under -xarch=amd64 |
|
XCHG |
exchange |
xchgq valid only under -xarch=amd64 |
|
XCHG |
exchange |
xchgqA valid only under -xarch=amd64 |