[GCC, Linux] Emulazione read() con assembly inline

di il
3 risposte

[GCC, Linux] Emulazione read() con assembly inline

Cercando di replicare la funzione read() (solo che la mia prende solo due parametri) mi sono
imbattuto in un problemino. L'esecuzione del programma mi fa vedere evidentemente che la funzione
non legge ciò che le scrivo ma lo esegue come se fosse un comando. Inoltre controllando con gdb la variabile c
non risulta memorizzato nessun valore ASCII vi allego esecuzione del programma insieme al codice della funzione read()

gnp@gnp:~/./pfbl
7
-14gnp@gnp:~/Scrivania/develop$ 7
7: comando non trovato
gnp@gnp:~/Scrivania/develop$ 

int read_oc(int fd,int c)
{
	int rt=0;
	__asm__(
	"mov $3,%%eax\n"
	"mov %0,%%ebx\n"
	"mov %1,%%ecx\n"
	"mov $1,%%edx\n"
	"int $0x80\n"

	 
	"mov %%eax,%0\n"
	 
	 :"=r"(rt)
	 :"r"(fd),"r"(c)
	 :"%eax","%ebx","%edx","%ecx"
	);

	return rt;

}

int main (int argc, char **argv)
{
	int buff=0;
	
			read_oc(0,buff);
			
			
			
			printf("%i",read_oc(0,buff));
			
}

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte