Sto cercando di ottenere questo codice C:Conversione C a NASM montaggio con problema di segmentazione
main()
{int x, y, count ;
count = 0 ;
x = 10 ;
y = 2 ;
while (y < x)
{ x = x + 1 ;
y = y + 2 ;
count = count + 1 ;
}
printf(“ It took %d iterations to complete loop. That seems like a lot\n”,count) ;
}
al suo equivalente NASM che ho questo finora:
segment .data
out1 db "It took ", 0
out2 db "%i ", 0
out3 db "iterations to complete the loop. That seems like a lot.", 10, 0
segment .bss
segment .text
global main
extern printf
main:
mov eax, 0 ;count
mov ebx, 10 ;x
mov ecx, 2 ;y
jmp lp
mov eax, 0
ret
lp:
cmp ecx, ebx ;compare y to x
jge end ;jump to end if y >= x
add eax, 1
add ebx, 1
add ecx, 2
jmp lp
end:
push out1
call printf
push eax
push out2
call printf
push out3
call printf
Continuo a ricevere un segmentation fault e non capisco perché continua a succedere. Ho provato ad aggiungere dichiarazioni di stampa ovunque e non riesco a trovare dove si trova l'errore. Qualsiasi consiglio sarebbe grande! Grazie!
tuo asm sembra a posto per me. – peterh
Avete un'istruzione 'ret' dopo' printf's? – Diego
sì, mi sono stancato che non si occupasse del problema di segmentazione :( – mm19