Semestre Otoño`2007

Anuncio
CC41C Introducción al Hardware
Control 2 - Otoño 2007
Profesor: Luis Mateu
Pregunta 2
Se desea agregar la instrucción SWAP a M32:
Notación Assembler
Pregunta 1
Parte a.- El siguiente es un programa en assembler x86. Escriba el programa
equivalente en C sin usar las instrucción goto de C. Preocúpese de reproducir
en C el o los bugs que contenga el programa en assembler.
.text
.globl unknown
unknown:
pushl
%ebp
movl
%esp, %ebp
movl
8(%ebp), %eax
movl
12(%ebp), %edx
cmpl
$0, %eax
je
.L2
cmpl
(%eax), %edx
je
.L2
.L7:
movl
cmpl
je
cmpl
jne
8(%eax), %eax
$0, %eax
.L2
%edx, (%eax)
.L7
movl
popl
ret
4(%eax), %eax
%ebp
.L2:
Parte b.- La siguiente figura muestra un procesador y su memoria:
RD
WR
A23-A1
A20-A1
A23-A21
A20-A1
A23-A17
A16-A1
CPU
A19-A0 RD WR
CS
D7-D0
D7-D0
A19-A0 RD WR
A15-A0 RD
CS
CS
D7-D0
D15-D8
D15-D0
D15-D0
D15-D0
Conteste las siguientes preguntas:
i. ¿De qué tamaño es la RAM y en qué rango de direcciones se ubica?
ii. ¿De qué tamaño es la ROM y en qué rango de direcciones se ubica?
iii. ¿Cuanta es la máxima cantidad de memoria que puede direccionar el
procesador?
iv. ¿Por qué el procesador no tiene la línea de dirección A0?
v. ¿Después de encenderse el procesador, qué puede decir acerca de la
ubicación de la primera dirección de memoria en ser leída?
SWAP [reg1 + imm], regd
Formato
instrucción
31
24
18 14
12
0
SWAP regd reg1 1 imm
23 19
SWAP [reg1 + reg2], regd
Significado
31
24
SWAP regd reg1
23 19
Mem[reg1+{imm|reg2}]= regd
13
18 14
12
0
13
aux= Mem[reg1+{imm|reg2}]
8
regd= aux
reg2
7
0
La instrucción SWAP intercambia el valor de un registro con el de una
palabra en memoria.
(a) Explique por qué no es posible implementar esta instrucción con el actual
diseño de M32.
(b) Modifique ligeramente M32 de tal forma que sí se pueda implementar
SWAP, especificando componentes y señales de control adicionales
(redibuje sólo la parte de M32 que cambia).
(c) Especifique ciclo por ciclo las señales de control que son necesarias para
ejecutar SWAP (no es necesario que especifique las señales para la carga
de la instrucción y la decodificación).
Observación: La señal de control RD-DEST (de R-SEL) controla si el
registro regd se va a leer (caso 1) o escribir (caso 0).
Descargar