SCAS și CMPS în x86_64: Căutarea și Compararea Blocurilor de Memorie în Assembly (x86_64)

Sintaxă
scasb / scasd / scasq
cmpsb / cmpsd / cmpsq
repne scasb
repe cmpsb

Instrucțiunea SCAS (Scan String) compară valoarea din acumulator (AL/RAX) cu octetul indicat de RDI, iar CMPS (Compare String) compară memoria indicată de RSI cu cea indicată de RDI, avansând automat pointerii conform flag-ului DF.

; Implementarea ultra-rapidă a funcției strlen(str):
global sir_strlen
sir_strlen:
    mov rdi, rdi                ; RDI conține adresa șirului (primul argument ABI)
    mov rdx, rdi                ; Păstrăm adresa de start
    xor al, al                  ; Căutăm terminatorul nul '\0' (0)
    mov rcx, -1                 ; Setăm contorul la valoare maximă (0xFFFFFFFFFFFFFFFF)
    cld                         ; Asigură direcția înainte (incrementare RDI)
    repne scasb                 ; Scanează cât timp [RDI] != AL
    not rcx                     ; Calculează lungimea din contorul decrementat
    dec rcx                     ; Elimină terminatorul
    mov rax, rcx                ; Returnează lungimea în RAX
    ret

Prefixele REP: REPE repetă atât timp cât elementele sunt egale (pentru memcmp), iar REPNE repetă până când găsește primul element egal (pentru memchr).

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: SCAS și CMPS în x86_64: Căutarea și Compararea Blocurilor de Memorie

Ai o nelămurire despre utilizarea comenzii SCAS și CMPS în x86_64: Căutarea și Compararea Blocurilor de Memorie sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.