Examen Parcial Otoño 2012 (4) (2012)

Examen Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas de Telecomunicación - 1º curso
Asignatura Fonamentos de Ordenadores
Año del apunte 2012
Páginas 2
Fecha de subida 12/11/2014
Descargas 0
Subido por

Vista previa del texto

12/12/12. Control 2 de Fundamentos de Ordenadores - Q1-12/13 - Grupo 80 La duración del control es de 50 minutos Ejercicio1 (1 punto) Traduce a ensamblador del IA32 la declaración de las siguientes constantes y variables en C: #define N 10 #define a -3 int vec[N],i; Ejercicio2 (3 puntos) Considera las declaraciones del ejercicio1 y traduce a ensamblador del IA32 las siguientes sentencias en C. Haz una traducción donde la variable i esté siempre actualizada i=N-1; while(i>=0) { vec[i]=i+a; i--; } Ejercicio3 (1 punto) Escribe qué valores contienen las variables vec e i al finalizar la ejecución de las instrucciones del ejercicio2 Ejercicio4 (4 puntos) Considera que vec y N son las declaradas en el ejercicio1 y que val es una variable de tipo entero (int val). Traduce a C las siguientes instrucciones en ensamblador del IA32: MOVL vec,%ecx MOVL $1,%edi et1: CMPL $N,%edi JGE et3 CMPL %ecx,vec(,%edi,4) JLE et2 MOVL $vec,%esi MOVL (%esi,%edi,4),%ecx et2: INCL %edi JMP et1 et3: MOVL %ecx,val MOVL $0,%ebx MOVL $1,%eax INT $0x80 Ejercicio5 (1 punto) Considera que vec está actualizada según el resultado del ejercicio2. Escribe qué valor contiene la variable val al finalizar la ejecución de las instrucciones del ejercicio4 SOLUCION: Ejercicio1 (1 punto) Traduce a ensamblador del IA32 la declaración de las siguientes constantes y variables en C: #define N 10 #define a -3 N=10 a=-3 int vec[N],i; .comm vec,N*4,4 .comm i,4,4 Ejercicio2 (3 puntos) Considera las declaraciones del ejercicio1 y traduce a ensamblador del IA32 las siguientes sentencias en C. Haz una traducción donde la variable i esté siempre actualizada i=N-1; while(i>=0) { vec[i]=i+a; i--; } MOVL $N-1,i wh: CMPL $0,i JL fwh MOVL $a,%eax ADDL i,%eax MOVL i,%ebx MOVL %eax,vec(,%ebx,4) DECL i JMP wh fwh: Ejercicio3 (1 punto) Escribe qué valores contienen las variables vec e i al finalizar la ejecución de las instrucciones del ejercicio2 vec = {-3,-2,-1,0,1,2,3,4,5,6} i = -1 Ejercicio4 (4 puntos) Considera que vec y N son las declaradas en el ejercicio1 y que val es una variable de tipo entero (int val). Traduce a C las siguientes instrucciones en ensamblador del IA32: MOVL vec,%ecx MOVL $1,%edi et1: CMPL $N,%edi JGE et3 CMPL %ecx,vec(,%edi,4) JLE et2 MOVL $vec,%esi MOVL (%esi,%edi,4),%ecx et2: val=vec[0]; for(i=1;i<N;i++) if(vec[i]>val) val=vec[i]; INCL %edi JMP et1 et3: MOVL %ecx,val MOVL $0,%ebx MOVL $1,%eax INT $0x80 Ejercicio5 (1 punto) Considera que vec está actualizada según el resultado del ejercicio2. Escribe qué valor contiene la variable val al finalizar la ejecución de las instrucciones del ejercicio4 val = 6 (el mayor de los elementos de vec) ...