Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [assembler] errore input stringa

    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:

    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
    Io credo che il problema sia quello in quanto se lo comento funziona (male)... Non so che pesci pigliare....


  2. #2
    E il debugger che dice (compila col flag g) ?

  3. #3
    Sai la cosa più divertetente è che ho gia provato a lanciare il debuger gdb , compilando sia con l'opzione -g sia con gstabs , ma il risultato è lo stesso quando do il comando list per poi dopo mettere i breakpoint mi dice :
    codice:
    init.c : no souch file or directory in init.c

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.