Salve...
Ho scritto questa funzione che in teoria deve prendere in input una stringa mettendola nell'indirizzo di memoria passato alla funzione tramite il registro ebx, la lunghezza è passata con il registro cx!! La stringa deve terminare con i caratteri di fine stringa 0x0A, 0x0D... Quindi la lunghezza della stringa è il valore di cx meno due.... Io non capisco perché quando uso l'indirizzamento indiretto sul registro eax per inserire i valori di fine stringa il programma va in segmentetion fault:
Io credo che il problema sia quello in quanto se lo comento funziona (male)... Non so che pesci pigliare....codice:cmp $2, %cx jb return cmp $2,%cx movb $0x0A, (%ebx) movb $0x0D, 1(%ebx) jbe return push %eax push %ebx push %ecx push %edx subw $2, %cx movw %cx , var_w movl %ebx, var_l movl %ebx, %edi movl $SYS_READ, %eax movl $STDIN, %ebx movl var_l , %ecx movl $var_w, %edx int $SYSTEM_CALL_LINUX xor %eax,%eax movl var_l, %eax # metto il primo indirizzo in memoria addl $var_w, %eax # metto la somma movb $0x0A, (%eax) # <-------- pop %edx pop %ecx pop %ebx pop %eax
![]()
![]()
![]()

Rispondi quotando