You are on page 1of 54

UNIVERSIDAD DE CORDOBA

ESTRUCTURA DE COMPUTADORES
UNIDAD II
INTRUCCIONES: LENGUAJE MAQUINA
1.- INTRODUCCION

Conceptos importantes

Instruccin: Orden al hardware del


Computador

Repertorio de Instrucciones

Lenguaje Mquina (ML)

Lenguaje nsam!lador ("L)

Lenguaje de "lto #i$el (%LL)


1 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

O!jeti$o en el dise0o del Repertorio de Instrucciones

1acilitar la implementacin hardware

Importante en maquinas actuales

1acilitar el dise0o del Compilador

Optimi2ar el Rendimiento 3 el Coste


O!jeti$o de este Cap4tulo
Considerar un Repertorio de Instrucciones con esos o!jeti$os
Relacin entre %LL 3 "L
$olucin histrica del Repertorio de Instrucciones
Consideraremos el Repertorio de Instrucciones de los .rocesadores MI./
2 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
2.- OPERACIONES DEL HARDWARE DEL COMPUTADOR
Operaciones "ritm5ticas
add a, b, c (MIPS)
#otacin mu3 r4gida6 siempre tres operandos
jemplo de suma de 7 $alores
add a, b, c
add a, a, d
add a, a, e
.rincipio )#O de 'ise0o
LA SIMPLICIDAD FAVORECE LA REGULARIDAD
3 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
Instrucciones MI./ introducidas
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
Relacin entre %LL 3 "L
jemplo 8
%LL:
a = b + c
d = a - e
"L:
add a, b, c
sb d, a, e
jemplo 9
%LL:
! = (" + #) - ($ + %)
"L:
add &', ", #
add &1, $, %
sb !, &(, &1
) &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
3.- OPERANDOS DEL HARWARE DEL COMPUTADOR
/olo $aria!les !inarias
"lmacenadas en Registros
longitud: :9 !its
n;mero limitado: :9 registros (<=> <8>?????????> <:8)
casi de .ropsito ,eneral
.rincipio 'O/ de 'ise0o: @ustiAicacin del uso de Registros
LO MAS PEQUEO ES MAS RAPIDO
Relacin entre %LL 3 "L
jemplo
%LL:
! = (" + #) - ($ + %)
"L: asignacin6 A> g> h> i> 3 j <8B> <8C> <8D> <8E 3 <9=
* &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
add +,, +1-, +1,
add +., +1., +2'
sb +1/, +,, +.
<D 3 <E act;an como Registros temporales
.ara tratamiento de structuras de 'atos
#;mero de Registros peque0o
"lmacenamiento en Memoria
#ecesidad de Instrucciones de *ransAerencia de datos
/uministro de la direccin
Carga (Load): M R
01 +R, P2&e3( (+S) F <R .untero G </
/ &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"lmacenar (/tore) M R
s1 +R, P2&e3( (+S) F .untero G </ <R
Relacin entre %LL 3 "L
jemplo de C"R,"
%LL
" = # + A4$5
"L: asignacin g> h> i <8C> <8D 3 <8E
direccin de "rra3 "start
registro temporal: <D
jemplo de "LM"C#"MI#*O

%LL
A 4$5 = # + A 4$5
- &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
01 +,, As&a3& (+1.)
add +1-, +1,, +,
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"L
01 +,, As&3a& (+1.)
add +,, +1,, +,
s1 +,, As&a3& (+1.)

Histen Instrucciones de transAerencia de D 3 8B !its

Operandos MI./
, &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Instrucciones MI./ introducidas


. &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
4.- REPRESENTACION DE LAS INSTRUCCIONES EN EL COMPUTADOR

/e representan mediante com!inaciones !inarias de una longitud Aija

ejemplo
add +,, +1-, +1,

/igniAicado de los campos en la Instruccin de suma


(6: cdigo de operacin: B !its 3d: operando destino: I !its (Registro)
3s: primer operando Auente: I !its (Registro) s#a7&: despla2amiento (no en esta operacin): I !its
3&: segundo operando Auente: I !its (Registro) !2c&: $ariedad de la operacin: B !its
1' &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

.rincipio *R/ de 'ise0o:


UN BUEN DISEO DEMANDA COMPROMISOS

.ro!lemas para Instrucciones que necesitan campos ma3ores

Instrucciones de carga han de especiAicar dos registros

1ormato I (immediato) en lugar del R (registro)


01 3&, D$3ecc$82 (3s)

aqu4 3& es destino


11 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

CodiAicacin de instrucciones MI./

el campo primero indica el Aormato (R I)

jemplo de codiAicacin de las instrucciones en MI./

%LL:
A4$5 = # + A4$5

"L:
01 +,,12''(+1.)
add +,,+1,,+,
s1 +,,12''(+1.)
O@O: diAerencias entre la primera 3 la tercera slo en un !it del O.CO'
12 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"rquitectura MI./
re$elada
13 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
.- INSTRUCCIONES PARA TOMAR DECISIONES

%echo cla$e que caracteri2a a un computador es la toma de decisiones

%acer una secuencia u otra en Auncin de

unos $alores de entrada

resultados de clculo

MI./ inclu3e dos instrucciones de toma de decisiones

Instrucciones de salto condicional


be9 R1,R2,:1 F /alta a L8 si es igual
b2e R1,R2,:1 F /alta a L8 si no es igual

jemplo:
%LL:
I! ($ == %) "(&( :1;
!="+#;
:1< !=!-$;
1) &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
"L: asignacin de registros A> g> h> i> j <8B>???><9=
be9 +1.,+2',:1
add +1/,+1-,+1,
:1< sb +1/,+1/,+1.

jemplo de !ucle:
%LL:
:((6< " = " + A4$5;
$ = $ + %;
$! ($ == #) "(&( :((66
"L: asignacin de registros g>h>i>j <8C>???> <9=
asignacin de $alor 7 <8= (tama0o :9 !its)
:((6< 70& +.,+1.,+1'
01 +,,As&a3&(+.)
add +1-,+1-,+,
add +1.,+1.,+2'
b2e +1.,+1,,:((6
1* &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

jemplo de while:
%LL:
1#$0e (sa>e4$5 == ?)
$ = $ + %;
"L:
:((6<70& +.,+1.,+1'
01 +,,Ss&a3&(+.)
b2e +,,+21,E@$&
add +1.,+1.,+2'
% :((6
E@$&< AAA
1/ &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Instrucciones para comparacin de una $aria!le menor que otra


s0& +,,+1',+2'

Compara contenido de <8E 3 <9=


s$ +1. B +2' 1 e2 +,
s$ +1. C= +2' ' e2 +,

Como <= es siempre = puede usarse para comparaciones

MI./ no implementa !lt (saltar so!re menor que)

Lo implementa con dos instrucciones


s0& +1,+1/,+1- D +1 a 1 s$ +1/ B +1-
b2e +1,+',:ess D >a a :ess s$ +1 == '
salta a Less si el contenido de <8B es menor que el de <8C

s preAeri!le dos instrucciones rpidas a complicar todo el hardware con una sola
1- &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Instrucciones para implementar las sentencias C"/ o /JI*C%

MI./ inclu3e una instruccin jr (salto K registro)

jemplo:
%LL:
s1$&c#(?)E
case '< ! = $+%; b3ea?6 LM N O = ML
case 1< ! = "+#; b3ea?; LM N O 8 ML
case 2< ! = "-#; b3ea?; LM N O 9 ML
case 3< ! = $-%; b3ea?; LM N O : ML
F
1, &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
"L: asignacin A>g>h>i>j>N <8B> ???> <98
:((6< 70& +.,+1.,+21 F <E O NM7
01 +,,G76&ab0e(+.)
%3 +,
:'< add +1/,+1.,+2'
% E@$&
:1< add +1/,+1-,+1,
% E@$&
:2< sb +1/,+1-,+1,
% E@$&
:3< sb +1/,+1.,+2'
% E@$&
E@$&< AAA
@umpta!le: ta!la de direccin de saltos
jr <D: salta a la direccin contenida en el registro <D?
1. &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
"rquitectura MI./ presentada
2' &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
!.- SOPORTAR PROCEDIMIENTOS EN EL HARDWARE DEL COMPUTADOR

Importancia de los procedimientos o su!rutinas

Instrucciones que lo permitan

/alto al procedimiento

Retorno a la instruccin siguiente a la llamada


%a0 63(ced3eAdd3ess Pjump and linNQ
direccin de $uelta en <:8: .CG8 <:8
para $ol$er: jr <:8

"nidamiento de llamadas a procedimiento

<:8 almacena en la pila (necesidad de puntero de pila)

direccin de $uelta en <:8

"lmacenar en .ila (.ush)

/acar de la .ila (.op)


21 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

jemplo: )n procedimiento " llama al procedimiento R 3 5ste a su $e2 al C

.untero de pila usar el <9E 3 en <97 el $alor de ajuste de la pila


": AAA
%a0 B F Llama al procedimiento R
AAA
R: AAA
add +2., +2., +2) F ajusta la pila
s1 +31,'(+2.) F guarda direccin de $uelta
%a0 C
AAA
01 +31,'(+2.) F restaurar direccin de $uelta
sb +2.,+2.,+2) F ajustar la pila
AAA
%3 +31
C: AAA
%3 +31
22 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
23 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
2) &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/

.aso de parmetros o argumentos en la llamada

Con$enio /oAtware de usar <7> <I> <B 3 <C


para parmetros

/i ha3 mas uso de .ila

"lmacenamiento en .ila al anidar llamadas

.ol4ticas so!re modiAicacin de Registros en los


.rocedimientos

,uarda In$ocador (Caller /a$e)

,uarda In$ocado (called /a$e)

.ol4tica de acelerar llamadas a .rocedimientos

$itar guardar 3 restaurar Registros

Con$enio /oAtware de MI./

Registros como In$ocador guardado

#o preser$ado en la llamada

Registros como In$ocado guardado

.reser$ado en la llamada

Con$enio histrico en el manejo de la .ila

"lmacenamiento con predecremento del /.


Recuperacin con postincremento del /.
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"rquitectura MI./ re$elada


2* &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
".- OTROS DIRECCIONAMIENTOS

O!jeti$os suma de constantes (p? ej? 7) a un registro

Rapide2 en acceso a ctes peque0as

"umentar la eAicacia de los saltos

Operando constantes o inmediatos

,ran importancia de estos operandos (ctes)?

I9S en el compilador gcc

BES en el /pice

M5todo de acceder a ellos hasta ahora

coger la constante en memoria para utili2arla


01 +2), D$3ecc$82 c(2s&a2&e ) (+')
add+2., +2., +2)
suma la constante 7 al registro 9E
2/ &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Introduccin de un direccionamiento inmediato (8B!its)


add$ +2., +2., ) F <9E O <9E G 7

Aormato MI./ de addi

Otras intrucciones con direccionamiento Inmediato

La de iniciali2ar so!re menor que


s0&$ +,, +1,, 1' F <D O 8 si <8D T 8=
2- &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

.rincipio de dise0o C)"*RO


HACER COMUN EL CASO RAPIDO

"l hacer la constante parte de la instruccin es ms rpida

Cargar constantes de $alor grande

*area del nsam!lador o Compilador

Carga inmediata superior (load upper inmediate)


0$ +,, 2** F <D ==AA====
2, &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

jemplo:
Carga la constante ==:'=E== en <8B
0$ +1/, /1 F B8

==:'(%eH)
add$ +1/, +1/, 23') F 9:=7

'E==(%eH)

'ireccionamientos en saltos 3 !iAurcaciones

RiAurcaciones incondicional o salto (@)

B !it de opcode 3 el resto para direccin


G 1'''' F salta a la pasicin 8====
2. &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

RiAurcacin condicional (!ranch)

B !it opcode> 8= para dos operando 3 8B para direccin


b2e +,, +21, E@$& F ir a Hit si <D

<98

.ro!lema: salto solo B7U primeros de direccin?

/altos relati$os a un registro

'ireccin !ase en registro ms despla2amiento de hasta 9


8B

Vtil en !ucles?

/altos relati$os al .C

Contenido del .C ms despla2amiento de

9
8I

.ara direcciones cercanas


3' &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

/alto de !iAurcacin 3 !iAurcacin 3 enlace

Vtil para saltos largos

.osi!ilidad de salto largos condicionales

Com!inar condicional 3 !iAurcacin


b2e +1,, +1., :((62
G :((61
:((62< AAAAAA
equi$alente a !eq <8D> <8E> Loop8
31 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Resumiendo los modos de direccionamiento


$istos:
8? 'ireccionamientos de registros:
Operando en registros
9? 'ireccionamiento !ase o de
despla2amiento?(direccionamiento
indirecto)
Operando en posicin de
memoria
:? 'ireccionamiento inmediato?
Operando immediato constante
en la instruccin
7? Relati$os al .C
'ireccin .C ms constante en
la instruccin?
32 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"rquitectura MI./ re$elada?


33 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
#.- ALTERNATIVA A LAS APRO$IMACI%NES DE MIPS

Otras maquinas presentan un repertorio diAerente

.roponen:

Ms instrucciones

Ms complejas o potentes

Consecuencias

'isminu3en el nW de instrucciones de un programa

LentiAica la ejecucin de instruccin?

Ms ciclos de reloj por instruccin

Ciclos de reloj ms lentos

Instrucciones con autoincremento 3 autodecremento

"cceso a $ectores ( "rra3s ) de datos


3) &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"utoincremento

'os instrucciones (MI./)


01 +,, Ss&a3& (+1.) F <D start G <8E
add$ +1., +1., ) F <8E <8E G 7

qui$alente como autodecremento


01+ +,, Ss&a3& (+1.)
3* &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

.ara el autodecremento es similar

)tilidad para acceso a memoria tipo pila

Operandos almacenados en memoria para operaciones

Com!inan operaciones de carga con operaciones aritm5ticas?

'os instrucciones (MI./)


01 +,, As&a3& (1.)
add+1/, +1-, +,

)na sola con operando en memoria


add7 +1/,+1-, As&a3& (+1.)

Incon$eniente de que rompa la regularidad

Instrucciones de diAerentes tama0os (BD===> X"Y>Z)

.ro!lemas con $arios operandos en memoria (mu3 larga)


3/ &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Operaciones complejas

Rusqueda de secuencia de operacciones que se presenten Arecuentemente 3 sustituirla


por una sola

Instruccin que haga todo para llamada a procedimiento

,uarda al .C> registros 3 ajuste de pila

Instruccin de incremento compara 3 salta

ejemplo para MI./


:((6< AAAAAAA
add$ +1., +1., 1 F <8E <8EG8
s0& +,, +1., +2' F <D O8 si <8E T <9=
b2e +,, +', :((6 F ir a Loop si <D

en otra mquina
:((6< AAAAAAA
$cb +1., +2', :((6 F <8E <8EG8 6
F si <8E T <9= ir a Loop

%a!r4a que hacer con 8> 9> 7 3 D seg;n el incremento que se genere

se complica ( lentitud)
3- &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
&.- E'EMPLO COMPLETO I
Xamos a $er el cdigo en ensam!lador (MI./) para un procedimiento en C

.rocedimiento C: Intercam!io de dos posiciones de memoria


s1a6($2 > 4 5, $2& H)
E $2& &e76;
&e76 = > 4?5;
>4?5 = > 4?+15;
> 4?+15= &e76;
F

*raduccin al ensam!lador: 1ases


8) "signacin de registros a las $aria!les
9) Cdigo del cuerpo del procedimiento?
:) .reser$ar registros en la llamada a procedimiento
3, &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"signacin del registro

Registro por paso de parametros <7> <I> <B> 3 <C

'os parametros X <7 3 N<I

Xaria!le temp <8I

Cdigo por el cuerpo del procedimiento

Cuerpo
&e7 = >4?5;
>4?5 = > 4?+15;
>4?+15 = &e766

*raduccin:
70$ +2, +*, ) F <9 ON M 7 (op? de 7 !3tes)
add +2, +), +2 F <9 $ G 7MN $[N\
01 +1*, ' (+2) F <8I (temp) O $[N\
01 +1/, ) (+2) F <8B O $ [NG8\
s1 +1/, ' (+2) F $[N\ O <8B
s1 +1*, ) (+2) F $[NG8\ O <8I (temp)

3. &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

.reser$ar los registros de la llamada de procedimiento

.ol4tica de guardar el in$ocado

/e usan <9> <8I 3 <B

<9E es el puntero de pila

"juste de la pila
add$ +2., +2., -12 F crece hacia a!ajo

almacena registros usados


s1 +2, ' (+2.)
s1 +1*, ) (+2.)
s1 +1/, , (+2.)
al Ainal se de!en restaurar esos registros
)' &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
Cdigo de nsam!lador
MI./ para el
procedimiento /J".
)1 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
1(.- ARRA)S FRENTE A PUNTEROS

Xamos a $er el cdigo Auente 3 ensam!lador de procedimientos que !orran una secuencia de
pala!ras de memoria

Codigo en %LL
)tili2ando 4ndice de arra3
c0ea3 1 ($2& a33aI 4$5, $2& s$Je)
E
$2& $;
!(3 ($ = '; $ B s$Je; $ =$+1)
a33aI 4$5 = ';
F
)2 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
)tili2ando puntero
c0ea3 2 ($2& K a33aI, $2& s$Je)
E
$2& K6;
!(3 (6= L a33aI 4M5; 6 B L a33aI4s$Je5; 6=6+1)
K6 = ';
F

Cdigo MI./

)tili2ando un arra3

"signacin: arra3 3 si2e se asigna a <7> <I6 i se asigna a <9


7(>e +2, +' F i O =
:((61< 70& +1), +2, ) F <87 O iM7
add +3, +), +1) F <: O arra3 [i\ (direccin)
s1 +', ' (+3) F arra3[i\O=
add$ +2, +2, 1 F iOiG8
s0& +/, +2, +* F <B O 8 si i T si2e
b2e +/, +', :((61 F si i T si2e $a a Loop8
)3 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
Cdigo MI./
)tili2ando punteros
"signacin: arra3 3 si2e se asigna a <7> <I6 p se asigna a <9
7(>e +2, +) F p O direc? de arra3 [=\
:((62< s1 +', ' (+2) F memoria [p\ O =
add$ +2, +2, +) F p O pG7
70$ +1), +*, ) F <87 Osi2eM7
add +3, +), +1) F <: O direc? de arra3 [si2e\
s0& +/, +2, +3 F <B O 8 si p T arra3 [si2e\
b2e +/, +', :((62 F si <B O 8 $e a Loop9
l clculo de los dems arra3 [si2e\ sacado Auera del la2o
7(>e +2, +)
70$ +1), +*, )
add +3, +), +1)
:((62< s1 +', ' (+2)
add$ +2, +2, )
s0& +/, +2, +3
b2e +/, +', :((62
)) &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
Los dos cdigos generados
move $2,$0 # i=0 move $2,$4 #p=& array[0]
Loop1:muli $14,$2,4 #14=i*4 muli $14,$5,4 #$14=size*4
add $,$4,$14 # $=! array[i] add $,$4,$14 #$=!array[size]
s" $0,0#$$ #arrayl:i]=0 Loop2: s" $0,0#$2$ # %emory[p]=0
addi $2,$2,1 # i=i&1 addi $2,$2,4 # p=p&4
sl' $(,$2,$5 #$(=)i)size$ sl' $(,$2,$ #$(=#p)&array[size]$
*+e $(,$0,Loop1 # si #$ ir a Loop1 *+e $(,$0, Loop2 # si #$ ir a Loop2
.or cada iteracin
B Instrucciones en el cdigo de arra3
7 Instrucciones en el cdigo punteros?
)* &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
11.- COMENTARIOS ADICIONALES

Instrucciones ms potentes signiAican ma3or rendimiento

jemplo con instrucciones X"Y

Llamada a procedimientos en una sola instruccin

/e o!tendr un programa 8>9 $eces ms rpido que usando llamadas normales?

scri!ir en lenguaje ensam!lador para o!tener ma3or rendimiento

'iA4cil ho3 d4a con los modernos compiladores

Comparacin de los .roced? /OR* 3 /J"*

rror al ol$idar que la direcciones secuenciadas de las pala!ras en mquinas con


direccionamiento en !3tes no diAieren en 8
)/ &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
12.- OBSERVACIONES FINALES

.rincipios del computadora de programa almacenado que les hace de propsito general

)so de instrucciones> indistingui!les de los n;meros

)so de memoria altera!le por los programas?

.rincipio que gu4an a los dise0adores del repertorio de instrucciones

Ms peque0o es ms rpido

)so de registros

La simplicidad Aa$orece la regularidad

Instrucciones de ;nico tama0o

Conser$ar los campos de registro en una misma posicin


)- &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

)n !uen dise0o demanda compromisos

Instrucciones de igual longitud] o constantes 3 direcciones grandes]

%acer rpido el caso com;n

'ireccionamiento relati$o al .C para saltos

'ireccionamiento inmediatamente para constantes

l lenguaje ensam!lador

#i$el por encima del cdigo mquina

1cil de recordar

l ensam!lador traduce a cdigo mquina

.uede crear instrucciones sim!licas que no eHisten

.or ejemplo: almacenar constantes grandes?


), &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

La instruccines MI./ tratadas

Categor4a

Correspondencia con L"# (MIL)

1recuencia en Auncin del programa


). &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II
13.- PERSPECTIVA HISTORICA?

.rimeros computadores eran arquitecturas estilo "cumulador

'/"C (8E7E)

Costoso del %ardware

)n solo registro que acumula!a resultados6 1uente 3 destino a la $e2

Modo de direccionamiento de operando directo


add 2''' F "cc G (9===) "cc

jemplo de traduccin de cdigo

Cdigo 1uente
A = B + C;
*' &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Cdigo nsam!lado

Computadores posteriores con conjuntos de registros dedicados

Cada registro para datos u operacin especiAica (D=DB)

Computadores en conjunto de registro de propsito general

"rquitectura registro K memoria (BD===> IRM :B=)

"dmite operando en memoria

"rquitectura registro K registro (MI./) C'C BB== (8EB:)

*am!i5n conocida por cargaK almacenamiento


*1 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Computadores que permiten todos los operandos en memoria

"rquitectura memoriaK memoria (X"Y de 'C?8ECC)

Computadores de arquitectura modelo pila

Los operandos en pila (%ewlettK.acNard)

Resol$er el pro!lema de una mala asignacin de registros

jemplo de traduccin de cdigo

Cdigo 1uente
A = B + C;

Cdigo
nsam!lado
*2 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

Computadores con instrucciones de diAerente longitud

Intel D=DB> IRM :B= (9>7> B !3tes)> X"Y (8 a I7 !3tes)

"pro$echar mejor la memoria

'iAerentes tipos de "rquitecturas


*3 &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/
UNIVERSIDAD DE CORDOBA
ESTRUCTURA DE COMPUTADORES
UNIDAD II

"paricin de arquitectura de computadores de lenguaje de alto ni$el

%acer los lenguajes 3 los compiladores ms eAicientes

1ilosoA4a CI/C

"paricin de arquitectura RI/C ( los ochenta)

Computadores con conjunto de instrucciones reducido

"lgo ms proAundo que solo pocas instrucciones

MI./> /)# /."RC> %ewlett .acNard %.."

IRM .OJR .C 'C "L.%"> etc???


*) &R" ' "R()*IC*)R" + *C#OLO,-" ' COM.)*"'OR/

You might also like