GNU/Linux >> Tutoriales Linux >  >> Linux

Lectura de un archivo en ensamblaje

debe declarar su búfer en la sección bss y el bufsize en datos

section .data
   bufsize dw      1024

section .bss
   buf     resb    1024

Ohh, esto va a ser divertido.

El lenguaje ensamblador no tiene variables. Esas son una construcción de lenguaje de nivel superior. En lenguaje ensamblador, si quieres variables, las creas tú mismo. Cuesta arriba. Ambos sentidos. En la nieve.

Si desea un búfer, tendrá que usar alguna región de su pila como búfer (después de llamar a las instrucciones apropiadas de configuración del marco de pila), o usar alguna región en el montón. Si su montón es demasiado pequeño, tendrá que hacer una instrucción SYSCALL (otra INT 80h) para pedir más al sistema operativo (a través de sbrk).

Otra alternativa es aprender sobre el formato ELF y crear una variable global en la sección correspondiente (creo que es .data).

El resultado final de cualquiera de estos métodos es una ubicación de memoria que puede usar. Pero sus únicas "variables" reales como las que está acostumbrado en el ahora maravilloso mundo de C son sus registros. Y no hay muchos de ellos.

El ensamblador puede ayudarte con macros útiles. Lea la documentación del ensamblador; No los recuerdo de memoria.

La vida es dura allá abajo en el nivel ASM.


Después de la llamada para abrir, el identificador del archivo está en eax. Con razón mueves eax a ebx, donde la llamada a read lo buscará. Desafortunadamente, en este punto ya lo sobrescribió con 3, la llamada al sistema para leer.


Linux
  1. ¿Cómo catear un archivo de Awk?

  2. Awk de diferentes líneas?

  3. ¿Crear datos de lectura de texto de un archivo?

  4. Encabezados de archivos ELF

  5. Recuperar nombre de archivo del descriptor de archivo en C

Cómo quitar (^M) caracteres de un archivo en Linux

Agregar sección al archivo ELF

¿Cómo pegar desde el búfer en modo ex de vim?

Lectura de un archivo CSV con consultas SQL desde el shell de Linux

Lectura de archivos Rdata con codificación diferente

copiar archivo de windows a linux