• No se han encontrado resultados

Práctica 3 - Arquitectura del CPU

N/A
N/A
Protected

Academic year: 2021

Share "Práctica 3 - Arquitectura del CPU"

Copied!
6
0
0

Texto completo

(1)

Pr´actica 3 - Arquitectura del CPU

Organizaci´on del Computador 1

Primer cuatrimestre de 2012

Ejercicio 1 A partir de cada uno de los siguientes vuelcos parciales de memoria y estados del procesador, realizar un seguimiento simulando ciclos de instrucci´on hasta encontrar una instrucci´on inv´alida (es decir, una instrucci´on cuyo c´odigo de operaci´on no figure entre los del conjunto de instrucciones). La arquitectura de la m´aquina es la descripta al final de esta pr´actica. Indicar qu´e celdas de memoria se modifican y el estado final del procesador.

a) Ayuda: la quinta instrucci´on a ejecutar es inv´alida.

PC R0 035D R1 034C R2 8A6B R3 0300 Z 0 N 0 A644 R4 E7A0 R5 A622 R6 1A2B R7 3898 C 0 V 0

0 1 2 3 4 5 6 7 8 9 A B C D E F

A630 2EFD 0053 0225 0000 0052 C925 F303 1A2B 5600 5B4C A4D6 88C0 0000 A200 034B A631 A640 FEDC 7081 A1C1 C925 223D A639 002B FAF0 48A7 6880 9C40 0000 0348 4AF3 A000 0340

b) Ayuda: la quinta instrucci´on a ejecutar es inv´alida.

PC R0 035D R1 034C R2 8000 R3 A622 Z 0 N 0 2532 R4 E7A0 R5 2521 R6 1A2B R7 FFF4 C 0 V 0

0 1 2 3 4 5 6 7 8 9 A B C D E F

2520 F303 ABCD 2FE2 2530 8000 253E FEDC 7081 A1C1 C925 223D A639 002B FAF0 48A7 6880 2530 034B A631 5D40 5432 F205 A200 253C 2EFD 0053 0225 9200 2524 2624 2525 0000 9C40

c) Ayuda: la cuarta instrucci´on a ejecutar es inv´alida.

PC R0 035F R1 C2A3 R2 2940 R3 034F Z 0 N 0 0358 R4 27A3 R5 0122 R6 0352 R7 0359 C 0 V 0

0 1 2 3 4 5 6 7 8 9 A B C D E F

0340 FAF0 0053 0000 8EC0 0349 6925 0340 1A2B 0350 6023 0000 0000 A000 C925 034B 5E6F 0350 88C0 FFFF A1C1 A200 0348 0000 0225 5200 3621 0344 FBEE 2940 FFFF 563B FFFF F303 Ejercicio 2 Desensamblar el siguiente programa escrito en lenguaje de m´aquinaORGA1.

0001 1000 0000 0000 0000 0000 1111 1111 0001 1000 0100 0000 0001 0000 0000 0000 0010 1000 0010 0001

Ejercicio 3 Traducir el siguiente programa de lenguaje C a lenguaje de la m´aquinaORGA1. Usar los registrosR0yR1como contenedores de las variablesxe yrespectivamente;

1 int x = 2; 2 int y = 32; 3 x = x + y ;

(2)

Ejercicio 4 Dados los siguientes valores de la memoria y del registro R0de la arquitectura

ORGA1, ¿qu´e valores cargan en el registro R1las siguientes instrucciones? a) MOV R1, 20(inmediato)

b) MOV R1, [20](directo) c) MOV R1, [[20]] (indirecto) d) MOV R1, R0(registro)

e) MOV R1, [R0](indirecto registro) f) MOV R1, [R0 + 20](indexado registro)

Memoria Direcci´on Contenido 0020h 0040h 0030h 0050h 0040h 0060h 0050h 0070h Registros Nombre Contenido R0 0030h

Ejercicio 5 Considere el siguiente programa escrito enassembler de la arquitecturaORGA1:

Vector: DW ... DW ... ... DW 0000 Clave: DW ...

Comienzo: MOV R0, Vector MOV R1, [Clave] MOV R2, 0 Ciclo: MOV R3, [R0] CMP R3, 0 JE Fin CMP R3, R1 JE Sumo Sigo: ADD R0, 1 JMP Ciclo Sumo: ADD R2, 1 JMP Sigo Fin: RET

a) El programa se ubica en la posici´on

0100h de la memoria. Los vectores se almacenan como valores contiguos de una palabra de tama˜no. Para in-dicar la finalizaci´on del vector se uti-liza el valor cero. Suponiendo que el vector contiene diez palabras, indi-car el valor de cada una de las eti-quetas.

b) Explicar qu´e hace el programa si-guiendo su ejecuci´on paso a paso. c) Escribir un pseudoc´odigo que refleje

el comportamiento del programa. d) Mostrar un vector para el cual este

programa no hace lo esperado.

Ejercicio 6 Escribir el pseudoc´odigo y el programa en assembler de ORGA1que recorra un vector de n´umeros codificados en notaci´on complemento a 2 de 16 bits de precisi´on y devuelva el valor m´aximo y m´ınimo de dicho vector. La posici´on de inicio del vector es recibida en el registro R0 y su longitud en el registro R1. En los registros R2 y R3 deben guardarse el resultado del m´aximo y m´ınimo respectivamente. La soluci´on debe recorrer el vector una ´

unica vez.

Ejercicio 7 Considere el siguiente programa escrito enassembler de la arquitecturaORGA1.

JMP Inicio Valor: DW 0A0A

Inicio: MOV R0, [Valor] ADD R0, 0003 MOV [Valor], R0 Salida: RET

a) Suponiendo que el programa se ubica en la posi-ci´onFF0Ehde la memoria, indicar el valor de cada una de las etiquetas.

b) ¿Qu´e diferencia habr´ıa si se reemplaza la tercer instrucci´on por “Inicio: MOV R0, Valor”?

(3)

Ejercicio 8 La arquitectura ORGA1 posee operaciones aritm´eticas sobre n´umeros enteros codificados en notaci´on complemento a 2 de 16 bits de precisi´on.

El programasumar64realiza la suma en notaci´oncomplemento a 2 de dos n´umeros enteros de 64 bits en esta arquitectura. En los registros R0 y R1 se indican las direcciones de cada n´umero y enR2se indica la posici´on de memoria en donde debe guardarse el resultado. Tanto los par´ametros como el resultado se almacenan en ordenlittle-endian.

Se pide:

a) Escribir elpseudoc´odigo del programasumar64. b) Escribirsumar64en c´odigo assembler de ORGA1.

Ejercicio 9 sumaVector64 es una rutina que suma los valores de un vector de n posiciones de enteros de 64 bits codificados en notaci´on complemento a 2. En R0 se recibe la cantidad de elementos que tiene el vector y en R1 la posici´on de memoria en donde est´a almacenado dicho vector. En R3 se recibe la posici´on de memoria en donde debe guardarse el resultado. Los elementos del vector y el resultado se almacenan en orden little-endian.

Suponiendo que se cuenta con el programa sumar64 descripto en el ejercicio anterior, se pide:

a) Escribir elpseudoc´odigo del programasumaVector64.

b) EscribirsumaVector64en c´odigoassembler deORGA1(tener en cuenta las instrucciones de invocaci´on,CALL, y de retorno, RET).

Ejercicio 10 leftShiftes una rutina que decala a izquierda. Recibe como par´ametros el valor a shiftear en el registro R0 y la cantidad de posiciones en el registro R1 (entendido como un n´umero entero sin signo). El resultado final queda en el registro R0.

Se pide:

a) Escribir elpseudoc´odigo del programaleftShift.

b) Escribir leftShit en lenguaje assembler de ORGA1 (tener en cuenta las instrucci´on de retorno, RET).

c) Aparte de R0 y R1, ¿la rutina altera el valor de otros registros? Modifique el programa de modo que preserve el valor de todos los registros salvo R0 y R1.

Ejercicio 11 Dado el siguiente programa para la arquitecturaORGA1cargado en la direcci´on de memoria 0000h.

inicio: MOV R1, [[once]] ADD [R1], 0x479E CMP R1, R2 DW 0x0007 DW 0xFFEF rutina: JVS fin SUB R1, R2 fin: RET once: DW 0x000B cuatro: DW 0x0004

Si se empieza a ejecutar con los registros del procesador en su estado inicial (R0. . . R7, PC yflags en 0,SP en

FFEFh) y asumiendo que la ejecuci´on termina al intentar ejecutar una instrucci´on inv´alida, responder:

a) ¿Cu´al es la direcci´on de memoria denotada por cada etiqueta?

b) Realizar el seguimiento del programa indicando el es-tado de los registros,flags y valores delstack en cada paso. Liste en orden las instrucciones ejecutadas.

(4)

Arquitectura ORGA1

Descripci´on General

. Palabras de16 bits.

. Direccionamiento a palabra.

. Espacio direccionable de 65536 palabras.

. Espacio de direcciones dedicado a entrada/salida en las direcciones FFF0h-FFFFh.

. Ocho registros de prop´osito general de16 bits:R0..R7.

. Program counter (PC) de16 bits.

. Stack pointer (SP) de 16 bits. La pila comienza en la direcci´on FFEFh.

. Flags:Z (zero),N(negative),C (carry),V (overflow).

. Todas las instrucciones alteran los flags, excepto MOV,CALL,RET,JMP yJxx.

. De las que alteran los flags, todas dejan C y Ven cero, excepto de ADD,SUB,CMP y

NEG.

Formato de instrucci´on

Tipo 1: Instrucciones de dos operandos

4 bits 6 bits 6 bits 16 bits 16 bits

cod. op. destino fuente constante destino(opcional) constante fuente(opcional)

operaci´on cod. op. efecto MOVd,f 0001 d← f

ADDd,f 0010 d← d+f (suma binaria) SUB d,f 0011 d← d−f (resta binaria) AND d,f 0100 d← dandf

ORd,f 0101 d← dor f

CMP d,f 0110 Modifica los flags seg´un el resultado de d−f (resta binaria)

ADDC d,f 1101 d← d+f +carry (suma binaria)

Formato de operandos destino y fuente.

Modo Codificaci´on Resultado

Inmediato 000000 c16 Directo 001000 [c16] Indirecto 011000 [[c16]] Registro 100rrr Rrrr Indirecto registro 110rrr [Rrrr] Indexado 111rrr [Rrrr + c16]

c16 es una constante de16 bits.

Rrrr es el registro indicado por los ´ultimos tresbits del cdigo de operando. Las instrucciones que tienen como destino un operando de tipo inmediato son consi-deredas como inv´alidas por el procesador, excepto elCMP.

Tipo 2: Instrucciones de un operando Tipo 2a: Instrucciones de un operando destino.

4 bits 6 bits 6 bits 16 bits

cod. op. destino 000000 constante destino(opcional)

operacin cod. op. efecto

NEG d 1000 d← 0 −d(resta binaria)

(5)

El formato del operando destino responde a la tabla de formatos de operando mostrada ms arriba.

Tipo 2b: Instrucciones de un operando fuente.

4 bits 6 bits 6 bits 16 bits

cod. op. 000000 fuente constante fuente(opcional) operacin cod. op. efecto

JMP f 1010 PC ← f

CALL f 1011 [SP] ← PC, SP ←SP− 1, PC← f

El formato del operando fuente responde a la tabla de formatos de operando mostrada ms arriba.

Tipo 3: Instrucciones sin operandos

4 bits 6 bits 6 bits cod. op. 000000 000000 operacin cod. op. efecto

RET 1100 PC ← [SP+1], SP ←SP + 1 Tipo 4: Saltos condicionales

Las instrucciones en este formato son de la forma Jxx (salto relativo condicional). Si al evaluar la condici´on de salto en losflags el resultado es 1, el efecto es incrementar el PCcon el valor de los8 bits de desplazamiento, representado encomplemento a 2 de 8 bits. En caso contrario la instrucci´on no produce efectos.

8 bits 8 bits cod. op. desplazamiento

Codop Operacin Descripcin Condici´on de Salto

1111 0001 JE Igual / Cero Z

1111 1001 JNE Distinto not Z

1111 0010 JLE Menor o igual Z or ( N xor V )

1111 1010 JG Mayor not ( Z or ( N xor V ) )

1111 0011 JL Menor N xor V

1111 1011 JGE Mayor o igual not ( N xor V ) 1111 0100 JLEU Menor o igual sin signo C or Z

1111 1100 JGU Mayor sin signo not ( C or Z ) 1111 0101 JCS Carry / Menor sin signo C

1111 0110 JNEG Negativo N

1111 0111 JVS Overflow V

¿C´omo altera los flags?

Sear el resultado de una instrucci´on que modifica los flags, el nuevo valor es el que sigue:

Z=1 ↔r = 0x0000.

N=1 ↔el bit m´as significativo der es igual a 1.

C=1↔ se produjocarry durante una suma binaria oborrow durante una resta binaria.

V=1 ↔ la suma de dos n´umeros con signo produce un n´umero sin signo (S+S = S) ´

o la suma de dos n´umerossin signo produce un n´umero con signo (S+S=S) ´o alguna analog´ıa con la resta (S−S=S ´oS−S =S)

(6)

Planilla de Seguimiento

Organizaci´on del Computador 1

PC Flags SP [SP+1] IR Instrucci´on (1er

palabra) PC fetch 2da PC fetch 3er PC Instrucci´on Ejecuci´on

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Missing estimates for total domestic participant spend were estimated using a similar approach of that used to calculate missing international estimates, with average shares applied

We have created this abstract to give non-members access to the country and city rankings — by number of meetings in 2014 and by estimated total number of participants in 2014 —

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de