Usted está aquí: Inicio Ver Cursos Archivados Arquitectura de Ordenadores ejercicios-1 Apéndice B. Ejercicios

Apéndice B. Ejercicios

Acciones de Documento
  • Vista de contenidos
  • Marcadores (bookmarks)
  • Exportación de LTI
Autor: Abelardo Pardo

 

Para la realización de los siguientes ejercicios se utiliza el código fuente utilizado como ejemplo, mostrado en la tabla B.1 y contenido en el fichero gdbuse.s. Se supone que el programa ha sido compilado, el ejecutable producido y el depurador arrancado.

  1. ¿Qué comando hay que utilizar para mostrar por pantalla todos los bytes que codifican el string con nombre formato?

    ¿Cuál es el valor del último byte?

  2. Se sabe que las instrucciones del tipo push :registro: se codifican mediante un único byte y mov :registro:, :registro: mediante dos bytes. Utilizando únicamente el depurador, decir cuál es el código hexadecimal de las siguientes instrucciones:

     

    push %ebp
    push %eax
    push %ebx
    push %ecx
    push %edx

     

  3. Situar un punto de parada en la instrucción call printf. ¿Qué comando es necesario para mostrar por pantalla el valor que deposita en la cima de la pila la instrucción push $formato?

  4. Introducir un punto de parada en la línea 10 del código (en la instrucción push %eax). Mostrar por pantalla mediante el comando print el valor de los registros %eax, %ebx, %ecx y %edx. Apuntar estos valores.

    A continuación introducir un segundo punto de parada en la línea 14 (en la instrucción mov $0, %ebx). Mediante el comando continue continuar la ejecución hasta ese punto.

    ¿Qué comando hay que utilizar para mostrar por pantalla el contenido de las cuatro palabras de memoria que se encuentran en la cima de la pila? Comprobar que estos valores son idénticos a los mostrados en el primer punto de parada.

  5. La instrucción inc %ebx aumenta el valor de dicho registro en una unidad. Este registro contiene el índice del siguiente elemento a imprimir. Poner un punto de parada en la instrucción siguiente a esta y con el programa detenido modificar el valor de este registro con un número entre cero y seis (ambos inclusive). Explica qué es lo que sucede y por qué.

  6. Utilizando la ejecución instrucción a instrucción que permite el depurador, ¿qué instrucción se ejecuta justo antes de la instrucción pop %edx?

  7. La instrucción push nums(,%ebx,4) deposita un cierto valor en la pila. Introducir un punto de parada en la siguiente instrucción, y una vez detenido el programa, poner en la cima de la pila otro número arbitrario mediante el comando set. Explica qué efecto tiene esto y por qué.

Reutilizar Curso
Descargar este curso