Estructura de Computadores. Examen 04.

Autor: Arturo Olivares Martos Autor: José Juan Urrutia Milán "JJ"


  • Asignatura: Estructura de Computadores.
  • Curso Académico: 2023-24.
  • Grado: Doble Grado en Ingeniería Informática y Matemáticas.
  • Grupo: A.
  • Profesor: Ignacio Rojas Ruiz.
  • Fecha: 7-11-2023.
  • Descripción: Examen de Temas 1 y 2 de Teoría, y prácticas 1-3.

Cada persona tenía un examen, por lo que hubo muchas versiones de este examen. De una batería de preguntas del profesor (salía de forma aleatoria); por lo que no hay un único examen, sino muchos. Esta es la segunda versión subida.

Cada respuesta correcta suma 1 punto, y cada respuesta incorrecta resta 0.33 puntos. Las preguntas no respondidas no suman ni restan. La puntuación total es sobre 20.


  1. Se define struct S1{int i[3], char c[3], double v} p[3] y union U1{int i[3], char c[3], double v} q[3];, indica qué afirmación es correcta:

  2. Dada la siguiente estructura struct W{int j[2], char s[8], short a[4], long *j}; Indique el tamaño total de la estructura.

  3. Dado un vector W de enteros (en %rdx), y un índice j (en %rcx). La expresión *(W+j-4) podría traducirse en una sentencia del tipo:

  4. La lectura de un elemento de un array anidado, necesita los siguientets accesos a memoria:

  5. Para leer un datos de un array multi-nivel, se requieren acceder a memoria:

  6. ¿Cuánto vale edx tras ejecutar el siguiente código?.
    xor %eax, %eax
    sub $1, %eax
    cltd

  7. ¿Qué bandera se activará tras la ejecución de la instrucción cmp
    xor %rax, %rax
    xor %rbx, %rbx
    inc %rbx
    cmp %rbx, %rax

  8. ¿Qué código utilizaría para conseguir que un número entero contenido en el registro eax se expanda correctamente a la pareja de registros edx:eax?

  9. ¿Cuál será el código de una función cuya definicion es int f(int a, int b, int c) y que se implementa así?
    mov %esi, %eax
    ret

  10. ¿Qué código cree mejor para copiar en edx:eax un valor de 64 bits almacenado en el tope de la pila sin alterarla?

  11. Dado el siguiente fragmento de programa en ensamblador:
    mov $-18, %eax
    sar $0x46, %eax
    and $0xFF, %eax
    ¿Cuál es el valor del registro RAX al finalizar la última instrucción?

  12. Dado el siguiente fragmento de programa en ensamblador:
    mov $-14, %eax
    sar $3, %eax
    and $0xFF, %eax
    ¿Cuál es el valor del registro RAX al finalizar la última instrucción?

  13. Dado el siguiente fragmento de programa en ensamblador:
    mov $-11, %eax
    sar $0x83, %eax
    and $0xFF, %eax
    ¿Cuál es el valor del registro RAX al finalizar la última instrucción?

  14. Dado el siguiente fragmento de programa en ensamblador:
    mov $-18, %eax
    sar $0x46, %eax
    and $0xFF000000, %eax
    ¿Cuál es el valor del registro RAX al finalizar la última instrucción?

  15. Dado el siguiente fragmento de programa en ensamblador:
    xor %rcx, %rcx
    and $5, %ecx
    mov $0x12345, %ebx
    rcr %cl, %rbx
    ¿Cuál es el valor del registro RBX al finalizar la última instrucción?

  16. ¿Qué función codifica el siguiente fragmento de código?
    0: cmp %esi, %edi
    2: mov %esi, %eax
    4: cmovge %edi, %eax
    7: retq<br

  17. Dado el siguiente fragmento de programa en ensamblador:
    xor %rcx, %rcx
    sub $58, %rcx
    mov $0x1, %ebx
    rcr %cl, %rbx
    ¿Cuál es el valor del registro RBX al finalizar la última instrucción?

  18. ¿Qué contendrá el tope de la pila durante la ejecución de la función f() en el siguiente programa?
    401020 <_start>
    401020: e8 08 00 00 00 callq 40102 d <f>
    401025: 48 31 ff xor %rdi, %rdi
    401028: e8 e3 ff ff ff callq 401010 <exit@plt>
    40102d <f>:
    40102d: eb fe jmp 40102d <f>
    40102f: c3 retq

  19. ¿Qué función codifica el siguiente fragmento de código?
    0: cmp %esi, %edi
    2: setne %al
    5: retq

  20. Dado el siguiente fragmento de programa en ensamblador:
    xor %rbx, %rbx
    xor %rax, %rax
    sub $1, %rax
    rcr $4, %rbx
    ¿Cuál es el valor del registro RBX al finalizar la última instrucción?