Instrucțiunile SETcc (Set Byte on Condition) setează un octet destinație (un registru pe 8 biți sau o locație de memorie de un octet) la valoarea 1 dacă o condiție logică este îndeplinită, sau la valoarea 0 dacă condiția este falsă.
Implementarea expresiei C: bool este_egal = (a == b);
section .text
global verifica_egalitate
; bool verifica_egalitate(uint64_t a, uint64_t b)
; RDI = a, RSI = b
; Valoare de retur pe 64 de biți în RAX (0 sau 1)
verifica_egalitate:
xor rax, rax ; Curățăm complet RAX (toți cei 64 de biți devin 0)
cmp rdi, rsi ; Comparăm a cu b
sete al ; Dacă a == b (ZF=1), registrul AL (partea inferioară de 8 biți a RAX) devine 1
ret ; RAX va conține exact 0x0000000000000001 sau 0x0000000000000000
Regulă critică de aliniere: Instrucțiunea
SETcc modifică doar 1 octet (de ex. al, bl, cl, dil). Pentru a returna un întreg curat pe 32 sau 64 de biți fără valori reziduale, trebuie să folosiți xor rax, rax înainte sau instrucțiunea movzx rax, al după.
Întrebări & Exemple de Cod:
Setarea Valorilor Booleene din Flag-uri: Instrucțiunile SETcc în x86_64Ai o nelămurire despre utilizarea comenzii
Setarea Valorilor Booleene din Flag-uri: Instrucțiunile SETcc în x86_64sau 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.