Aceste instrucțiuni extind bitul de semn al acumulatorului într-un registru pereche pentru a pregăti operațiile de împărțire cu semn (IDIV), fără a necesita un operand explicit.
; 1. cdqe: Extinde semnul din EAX (32 biți) în RAX (64 biți)
mov eax, -50
cdqe ; RAX este acum 0xFFFFFFFFFFFFFFCE (-50 pe 64 biți)
; 2. cqo: Extinde semnul din RAX (64 biți) în RDX:RAX (128 biți)
; Necesar înainte de executarea unei împărțiri 'idiv rbx' pe 64 de biți:
mov rax, -1000
cqo ; RDX se populează cu 0xFFFFFFFFFFFFFFFF (semnul negativ)
mov rbx, 5
idiv rbx ; RAX = -200, RDX = restul (0)
Erori clasice: Dacă se omite apelul CQO (sau XOR RDX, RDX pentru numere pozitive) înainte de IDIV, procesorul va arunca o excepție fatală de tip Floating Point Exception (#DE – Divide Error).
Întrebări & Exemple de Cod:
CDQE, CDQ și CQO în x86_64: Extinderea Acumulatorului pentru ÎmpărțireAi o nelămurire despre utilizarea comenzii
CDQE, CDQ și CQO în x86_64: Extinderea Acumulatorului pentru Împărțiresau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.