1,5 puntos

Anuncio
Makina-Lengoaia
Lenguaje Máquina
1.-
Informatika Fakultatea EHU
11-VI-2007
(1,5 puntos)
A continuación se muestra un extracto del programa principal y de la subrutina SUB
Programa Principal
…….
mova sp, pila
movi r3, #3
ldx r2, var[r3]
push r2
call SUB
subi sp,sp,#1
.......
Subrutina SUB
else:
finif:
push r2
ldd r2, -2[sp]
bge r2, else
jmp finif
addi r2, r2, #5
pop r2
ret
El programa principal tiene definidas las siguientes variables, que están cargadas a
partir de la dirección 100 de memoria.
pila: word 50;
var: value 26, 109,0, 6, -5, 9, 32,7;
El programa principal se almacena a partir de la dirección 13700 y la subrutina a partir
de la dirección 15000. Completa la traza de ejecución de las instrucciones del programa
principal y de la subrutina SUB que se ejecuten, tal y como lo hace el simulador de la máquina
BIRD.
2.-
13700 mova sp, pila
R__[_____] R__[_____] R__[_____] @M:_____ CM:_____
_____
R__[_____] R__[_____] R__[_____] @M:_____ CM:_____
(1,25 puntos)
Dado el siguiente contenido de un segmento de memoria, en el que los datos se almacenan
mediante ordenación big-endian:
@1100h-> +
01
C0
04
40
00
00
80
11
1E
1A
80
12
FF
25
01
F3
00
F0
02
B4
02
0F
FF
FF
65
A1
FF
D8
20
05
FE
01
FF
65
FF
59
FF
00
20
21
a).¿Qué cambios se producen en el segmento anterior al almacenar en la dirección 110Ah
el número -126 representado en codificación por exceso y utilizando un byte?
b).En la dirección 111Ah, se ha representado un número mediante codificación C-1 y
utilizando dos bytes. ¿De qué número se trata?
c).¿Qué número real se encuentra representado el la dirección 1101h, sabiendo que se
ha seguido el estándar IEEE, con 10 bits para la mantisa y 6 para el exponente?
Makina-Lengoaia
Lenguaje Máquina
3.-
Informatika Fakultatea EHU
11-VI-2007
(1,5 puntos)
En un ordenador con direccionamiento al byte, palabras de 2 bytes, que utiliza ordenación bigendian, el contenido de 40 posiciones consecutivas de memoria a partir de la dirección 2012h
es el siguiente. El bus de direcciones es de 16 bits. Para los números enteros se utiliza
representación en C2.
@2012h Æ +
21
20
2D FF 01
01
20 28
FF
2A
FF
D0 00
21 12
80
A4 1A
21
21
BB 4D D5 FF 01
B4
37 84
A1
12
20
1B
F1
F1 FF
FF
01 01
82
28
El contenido inicial de los registros es el siguiente:
R1 = 2018
R2 = 0008
y la siguiente tabla de simbolos:
Símbol
o
VAR1
VEC
R3 = 2030
@
202E
2012
refleja claramente TODOS los efectos que producen las instrucciones:
1.- MOVB
2.- MOVW
3.- MOVB
VAR1, -5(R1)
(R3)+, R4
#-1, (R4)
4.- MOVD
5.- MOVB
6.- MOVW
VEC(R2), VAR1
R4(R2), -(R3)
((R1)), @202B
La instrucción MOVB mueve un byte del primer operando al segundo, la instrucción
MOVW mueve una palabra y la instrucción MOVD mueve una doble palabra. Los símbolos
utilizados en los direccionamientos son:
#dato Æ inmediato,
@dir, Símbolo Æ absoluto,
Rn Æ directo de registro,
d(Rn) Æ relativo,
@dir(Rn), Símbolo(Rn) Æ indexado,
(@dir) Æ indirecto de memoria,
(Rn) Æ indirecto de registro de primer orden,
((Rn)) Æ indirecto de registro de segundo orden,
-(Rn) y (Rn)- Æ indirecto de registro de primer orden con autodecremento,
+(Rn) y (Rn)+ Æ indirecto de registro de primer orden con autoincremento,
Rn(Rm) Æ registro base más registro índice.
4.-
(1 punto)
Se desea calcular una expresión matemática en dos máquinas, una de un operando (máquina de
acumulador) y otra sin operandos (máquina de pila).
Se pide:
Escribir el programa correspondiente a cada máquina que calcule la siguiente expresión:
X = (A+B/C)-(A*D)
Makina-Lengoaia
Lenguaje Máquina
5.-
Informatika Fakultatea EHU
11-VI-2007
(2,25 puntos)
Tenemos una máquina de 2 operandos con las siguientes características:
•
El juego de instrucciones consta de 57 instrucciones y el código de operación es de longitud
fija. La máquina tiene 64 registros generales (con un único bus de lectura) y una memoria de 128
Mbytes, con direccionamiento al byte. El mayor valor inmediato que se puede representar en C2 es
el 1023. La palabra es de 2 bytes y los modos de direccionamiento permitidos son 4: inmediato,
directo de registro, absoluto e indexado. Tanto los datos como el bus de datos son del tamaño de
una palabra.
•
El tiempo de lectura en memoria es de 50 ns, mientras que una escritura en memoria tarda
70 ns. El acceso al banco de registros, tanto lectura como escritura, es de 5 ns. Cada operación en
la ALU tarda 30 ns y la descodificación 10 ns.
Se pide:
a).- ¿Cuántos bytes ocupa el siguiente programa? Explicando como lo obtienes.
b).- ¿Y cuantos ciclos tardará en ejecutarse? Ten en cuenta que el primer operando es siempre
el operando destino.
mov
mov
add
mul
mul
mov
r2,#5
r1,A
r1,r2
r1,#7
r2, A[r1]
B[r1], r2
Makina-Lengoaia
Lenguaje Máquina
6.-
Informatika Fakultatea EHU
11-VI-2007
(2,5 puntos)
a).-
Teniendo en cuenta las siguientes definiciones:
A: .value 5;
B: .value -4,2,3,9,-1;
donde B es un vector. Escribe en lenguaje ensamblador TXORI el programa que realiza la
siguiente llamada:
C
printf (“%d”,SUB1(B,A));
ADA
Put (SUB1(B,A));
b).- Codifica en ensamblador TXORI el código correspondiente a la subrutina SUB1 (no es
necesario traducir también SUB2). Dibuja la pila con los bloques de activación correspondientes
a las subrutinas SUB1 y SUB2, indicando claramente la posición y la dirección relativa que
ocupan los diferentes datos a los que se accede en la ejecución de las rutinas (parámetros,
variables locales, etc.)
Código C
Código ADA
int SUB1(int *vec, int num)
{ int i, aux;
aux=0;
for (i=0;i<num;i++)
{
SUB2(&vec[i])
aux= aux+ vec[i];
}
return(aux);
}
type VECTOR is array (0..5) of integer;
function SUB1 (vec:in out VECTOR;
num: in integer) return integer is
i,aux: integer;
begin
for i in 0 .. num-1 loop
SUB2(vec(i));
aux= aux+ vec(i);
end loop;
return aux;
end SUB1;
void SUB2(int *var)
{
…
}
procedure SUB2 (var:in out integer) is
begin
…
…
end SUB2;
Descargar