J'écris le début d'une sorte de bulle dans yasm, comme un exercice. Mais je me suis trompé à chaque fois à la dernière instruction ci-dessous et je ne comprends pas pourquoi.x86 yasm, segfault sur cmpsb; bon usage de cmpsb?
segment .data
arr db 5,6,2,3,8,1
segment .text
global main
main:
xor ecx, ecx ; counter
mov rdx, 6 ; sizeof(arr)
cld
_Do: xor eax, eax ; set swapped = false
for:
movzx esi, byte [arr+ecx]
movzx edi, byte [arr+ecx+1]
cmpsb ; is a[i]>a[i+1]? <--- segfault here every time
;jump to swap next, if I could get there
Ma compréhension est cmpsb compare l'octet dans si et di. Pourquoi devrait-il segmenter? Ce doit être une erreur très simple de ma part mais je ne le vois pas. Habituellement cmpsb est utilisé dans le contexte d'un repe, mais je pensais que ça marcherait aussi ici. Merci pour toute aide!
Merci, cela le répare! – user2022444