Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

Práctica 4 Organización del Computador 1 12 de septiembre de 2005 Algunas consideraciones preliminares: Donde aparece xxxxxxxx quiere decir que el val

2 downloads 80 Views 103KB Size

Story Transcript

Práctica 4 Organización del Computador 1 12 de septiembre de 2005 Algunas consideraciones preliminares: Donde aparece xxxxxxxx quiere decir que el valor correcto ya está en esa dirección de memoria Todos los elementos de las materices y vectores son enteros de 32 bits en notación complemento (la aritmética de INTEL y de SPARC ) Análisis de programas en lengua je ensamblador 1.

Considere el siguiente programa, escrito en lenguaje ensamblador de Intel:

A B C D Comienzo:

DB 0,1,2,3,4,5,6,7,8,9 DB 'Don Jose' DD 'A', 'B', 'C' DD '?' LEA EBX, B MOV D, EBX ADD EBX, 4 MOV EAX, [EBX] LEA ECX, D MOV [ECX], EAX

a) Indicar cuanto ocupan los datos (A, B, C y D) b) Describir que hace cada instrucción c) Indicar que tipos de direccionamientos son utilizados y donde. d) Mostrar que cambios se producen (tanto en registros como memoria) después de correr el programa. 2.

Considere el siguiente programa, escrito en ensamblador de SPARC

Vec: .const xxxxxxxx Start: ADD %R0, %R0, %R16 ADD %R0, 4, %R17 SETHI (Vec), %R18 ADD %R18, %lo (Vec) ,%R18 LD [%R0+%R18], %R20 SUBCC %R20, 7, %R0

1

BE Salir ADD %R20, 7, %R20 Salir: ST %R17, [%R20+%R0]

Explicar qué hace, siguiendo su ejecución paso a paso. 3.

Considere el siguiente programa, escrito en ensamblador Intel:

Vector DD xxxxxxxx DD zzzzzzzz ... Clave DD yyyyyyyy Comienzo: LEA MOV MOV Ciclo: MOV CMP JE CMP JE Sigo: ADD JMP Sumo: ADD JMP Fin: RET

ESI, Vector EDX, Clave ECX, 0 EAX, [ESI] EAX, 0 Fin EAX, EDX Sumo ESI, 4 Ciclo ECX, 1 Sigo

Explicar qué hace, siguiendo su ejecución paso a paso. Vectores

Sea un vector v almacenado a partir de la dirección ... para Intel, de la etiqueta V ECT OR. para Sparc, contenida en el registro de entrada R24 Suponga que la primer aparición de 0 marca el nal del vector. Escribir una rutina que calcule la sumatoria de todos los elementos del vector.

4.

Suponga que el primer elemento contiene la longitud de v (Por ejemplo, si el tamaño de v es 5, entonces hay un elemento adicional al principio por el valor 5). Encontrar el máximo y el mínimo del vector recorriéndolo sólo una vez. 5.

Suponga que el primer elemento contiene la longitud de v . Ordenar el vector de menor a mayor. 6.

2

Dado 2 vectores v2 y res de la misma longitud que v , escribir una rutina que sume v y v2 , colocando el resultado de esa suma en res. Suponga que la longitud de cada vector está almacenada en su primer elemento. Los vectores se encuentran

7.

para Intel, en las direcciones de las etiquetas V ECT OR2 y RES . para Sparc, en los registros de entrada R25 y R26 Matrices

Existen dos maneras tradicionales de almacenar una matriz en memoria.

por las : se almacena primero el vector correspondiente a la primera la de la matriz, luego inmediatamente después en la memoria el vector de la segunda la, y así hasta la última de las las. por columnas : se almacena el vector correspondiente a la primera columna de la matriz, luego inmediatamente después en la memoria el vector de la segunda columna, y así hasta la última columna. Cuando se da la dirección de una matriz se da la dirección del primer elemento de la primera la (o columna).

8.

Suponga una matriz que esté almacenada por las o por columnas. a) ¾Cuál sería el procedimiento para obtener los elementos mínimo y máximo, recorriendo cada elemento sólo una vez? b) ¾Existe alguna diferencia si la matriz está almacenada por las o por columnas?

9. Se pide escribir un programa que copie una matriz de 32 × 32 elementos haciendo un zoom x2 de la matriz. Por ejemplo:



1 2 M = 7 1 ...

3 1

 4 ... 5 ... 

resulta en :    zoomed(M ) =   

1 1 7 7 ...

 1 2 2 3 3 4 4 ... 1 2 2 3 3 4 4 ...   7 1 1 1 1 5 5 ...   7 1 1 1 1 5 5 ... 

para Intel, la matriz de 32 × 32 se encuentra en la dirección de la etiqueta M , escribir la nueva matriz de 64 × 64 en las etiqueta ZOOM M . para Sparc, la matriz de 32 × 32, se encuentra a partir de la dirección contenida en el registro de entrada R24 , se espera que escriba la nueva matriz a partir de la dirección contenida en el registro de entrada R25 . 3

Dada una matriz cuadrada de n × n almacenada por las, escribir un programa que indique si todos los elementos que están fuera de la diagonal son el número 0. 10.

para Intel, usar las etiquetas M AT RIZ y N para las direcciones de la matriz y de su dimensión; escribir el resultado en la dirección de la etiqueta ESDIAGON AL. para Sparc, en los registros de entrada R24 y R25 se encuentran las direcciones de la matriz y de su dimensión. Escribir el resultado en el registro de salida R8 . Dada una matriz cuadrada de n × n almacenada por las, obtener su traspuesta.

11.

para Intel, usar las etiquetas M AT RIZ y N para las direcciones de la matriz y de su dimensión; escribir el resultado en la dirección de la etiqueta M AT RIZT . para Sparc, en los registros de entrada R24 y R25 se encuentran las direcciones de la matriz y de su dimensión. En el registro de entrada R26 se encuentra la dirección donde debe almacenarse la matriz traspuesta. 12. Dada una matriz m de n × n almacenada por las, cuyos elementos son números del 1 al 10, se pide dejar en un vector V la cantidad de apariciones de i en la matriz. Por ejemplo, si el número 3 está 5 veces en la matriz, entonces V [3] debe contener el valor 5.

para Intel, usar las etiquetas M y N para las direcciones de la matriz m y de su dimensión; escribir el resultado en la dirección de la etiqueta V . para Sparc, en los registros de entrada R24 , R25 y R26 se encuentran las direcciones de la matriz, de su dimensión y del vector donde debe almacenarse el resultado. Dada una matriz de n las por m columnas, almacenada por columnas a partir de la etiqueta M AT RIZ , calcular: 13.

P , la suma de todos los elementos de las columnas pares I , la suma de todos los elementos de las columnas impares

(Tanto para Intel como Sparc ) Usar las etiquetas N y M para obtener la dirección de la cantidad de las y de columnas de la matriz. Guardar el valor P en la posición apuntada por la etiqueta P ARES , y el valor I en la posición apuntada por la etiqueta IM P ARES . Puede suponer que la matriz tiene al menos un elemento. Recorrer los elementos de la matriz sólo una vez.

4

Performance vs. Costo

Para un programa dado, el 1 % del código tarda el 50 % del tiempo de ejecución. Suponga que tomaría 100 horas hombre escribirlo en C, y que el código en lenguaje ensamblador es 10 veces más complejo de escribir que el código en C, y 4 veces más eciente. Comparar los resultados de aplicar las siguientes estrategias con respecto al tiempo de programación y ejecución:

14.

a) Todo el programa en C; b) Todo el programa en ensamblador; c) Primero todo en C, y el 1 % clave se reescribe en ensamblador.

5

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.