Ensamblador - Obtener nombres de ficheros en GNU/Linux desde asm

 
Vista:

Obtener nombres de ficheros en GNU/Linux desde asm

Publicado por pepl (4 intervenciones) el 20/01/2011 04:30:55
Buenas noches,
intento obtener el nombre de un fichero relacionado con el inodo obtenido en una búsqueda sys_readdir y abierto por la llamada sys_open.
Cuando obtengo el dirent encuentro el string d_name, pero no soy capaz de calcular en el código el tamaño del mismo pues, aunque tengo los campos de dirent, no consigo prever el tamaño del nombre.

struct dirent{
long d_ino; //4 bytes
off_t d_off; //4 bytes
unsigned short d_reclen; //2 bytes
char d_name[1];
};

En principio la cosa parece clara: restar 10 bytes al contenido de d_reclen (longitud de dirent), pero no me da el resultado esperado en ningún caso.

mov edx,[ecx+8] ;copiamos el valor situado en el offset de d_reclen sobre edx
sub edx,0ah ;restamos 10 para obtener el valor del tamaño del string con el nombre
lea ecx,[ecx+0ah];apuntamos al nombre
;seguimos con los demás valores de sys_write para escribirlo

*Suponiendo en ecx un puntero a struct dirent

Si alguien puede aportar una ayuda, ¡muchas gracias, compañeros!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Obtener nombres de ficheros en GNU/Linux desde

Publicado por pepl (4 intervenciones) el 20/01/2011 04:38:05
Un detalle a reparar en el código es indicar que queremos copiar sólo 2 bytes de d_reclen:

*
mov dx,word [ecx+8]
*
Aún así, sigue sin funcionar.

¡Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reiniciar variable .bss

Publicado por Jlaro (4 intervenciones) el 20/01/2011 05:30:08
Buenas,
queria saber cómo es posible reiniciar una variable utilizada como buffer en la seccion .bss.

Muchas gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar