Está en la página 1de 34

4

CONJUNTOSDEINSTRUCCIONES
4.1. Introduccin
Enestecaptuloestudiaremoslosdistintostiposdeinstruccionesdequeconstanlosjuegos
deinstruccionesdelosordenadores.Severnconespecialinterslasinstruccionesdecontrol
delujodelprograma(bifurcaciones,bucles,procedimientos,etc.).
Tambinseestudiarnlosprincipiosylosofadediseodelosordenadoresconconjunto
reducidodeinstrucciones(RISC).

4.2. Caractersticasgeneralesdelosconjuntosdeinstrucciones
Anteeldiseodeunnuevoordenadordepropsitogeneralhayqueplantearselasiguiente
cuestin: Qu tipos de instrucciones deben ser incluidos en su conjuntos de instrucciones?
Antesderesponderaestapregunta,analizaremoslascaractersticasquedebentenerlosjuegos
deinstruccionesdelasmquinas.
Losconjuntosdeinstruccionesdelasmquinasdebentenderaposeerunaseriedepropiedades,bastanteidealeseimprecisas,quepuedenresumirseenlassiguientes:
completoenelsentidodeque
Elconjuntodeinstruccionesdeuncomputadordebeser
se pueda construir un programa para evaluar una funcin computable usando una cantidad de memoria razonable y empleando un tiempo moderado, es decir, el nmero de
instruccionesdeeseprogramanodebeserdemasiadoelevado.
ecientes
Losjuegosdeinstruccionestambintienenqueser
,estosignicaquelasfuncionesmsnecesariasdebenpoderrealizarseusandopocasinstrucciones.
regular,esdecirdebeser
simtrico
Elconjuntodeinstruccionesdeunamquinadebeser
(porejemplo,siexisteunainstruccindedesplazamientoalaizquierda,debehaberotra
ortogonal
dedesplazamientoaladerecha,etc.)y
,esdecir,debenpodercombinarse,en
lamedidadeloposible,todoslasoperacionescontodoslostiposdedatosymodosde
direccionamiento.
83

84

Conjuntosdeinstrucciones

Enmuchasocasiones,tambinseledebeexigirauncomputadorquesujuegodeinstruccompatible
cionessea
conmodelosanteriores.

4.3. Tiposdeinstrucciones
Una mquina puede llegar a funcionar con un juego de instrucciones muy limitado (recurdese, por ejemplo, la mquina de Turing que slo tiene 4 instrucciones, incluso se han
diseadomquinastericasconmenosinstrucciones),estosimplicaramucholoscircuitosde
lamquina.Sinembargo,unconjuntodeinstruccionesdemasiadosimplicadoorigina,como
consecuencia,unosprogramasdemasiadocomplejoseinecientes.Esnecesarioencontrarun
compromiso entre la simplicidad del hardware y del software. Un mnimo para llegar a ese
compromisoseconsigueconlostiposdeinstruccionessiguientes:
transferenciadedatos
Instruccionesde
.
aritmticas
Instrucciones
.
lgicas
Instrucciones
.
controldelujodelprograma
Instruccionesde
(bifurcaciones,bucles,procedimientos,
etc.)
entradaysalida
Instruccionesde
.
Enlosapartadossiguientesiremosviendocondetallealgunosdeestostiposdeinstrucciones.
Sibienesciertoqueelconjuntodeinstruccionesdebedecumplirunosmnimosparaconseguirunamnimaecienciaenlosprogramas,tambinseverquestanoseaumentaindenidamentealincrementarelnmerodeinstruccionesdelamquina.

4.3.1. Instruccionesdetransferenciadedatos
Laoperacindecopiardatosdeunlugaraotroeslaoperacinmssimpleyalavezimmovero cargarqueaparecenenlosjuegosdeinstruccionesdemuchos
portante.Laspalabras
coordenadores pueden dar lugar a confusin porque no se trata de mover o cargar
sino de
piar(generalmente,enInformtica,lapalabra
movertieneelsignicadode
copiarborrandoel
original
). Lasinstruccionesdetransferenciadedatosnecesitanqueseespeciqueneloriginal
destino
(fuenteuorigen) yellugardondesedesealacopia(
).Estaespecicacinvariarsegn
seanestoslugaresquepuedenestarentressitios:registrosdelprocesador,memoriaocimade
pila.Sielaccesoesaunadireccindememoriahabrqueespecicarladeformaexplcita,si
setratadelacimadepilanormalmentelaespecicacinserimplcita,lomismoocurrirsise
tratadelacumulador.
Existenalgunasvariantesdeinstruccionesdetransferenciadedatosquedierendelaidea
anteriordecopiarinformacionesdeunlugaraotro.Porejemplo,lainstruccinPOPsacaun
datodelacimadepilamodicandoelvalordelapuntadordepila,loquesignicaque,sibienno

4.3.Tiposdeinstrucciones 85

destruyefsicamenteeldatofuente,anulasuvalidez.Porotrolado,lamayoradelasmquinas
tambin disponen de instrucciones de intercambio (SWAP). Tambin, en muchas mquinas,
existeninstruccionesdetransferenciadeinformacinentrebloquesocadenasenlaquedeben
especicarselasdireccionesdefuenteydestinoylalongituddelbloqueocadena.
Engeneral,eldatoatransferirpodramosdenirlocomounaternaconlassiguientescomponentes:
Direccin
Tipo
Valor
Normalmentelacomponentedeldatoquesetransereeselvalorperoexisteninstrucciones
especialesparatransferirlasdemscomponentes,enespecialladireccin.Laextraccindela
direccin de un dato se hace necesaria para facilitar la relocalizacin de los programas. Para
aplicar muchos modos de direccionamiento (indexados, autoindexados, etc.) es necesaria la
transferenciadeunadireccinaunregistro.Enmuchosordenadoresestadireccinnoseconoce
alahoradecompilarelprograma(precisamenteporqueelprogramaesrelocalizable),portanto,
sonnecesariasinstruccionesquecalculenladireccindeundatoparatransferirlaaunregistro,
move
actualmentelamayoradelasmquinasposeenestetipodeinstruccinbajoelnombrede
address
.
Dependiendodelniveldeortogonalidaddelamquina,podemostenermsomenosinstruccionesdetransferencia.PorejemploelIBM-370tienemsde20instruccionesdetransferencia
porsufaltadeortogonalidad;sinembargo,elPDP-11slotiene2paradatosenteros(MOVy
MOVB)y4msparadatosenpuntootante,yaqueenlasinstruccionesdepuntootantese
prescindibastantedelaortogonalidadporfaltadeespacioparalacodicacin.ElMC68000
estenunpuntointermedio,tienevariosformatosdistintosdependiendodeldireccionamiento
utilizado.ElZ-80encuantoainstruccionesdetransferenciaentreregistrosesbastanteortogonal,peroesaortogonalidadsepierdecuandosetratadeotrosdireccionamientos.

4.3.2. Instruccionesaritmticasylgicas
Todoslosordenadoresincorporaninstruccionesaritmticasensusjuegosdeinstrucciones;
lautilidaddeestetipodeoperacionesesevidenteynolacomentaremos.Encuantoalasoperacioneslgicas(AND,OR,NOTyXOR)tienenunusomuyvariado:desdeoperacionescon
bitsindividuales(TEST,SET,RESETyCHANGE)hastaelempaquetamientoydesempaquetamientodecaracteres.Tambinpuedenconsiderarsedentrodeestegrupolosdesplazamientos
yrotacionescuyautilidadquedafueradetodaduda.
En primer lugar, veremos cmo se emplean las instrucciones lgicas para realizar operaciones de bit individual. La utilidad de estas operaciones es muy variada, probablemente su
aplicacin ms importante sea empaquetar en un byte varias variables booleanas, ocupando
cadaunadeellasunsolobit.
Para analizar un determinado bit se debe tener en cuenta las siguientes propiedades de la
operacinAND(.o):

86

Conjuntosdeinstrucciones

...
...
Mscara
0 Dato
0
x .. . x 0a x1. .0. x
...
a
...
0
0
0Resultado
0
Z
si a
= 0si a = 0 Z = 1
=0
=1
=0
Fig.4.1. Anlisisdeunbit.

...
...
Mscara
1
1
0
1
1
x .. . x x x . . . x
Dato
x .. . x
x ... x
0
Fig.4.2. Pue staa0de unbi t.

x x, x
1 x = , x
0
=0
Paraaplicarlas,serealizaunaoperacinANDdeldatoquesequiereanalizarconunamscara que tenga un 1 en el lugar cuyo bit se quiere probar con el resto de la mscara a 0. El
resultadodelaoperacinser0sielbitencuestines0,odistintode0sielbitquesequiere
Z enformacomplementada
probares1;portanto,elresultadodelapruebaquedarenelag
comosemuestraenlagura4.1.Muchasmquinas tienenestaoperacinbajoelnombre de
BITTEST .
Paraponera0unbitdeundato,seaprovechanlasmismaspropiedadesdeloperadorAND.
Paraaplicarlas,seconstruyeunamscaraquetengaa1todoslosbitsexceptoelcorrespondiente
allugarquesequiereborrarqueseponea0ysehaceunANDdeestamscaraconeldatoque
sequieretratar;comoresultadodelaoperacintendremoselmismodatoperoconelbitpuesto
acero.Elprocesosemuestraenlagura4.2.Estaoperacinpuederealizarseconvariosbits
alavez,bastaponerenlamscara0todoslosbitsquesequieranborrar.Muchosordenadores
BITCLEAR o BITRESET .
poseenestainstruccinconelnombrede
):
Paraponerunbita1enundato,aplicaremoslaspropiedadesdelaoperacinOR(+o
x x, x
0 x = , x
1
=1
Enestecaso,seconstruyeunamscaraconun1enellugardelbitquesequieraponera
1y0enelresto.SerealizalaoperacinORentreestamscarayeldatoyelresultadoserel
mismodatoperoconelbitencuestinpuestoa1(gura4.3).Estaoperacinpuederealizarse
con varios bits a la vez poniendoa1enla mscara todos los bits que se quieran poner a 1.
BITSET .
Muchosordenadorestienenestaoperacinconelnombrede
ParacomplementarbitsenundatoaplicaremoslaspropiedadesdelaoperacinORexclusivooXOR( ):

4.3.Tiposdeinstrucciones 87

...
...
Mscara
0 Dato
0
x .. . x 0x x1. . 0
.x
x .. . x
x ... x
1
Fig.4.3. Pue staa1de unbi t.

...
...
Mscara
0
1
0
0
0
x .. . x x x . . . x
Dato
x . . . x x x .. . x
Fig.4.4. Complementodeunbit.

x x, x
0 x = x, x
1
=
Paraelloseconstruyeunamscaraconun1enelbitquesequierecomplementary0enel
restodelasposiciones.DespusdehacerunXORdelamscaraconeldatosetendrelmismo
datoconelbitcomplementado(gura4.4).Estaoperacintambinsepuedehacerconvarios
bitsalavezponiendoa1enlamscaratodoslosbitsquesequierancomplementar.Algunas
BITCHANGE .
mquinastienenestaoperacinensujuegodeinstruccionescomo
determinacindelosbitsdiferentes
OtrautilidaddelaoperacinXOResla
quehayentre
dosdatos,paraellosehaceunXORentreellosyloslugaresquequedena1sonlosbitsdiferentesentrelosdosdatos.EstoesdebidoaquelatabladeverdaddeXOReslacomplementaria
determinarcundodos
aladelaigualdadentredosbits.Estapropiedadtambinestilpara
datossoniguales
entodossusbits:enestecasoelORexclusivoentreellosnosdar0y,encasocontrario,tendremosunnmerononulo;esteresultadopuedeluegoseranalizadomediante
haciendolaoperacinXORdeunoperando
elagZ. Deaqutambinsepuedededucirque
consigomismoelresultadoda0
. Estaesunaformamuyrpidadeponera0losregistrosen
algunosprocesadores.
Otra propiedad muy til del operador XOR es que si se opera dos veces con el mismo
operandoseregeneraeldatoinicial,esdecir,
x y y x, x,y
[4.1]
(
)
=
Estapropiedadestilenaplicacionesgrcasparamovercursoresporpantalla.
Unautilidaddirectadelasoperacioneslgicaseselmanejodeconjuntostalycomosehace
enellenguajePascal.Supongamoselconjuntouniversal,
{x0 , x1, x2, . . . , x n1}
=
A
Siesunconjunto,contenidoenesteconjuntouniversal,puederepresentarseinternamenteen
n bits
lamemoriadelamquinamediantelacadenade
U

an1an2 ...aa1

88

Conjuntosdeinstrucciones

i indicarlapertenenciadelelemento
xi alconjunto
A . Enotraspalabras,
enqueelvalordelbit
ai

1si xi

= 0si x
i / A

Apartirdeloanteriorresultabastanteevidentequelaunineinterseccindedosconjuntos
vendrrepresentadarespectivamenteporlasoperacionesORyANDsobresuscadenasdebits.
Delamismaformaelcomplementodeunconjuntoserepresentamediantelanegacindela
cadenadebitsquelecorresponde.
Medianteestatcnicapuededeterminarse:
La igualdaddedosconjuntos,analizandosisuscadenasdebitssoniguales.
x aunconjuntoA,realizandountestdelbitcorresponLa pertenencia
deunelemento
A.
dienteax enlacadenadebitsquerepresentaalconjunto
vaco,analizandosisucadenadebitsesnula.
Siunconjuntoes
A enotroB ;estopodrahacerseanalizandoenunbuclesi
La inclusindeunconjunto
A tambinloestnenlacadena
todoslosbitsactivadosenlacadenacorrespondientea
B. Estoseraalgocomplicadoencuantoalaprogramacinyllevara
quecorrespondea
untiempodeclculodesproporcionado.Sinembargo,sepuederealizarlamismacomprobacindeunaformamssimpleaplicandoalgunadelastrespropiedadessiguientes:
A B A B

B,

A B A B

A o A B A B

Evidentemente, comprobar cualquiera de estas propiedades se reduce a una operacin


lgicayunacomparacin,loqueresultamuchomssimplequeelprocedimientoanterior.
Curiosamente,latareadeinicializarlacadenadebitscorrespondienteaunconjuntoesms
complicadaquelasoperacionessobrelosconjuntosydependedecadacaso.Normalmentehay
queconstruirunamscaraindividualizadaparacadaelementoconelndeponera1losbits
quecorrespondanenlacadena.
desplazamientos
Dentro de las operaciones lgicas tambin deben considerarse
los , que
puedendenirsemediantelaexpresin
di di+k

k es el nmero
dondedi representa a cada uno de los bits del operando
y
de lugares que se
k,
k negativo)
desplaza. En funcin del signo el
dedesplazamiento puede ser a la izquierda
(
k(
o a la derecha
positivo),
donde se est suponiendo que los bits se numeran de derecha a
izquierda.
lgicos
Losdesplazamientospuedenserdetrestipos:
, aritmticos
y rotacionesodesplazamientoscirculares
dependiendodelbitentrante.Eldesplazamientolgicoaladerechadiere
del aritmtico en que el bit entrante es, en ste ltimo, el mismo bit de mayor peso (bit de

4.4.Instruccionesdecontroldelujodeprograma
89

R
S

xyz
t
0 0 0 a

xyz
1 1 0
x y 0
0 0 a
x y a t

t R
1 Mscara
t
0 S desplazado

Fig.4.5. Empaquetamientodecaracteres.

xyz
t R
0 1 0 0 Mscara
0 y 0 0
0 0 0 y Desplazado
Fig.4.6. Desempaquetamientodecaracteres.

signo),mientrasqueenaqulessiempreun0;Asseconsiguequelosdesplazamientosaritmticos sean equivalentes a multiplicaciones (izquierda) y divisiones (derecha) por 2. En las


rotacioneselvalordelbitentranteeselmismoqueeldelsaliente.
Unaaplicacinenquesecombinanmuchasdelasoperacioneslgicasanterioreseselempaquetamiento y desempaquetamiento de caracteres. Imaginemos la situacin mostrada en la
R,4caracteres
x, y, z y t yque,enotroregistro
gura4.5enlaquetenemos,enunregistro
S, tenemos un carcter
a que queremos que sustituya, por ejemplo, alz.carcter
En primer
R yunamscaracon0enloslugares
lugar,efectuaremosunaoperacinANDentreelregistro
z y 1 en el resto, con lo que tendremos los caracteres
x, y y t inalocupados por el carcter
z puestosa0;despussloquedarrealizar
teradosyloslugarescorrespondientesalcarcter
S desplazadoconvenientementeparaqueel
unaoperacinORentreesteresultadoyelregistro
a quedealineadoconelcarcter
z quequeremossustituir.Unatcnicaparecidasepuecarcter
R original
deemplearparadesempaquetarcaracteres(gura4.6):supongamosquedelregistro
y;paraelloconstruiremosunamscaracon1
delejemploanteriorqueremosextraerelcarcter
y
enloslugaresocupadosporelcarcter
y0enelrestoyluegoharemosunaoperacinAND
R. Despusslotendremosquedesplazarconvenientementeel
entreesamscarayelregistro
resultadoparaobtenerelcarcterdeseado.

4.4. Instruccionesdecontroldelujodeprograma
Lasinstruccionesdecontroldeujosonlasquemodicanelsecuenciamientodelaejecucindelasinstruccionesdelprograma.Engeneral,elsecuenciamientoesimplcito,esdecir,

90

Conjuntosdeinstrucciones

Fig.4.7. Secuencialinealdeejecucindeinstrucciones.

Fig.4.8. Secuenciaconpuntosdediscontinuidadenlaejecucindeinstrucciones.

lasiguienteinstruccinenejecutarseeslaqueestfsicamentedetrsenelprograma.Cuando
estonoesasesporlaaccindeunainstruccindecontroldeujo.
Todaslasinstruccionesquemodicanelujodelaejecucinmanejanelcontadordeprograma.Tambin,silamodicacindelujodeinstruccionessehacedeformacondicional,esta
condicin vendr dada por los bits de N
estado
, Z, V y
( C). Vemos, por tanto, que para las
contadordeprograma
instruccionesdecontroldeujohaydosvariablesfundamentales:el
y
losbitsdecondicin
.
Las instrucciones de control de ujo suponen discontinuidades en la secuencia lineal de
ejecucindelasinstrucciones(guras4.7y4.8).

4.4.1. Instruccionesdebifurcacin
Lamayoradelosprogramasrequierendelosordenadoresenqueseejecutanlacapacidad
deexaminardatosyluegoalterarlaevolucindelprogramaenfuncindelosresultadosdeesa
comprobacin(gura4.9);estonosllevaalanecesidaddelaexistenciadeinstruccionesdesalto
condicionales
obifurcacinquepuedenserdedostipos:
eincondicionales
. Lasbifurcaciones
incondicionalesserealizansiempre,mientrasquelasbifurcacionescondicionalesserealizano
bitsdeestadoocondicin
noenfuncindelvalordeunoovariosdelos
,simblicamente,de
formageneral:

4.4.Instruccionesdecontroldelujodeprograma
91

Fig.4.9. Bifurcacincondicional.

(Condicion)

P C Direcci
ondebifurcacion;

PC

;
++
Condicionsimbolizaunaexpresinqueinvolucraaunoomsbitsde
Enestarepresentacin,

condicin.Losbitsdecondicinmsusualesson:
N :Bitqueindicasielresultadodelaltimaoperacinhasido
negativo
.
Z:Bitqueindicasielresultadodelaltimaoperacinhasido
cero.
V :Bitqueindicasienlaltimaoperacinhubo
desbordamiento
.
C:Bitqueindicasienlaltimaoperacinseprodujo
acarreoo llevada
.
Algunasmquinasincluyenotrosbitsdeestadoadicionales.
C y V:mientras
C indicaquehahabido
Esimportantedistinguirladiferenciaentrelosbits
V sealaqueelresultadodeunaoperacintienedemasiados
llevadaenelbitdeordenmsalto,
bits para ser representado. En las operaciones realizadas en binario natural ambos conceptos
coinciden,sinembargo,enaritmticadecomplementoa2sonconceptosdiferentesyaquela
llevadaenelbitdeordenmsaltonoes,enestecaso,unasituacinincorrectayseproducecon
muchafrecuenciasinquehayadesbordamiento.
Veremosacontinuacincmoserealizaladeteccindedesbordamientoparadarelvalor
V. operacin que puede dar ms problemas de desbordamiento es la suma
correcto al bit
La
(oderivados,como,porejemplo,elincremento).Enprincipio,eldesbordamientoseproduce,
enunaoperacinencomplementoa2,cuandosesumandosoperandosdelmismosignoyel
resultadodelasumaesdesignocontrario.Estoseoriginaporque,aldesbordarselacapacidad
delregistro,seinvadeelbitdesigno;porotraparte,nohabrpeligrodedesbordamientosise
suman dos operandos designo contrarioya que,si ambos operandos caben en unregistro su
V por
diferencia tambin cabr. Estas observaciones nos llevan a dar
valor
una
al bit
de las
siguientesecuacioneslgicas:
V
V

S1 S2 . S1 SR
=(
)(
)
=

SR S1S 2

SR S1S 2

[4.2]

92

Conjuntosdeinstrucciones
Tabla4.1. Tabladeverdaddelasumaparaelbitdesigno.
xn1
0
0
0
0
1
1
1
1

Entradas
yn1 cn1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1

cn
0
0
0
1
0
1
1
1

Salidas
sn1 V
0
0
1
1
1
0
0
0
1
0
0
0
0
1
1
0

S1, S2 y SR son, respectivamente, los signos de ambos operandos y del


En estas ecuaciones
resultado.
Estaformadedetectareldesbordamientotieneelinconvenientedequeinvolucraademasiadas variables. Vamos a tratar de encontrar otro mtodo que nos lleve a una ecuacin ms
simple. Para ellopartiremos de la tabla deverdadde la suma que se muestra enla tabla 4.1.
n
Aplicando esta tabla al bit de signo (bit de
orden
), que en las operaciones en comple1
mentoa2setrataigualquelosdems,sepuedededucirdeloanterior,queenlaslasdela
xn1 e( yn1) sean iguales y el resultado
sn1)(sea diferente
tabla donde los dos sumandos
V
V viene
tendremosdesbordamiento(
). Delatablapodemosdeducirqueelvalordelbit
=
1
dadopor:
V

xn1yn1cn1 xn1yn1cn1
=
+
Estopodraserunaformadedeterminarporhardwarelaexistenciadedesbordamiento;sin
embargo, a la vista de la tabla, puede deducirse que se produce desbordamiento si la llevada
entrantealbitdesignoesdiferentedelasaliente,esdecir:
cn1 cn
=
Estaecuacinesmssimplequelaanteriorparadetectareldesbordamientoporhardware.
Estemtodotiene,adems,laventajadequetambinesvlidaparaotrasoperacionescomo,
porejemplo,losdesplazamientos.
V

N y C se
En cuanto al posicionamiento de los dems bits de estado, es bastante
simple:
Z se consigue
detectan directamente a partir de la unidad aritmtica
y
mediante una puerta
NORcuyasentradasseantodoslosbitsdelresultado.
Losconjuntosdeinstruccionesdelasmquinassuelenfacilitarinstruccionesauxiliarespara
posicionarlosbitsdeestadosinalterarelrestodelosregistrosdelamquina,estasinstruccionesson (comparacon0)y (comparadosnmerosrestndolos).Sueleserconveniente
utilizarestasinstruccionesinmediatamenteantesdelasinstruccionesdebifurcacincondicional, ya que si, entre las instrucciones de comparacin y las de bifurcacin, se insertan otras
instruccioneslosbitsdeestadocambiarnylacomparacinquedarsinefecto.HayquesealarqueenalgunosprocesadoresRISC(porejemplo,SPARC)lamayoradelasinstrucciones

4.4.Instruccionesdecontroldelujodeprograma
93

Fig.4.10. Iteraciones.

ags
nocambianlos
,sloloscambianinstruccionesespeccas.Estoesasporque,enestetipo
deprocesadores,esfrecuentetenerquecambiarelordendeejecucindelasinstrucciones.En
estosprocesadoresnoesnecesarioquelasinstruccionesdecomparacinestninmediatamente
antesquelasdebifurcacin.
Atendiendoalmododedireccionamientoutilizadoparaexpresarladireccindecontinuaabsolutas
cin de la ejecucin, las bifurcaciones pueden
ser y relativas
. Son bifurcaciones
absolutasaqullasenqueseespecicaladireccindelainstruccindondedebecontinuarla
saltos
ejecucindelprograma,normalmente,aestetipodebifurcacionesselesdenomina
. Se
llamanbifurcacionesrelativasaaqullasenqueseespecicaladiferenciaentreelnuevovalor
delcontadordeprograma,esdecirladireccindondedebecontinuarlaejecucin,ysuvalor
actual.Simblicamenteunabifurcacinrelativafuncionaraas:
(Condicion)
P C P C Desplazamiento
;
+
PC

;
++

Enlasmquinasenquelasinstruccionesdebenestarobligatoriamentealineadas,eldesplazamiento suele multiplicarse por el tamao de la palabra bsica de instruccin para permitir
rangosmayoresenestetipodebifurcaciones.Lasbifurcacionesrelativasfacilitanlarelocalizacindelosprogramas,porellodebenutilizarsesiemprequeseaposible.

4.4.2. Iteraciones
Esmuyfrecuentequesenecesiteejecutarungrupodeinstruccionesciertonmerodeveces
(gura 4.10), por ello, la mayora de las mquinas tienen instrucciones especcas para ello.
Unmtodopararealizariteracionessebasaenponerunvalorinicialenunregistroparaluego
pasaraejecutarelcdigodelaiteracin,laltimainstruccindelbucleactualizarelvalordel
registroycomprobarsisecumplelacondicindeterminacin,siesasseejecutarlasiguiente
instruccin y si no se comienza una nueva iteracin. Esta forma de actuar se caracteriza por
hacerlacomprobacindelacondicinalnaldelbucleporloquesteseejecutaunavezcomo
mnimo en todos los casos, incluso aunque la condicin de terminacin se cumpla antes de

94

Conjuntosdeinstrucciones

Fig.4.11. Llamadaaunprocedimiento.

entrar.Sepuedeanalizartambinlacondicinalprincipiodelbucleperoestoempleaalgunas
instruccionesms.Enlenguajemquinaloquesesuelehaceresponerenunregistroelnmero
de veces que se debe iterar, antes del comienzo del bucle. Al nal del bucle se decrementa
el registro y se compara con 0: si es 0 se contina con la siguiente instruccin y si no, se
ejecutaotravezelbucledesdeelcomienzo.Normalmente,lamayoradelasmquinastienen
alguna instruccin para realizar estas dos ltimas operaciones con una sola instruccin (
en el PDP-11,
y otras en el VAX,
en el Z-80,
en el 8086, etc.). Muchas
mquinas,ademsdelasinstruccionesparaimplementarbucles,tienentambininstrucciones
pararealizaroperacionesconbloquesycadenas,loqueevitalaejecucindemuchosbucles.

4.4.3. Procedimientos
procedimientos
Latcnicaprincipalparaestructurarprogramaseselusode
que,segnel
subprogramas
subrutinas
funciones
lenguaje,tambinsellaman
,
o
. Desdeelpuntodevista
delamquina,unallamadaaunprocedimientoalteraelujodeinstruccionescomounsaltocon
ladiferenciaimportantedequeelprocedimientodevuelveelcontrolalainstruccinsiguiente
alallamadaunavezquesehaconcluido(gura4.11).Sinembargo,desdeelpuntodevista
deunprogramadordelenguajedealtonivel,lallamadaaunprocedimientopuedeconsiderarse
como la ejecucin de una instruccin de otro nivel; desde este punto de vista, una llamada a
unprocedimientopuedeconsiderarsecomounasimpleinstruccin,aunquepuedaserbastante
complicada.
procedimiento
Deniremosun
comounasecuenciadeinstruccionesquerealizaunatarea
yalaquesepuedellamardesdediversospuntosdelprograma
.
Unodelosproblemasplanteadosporlosprocedimientoseselretornoalasiguienteinstruccinalallamada:debetenerseprevistounlugarseguroparaguardarladireccindelasiguiente
direccinderetorno
instruccin(
) yaque,alpasarelcontrolalprocedimiento,estadireccin
P C . Puedehaberdiversassoluciones:lamselementalesreservarunregistroo
desaparecedel
direccindememoriaparaguardarladireccinderetorno;estemtodotieneelinconveniente
anidamiento
deque,sielprocedimientollamaraaotro(
), estallamadaharaqueseperdierala
direccinderetornodelaprimera.Unamejoradeestemtodoconsisteenquelainstruccin
dellamadaaprocedimientoalmaceneladireccinderetornoenlaprimerapalabradelprocedimiento, estando la primera instruccin ejecutable en la palabra siguiente; el procedimiento

4.4.Instruccionesdecontroldelujodeprograma
95

podraretornarmedianteunainstruccindesaltocondireccionamientoindirectoalaprimera
palabra del procedimiento. Con este mtodo, el procedimiento podra llamar a otros, ya que
cadaunotienesitioparaunadireccinderetorno.Sielprocedimientosellamaraasmismo
(recursin
este
), esquema fallara ya que la segunda direccin de retorno destruira a la primera.Larecursinesunacaractersticamuyimportanteporloqueestemtodonoseemplea.
recursinindirecta
Tampocoseravlidoesteesquemaparala
,esdecirenelcasodequeun
A llamaraaotro
B ystellamaraasuveza
A.
procedimiento
Lamejorsolucinalproblemadeladireccinderetorno,yporotrapartelamsfrecuente,
esguardarladireccinderetornoenunapilaantesdeefectuarelsaltoalprocedimiento;cuando
elprocedimientoconcluya sacarladireccin deretorno delapilaylapondrenelregistro
contadordeprograma.Estemtodonoplanteaningnproblemaalahoradelarecursinyaque
salvaladireccinderetornoporencimadelasanteriores,evitandosudestruccin.Unproblema
estadodelprocesador
similarseplanteaparaguardarel
queestmaterializadoensusregistros;
stostambindebenguardarseenlapila,peroexistendosvariantesencuantoalmomentode
caller-saving
hacerlo: puede ser el programa que llama el que guarde los
registros
) o( puede
ser el procedimiento llamado quien localled-saving
haga (
). Existe una solucin intermedia
proporcionadaporalgunasarquitecturasenquenohayqueaadirinstruccionesparaguardarlos
registrospuestoquelamismainstruccindellamadalohace,esteeselcasodelaarquitectura
VAXenquelaprimerapalabradelprocedimientoindicalosregistrosqueelprocedimientousa
ylainstruccindellamadalosguarda.
Otros problemas planteados por los procedimientos son el paso de parmetros y el almacenamientodesusvariables.Estosproblemasseresuelvenreservandoenlapilalugartambin
paralosparmetrosylasvariables.Todalainformacinquesealmacenaenlapilacuandose
tramadepilao registrodeactivacindelprocedimienllamaaunprocedimientosellama
to. Podranarbitrarseotrassolucionesparaelpasodeparmetrosyelalmacenamientodelas
variablesdelprocedimiento(porejemploalmacenarlasenregistros)peroestosmtodosnofuncionan correctamente para procedimientos recursivos (la mayora no lo son, y estos mtodos
puedenemplearse).Enlosprocesadoresconventanasderegistrossquepuedenalmacenarse
losparmetrosyvariablesdelprocedimientoenregistros,aunqueseanrecursivos,yaquelas
ventanashacenlafuncindelapila.
Siseguardademasiadainformacinenlatramadepiladelosprocedimientosresultaconvenientedisponerdealgnapuntadorauxiliarparareferirsealasinformacionesdelatramadepila
sinrecurriralapuntadordepila.Inclusoexistencomputadoresqueposeenvariosapuntadores
paraestructurarlainformacindelatramadepila.Lamisinesencialdeestetipodeapuntadoresesaportarlaposibilidaddedireccionarlosargumentosylasvariablesdelprocedimiento
mediantedesplazamientosreferidosalapuntador(queapuntaaunlugarjodelatramadepila
apuntador
de cada procedimiento). Este apuntador suele
llamarse de trama
(frame pointer
,
F P ). Contodosestoscondicionanteslatramadepilatomarlaformadelagura4.12.
secuenciadellaLasecuenciadeoperacionesrealizadasparallamaraunprocedimiento(
mada) eslasiguiente:
1. Elprogramaquellamaalprocedimientoreservaenlapilalugarparalosargumentos.
2. Lainstruccindellamadaguardaenlapilaladireccinderetornoytambinseguardael
valordelapuntadordetramadelprocedimientoanterior.

96

Conjuntosdeinstrucciones

Fig.4.12. Tramadepiladedosprocedimientosanidados.

3. Elprocedimientoreservaenlapilalugarparasusvariables.

Debeobservarsequeelordendeestasecuenciadeaccionesnopuedealterarseyesteorden
eselquecausaelaspectodelatramadepila(gura4.12).Hayquetenertambinencuenta
que en algn momento tambin habr que guardar los registros del procesador (esto no est
representadoenlagura4.12).
Enelmomentodelretornoseliberarelespacioocupadoenlapilaporelprocedimientoy
secargarelcontadordeprogramaconladireccinderetornoguardadaenlapila.Asimismo
serestaurarelcontenidodelosregistros.
La estructuracin de los programas exige muchas llamadas a procedimientos lo que hace
deellasunodelospuntosmscrticosalahorademejorarelrendimientodelamquina;esto
hacequeseaconvenientequelasoperacionesanterioresserealicendelaformamseciente
posible.
Unaalternativaparamejorarlavelocidadenlasllamadasaprocedimientosconsisteenexpandirelcdigodelprocedimientoenellugardondeocurrelallamada.Estemtodo,quees
empleado a veces por algunos compiladores, seintegracin
denomina del procedimiento
o
procedimientoenlnea
ypuedeusarsealldondeeltiempodeejecucinseacrtico.Sinembargoelmtodotieneelinconvenientedequeaumentaelespaciodememorianecesarioparael
cdigo,porellopuedeserunabuenaalternativaparaprocedimientoscortos.

4.4.Instruccionesdecontroldelujodeprograma
97

Fig.4.13. Flujodeinstruccionesenunallamadaaprocedimiento(a)yentrecorrutinas(b).

Fig.4.14. Corrutinas.

4.4.4. Corrutinas
Enlasecuenciaordinariadellamadaaprocedimientoladistincinentreelprocedimiento
que llama y el llamado es clara. Consideremos el caso de dos procedimientos que se llamen
mutuamente.Aprimeravistaestasituacinsepodraconsiderarsimtrica.Laasimetraprocede
del hecho de que, cuando se pasa el control del procedimiento que llama al procedimiento
llamado, ste comienza a ejecutarse desde el principio; sin embargo, cuando se produce el
retorno,laejecucindelprocedimientoquehizolallamadasigueenlainstruccinsiguiente.
Si se llamara ms veces al procedimiento, ste comenzara a ejecutarse nuevamente desde el
principio (situacin mostrada en la gura 4.13 (a)). La asimetra se acenta si analizamos el
procesollevadoacaboanivelmquina:enelmomentodelallamadaelvalordelcontadorde
programapasaalapilaycuandoelprocedimientoretornaelprocesoesjustamenteelcontrario;
ademslasinstruccionesquerealizanambasfuncionessondistintas.Enalgunasocasioneses
tiltenerdosprocedimientosquesellamenelunoalotrocomounprocedimiento(sinretorno)
sincomenzarlaejecucindesdeelprincipio(gura4.13(b)).Dosprocedimientosquellamen

98

Conjuntosdeinstrucciones

unoaotrodeestaformasedenominancorrutinas(gura4.14).Laformadellevaracaboenla
prcticaunallamadaaunacorrutinaesintercambiarloscontenidosdelcontadordeprograma
ydelacimadepila,sinvariarelapuntadordepila,yaquesesacaundatodelapilaparameter
otro;deestaformaseintercambiaelcontrolentrelasdosrutinas.

4.4.5. Desvosoexcepciones(traps)
Undesvoesuntipoespecialdellamadaautomticaaprocedimientoiniciadaporalguna
condicindebidaalprograma
.
Hayquedecirquelanomenclaturadelaliteraturatcnicacambiamuchodeunosfabricantes
aotrosdeformaqueunosllamanexcepcionesaloqueotrosllamaninterrupcioneseincluso
algunosllamanaambascosasdelamismaforma.Aqutrataremosdedarmsimportanciaa
losconceptosquealosnombres.
Losdesvosnormalmentesedebenacondicionesimportantesaunquenomuyfrecuentes.
Elcasomsusualeslacondicindedesbordamientoenoperacionesaritmticas(TRAPV).Si
despusdeunaoperacinseproducedesbordamientoelmicroprogramalodetectaybifurcaa
unarutinadetratamientodeeseerror.Usarestatcnicaesmsrpidoquehacerunabifurcacin explcita en funcinV de
despusde cada instruccin aritmtica yaque ladireccin de
bifurcacinessiemprelamismayelanlisisdelacondicin,enelcasodeldesvo,lorealiza
automticamenteelmicroprogramadespusdecadainstruccinaritmtica.
Tambinprovocandesvosladivisinpor0,lalecturadeuncdigodeoperacinindenido,
elaccesoaunapalabramalalineadaenlosordenadoresenquelaalineacinesobligatoria,etc.
Otrotipodedesvosseproducenporcausasdebidasalsistemaoperativotalescomofaltasde
pgina,erroresdeproteccindesegmentos,etc.Tambinpuedenexistirdesvosparafunciones
dedepuracincomopuntosderuptura,ejecucinpasoapaso,etc.
Losdesvossonrecuperables
si,despusdetratarseconlarutinadeexcepcinadecuada,
norecuperables
laejecucinpuedecontinuarenlasiguienteinstruccin,yson
silaejecucin
delprogramatienequedetenerse;enestecaso,habitualmente,sedevuelveelcontrolalSistema
Operativodelamquina.
rutinallamado
Un problema de los desvos es encontrar la direccin del procedimiento,
detratamientodeexcepcin
vectorizacin
. Lavamasusualdeobtenerestadireccinesla
queconsisteennumerartodaslascausasdedesvoytenerunatablaenmemoriacontodaslas
vectores
direccionesdelasrutinasdetratamiento;estasdireccionessedenominan
yalatabla
tabladevectoresdeexcepcin
anteriorseladenomina
. Silatabladevectorescomienzaen
A ycadavectorocupa
t palabras,ladireccincorrespondientealaexcepcin
n
unadireccin
vendrdadapor:
n
A nt
Direccindelarutinadetratamientodeldesvo
=( + )
Enestaexpresinelparntesisdenotaelcontenidodeladireccindesuinterior.Elclculo
lorealizainternamenteelprocesadorcadavezqueseproduceunaexcepcin,normalmentees
A e t facilitanlatarea:normalmente
t esunapotencia
unclculorpidoyaquelasconstantes
d e 2 yA muchasveceses0,porloquelaoperacinsereduceaundesplazamiento.

emplea

4.4.Instruccionesdecontroldelujodeprograma
99

4.4.6. Interrupciones
llamadasautomticasaprocedimientonodebidasalprogramasino
Lasinterrupcionesson
aunacausaexterior
.
Ladiferenciaentrelasinterrupcionesylosdesvosesquestossonprovocadosporelmismo programa mientras que las interrupciones son provocadas por causas externas de forma
totalmenteasncrona.
Normalmentelascausasdeinterrupcinestnrelacionadasconlasoperacionesdeentrada
ysalida.Unainterrupcindetieneelprogramaencursoytransereelcontrolalprocedimienrutinadeserviciodeinterrupcin
todetratamientodelainterrupcindenominado
;cuando
estarutinaconcluyesedebedevolverelcontrolalprocesointerrumpidoquedebecontinuarsu
ejecucinenelmismoestadoenelqueestabacuandoseprodujolainterrupcin.Estosignica
que se deben salvar el estado del procesador (es decir el contenido de los registros) antes de
comenzarlaejecucindelarutinadeservicioyrestaurarsealnalizarsta.
Lasinterrupcionessonnecesariascuandolasentradasosalidaspuedendesarrollarseenparalelo con la ejecucin de instrucciones en el procesador. Esto normalmente es as debido a
que,mientrasundispositivodeentrada/salidaefectaunasolaoperacin,elprocesadorpuede
ejecutarmuchasinstruccionesconvencionales.Lossistemasdeinterrupcionespermitenquela
CPUfuncioneconcurrentementeconlosdispositivosdeentradaysalida,siendolasinterrupcioneselsistemadecomunicacionesentreambosprocesosparaqueelprocesadorsepacuando
eldispositivodeentrada/salidahaconcluido.
Elmecanismodevectorizacindescritoenelapartadoanteriortambinesvlidoparaencontrarladireccindelarutinadeserviciodeinterrupcin.Enlasinterrupcionesladiferencia
radicaenqueelnmerodelainterrupcinlomandaelpropiodispositivoatravsdelbusde
datos.

4.4.7. InstruccionesdecontroldeujoenelVAX
En este apartado estudiaremos un caso concreto de instrucciones de control de ujo: las
correspondientesalVAX(Baase,1983).Estamquinatienediversasclasesdeinstruccionesde
controldeujo:
Instruccionesdebifurcacin
ElVAXtienedosinstruccionesdebifurcacinincondicional:
y
;ambasinstrucciones se diferencian slo en el tamao del desplazamiento (1 o 2 bytes): para bifurcaciones en
queladireccindedestinoseencuentrecercadeladireccinactual(menosde128bytes)se
,encasocontrarioseemplea. Encuantoalasbifurcacionescondicionalestodas
tienenundesplazamientode8bits,estolimitaalgosuusoyobligaenocasionesaemplearuna
programacinmenosestructuradaenlasbifurcacionescondicionalesyaqueesnecesarialainstruccin . EnlasinstruccionesdebifurcacindelVAXsloseespecicaeldesplazamiento,
sin el byte de especicacin de operando convencional en la forma modo-registro. Tambin
existeninstrucciones especcas para bifurcar enfuncin delvalordel bit deorden msbajo
deunoperando( , branchiowbitsety
, branchiowbitclear:bifurcarsielbit

100

Conjuntosdeinstrucciones
Tabla4.2. InstruccionesdebifurcacincondicionalenelVAX.
Nemnico Nombre(Bifurcarsi...)
igual
distinto
mayor
menoroigual
mayoroigual
menor
mayor
menoroigual
mayoroigual
menor
V activado
V desactivado
C activado
C desactivado
bit0activado
bit0desactivado

Condicin
Z=1
Z=0
N = 0 Z = 0
N = 1 Z = 1
N =0
N =1
C = 0 Z = 0
C = 1 Z = 1
C =0
C =1
V =1
V =0
C =1
C =0

deordenmsbajoes10respectivamente),enestasinstrucciones,ademsdeldestinodela
bifurcacin,hayqueespecicareloperandoenqueseanalizaelbitencuestin.
Enlatabla4.2puedeverseunresumendelasinstruccionesdebifurcacincondicionaldel
VAX. Los nemnicos terminadoscorresponden
en
a condiciones sobre nmeros en binario
natural(sinsigno)ylasrestantesacondicionessobrenmerosencomplementoa2(consigno).
el decremento Existe una instruccin de salto incondicional
: jump
( , salto). La diferencia entre estadel
ndice (
instruccin y las bifurcaciones incondicionales reside en se
que
puede
en usar cualquier
mododedireccionamientoparaladireccindedestinoysinembargoenlasinstruccionesde
bifurcacinesadireccinespecicasiempremedianteundesplazamiento.
yotrasensuincremento(
Existe
tambin una instruccin (
Instruccionesparaelcontroldeiteraciones
En el VAX existen diversas instrucciones para el control de iteraciones, unas se basan en
xxx: subtract one and branch
xxx,
if restar uno y bifurcar si
xxx)
xxx: addoneandbranchifxxx,
secumplelacondicin
xxx).
x:
sumar uno y bifurcar si se cumple la condicin
add,compareandbranch
,sumar,compararybifurcar)quepermiteunincrementodiferentede
1 que,adems,puedesertantopositivocomonegativoeinclusonoentero.Enlatabla4.3se
muestranlasinstruccionesdecontroldeiteracionesdelVAX.
Llamadasasubrutinasyprocedimientos
EnelVAXsepuededistinguirentrellamadasasubrutinasyllamadasaprocedimientos:la
diferenciaestribaenqueunallamadaasubrutinasimplementeguardaladireccinderetornoen

4.4.Instruccionesdecontroldelujodeprograma
101
Tabla4.3. InstruccionesparaelcontroldeiteracionesdelVAX.
Nemnico Operandos
ndice,destino

Operacin
if(indice>0)gotodestino;
if(ndice>=0)gotodestino;
lmite,ndice,destino
if(++ndice<=lmite)gotodestino;
if(++ndice<lmite)gotodestino;
lmite,incremento,ndice,destinondice ndice+incremento;
if(incremento>=0)
{if(ndice<=lmite)gotodestino;}
else
if(ndice>=lmite)gotodestino;

ordeninversomediantelasinstrucciones

lapilaybifurca.Podramosdecirqueunallamadaasubrutinaesunabifurcacinconretorno;
sinembargo,unallamadaaprocedimientoesmscomplicadaporqueexigepasarlosparmetros, guardar el contenido de los registros, etc. Para remarcar ms la diferencia entre ambos
conceptos,alassubrutinasselesllamaavecessubrutinasinternasyaqueseconsideranparte
delprogramaquelasllama.
Las instrucciones para llamar a una subrutina yson que se diferencian por el
tamao del desplazamiento (1 o 2 bytes). Tambin existe la instruccin
(return from subroutine,retornodesubrutina)querecogeladireccinguardadaanteriormenteenlapila,por
o
,ybifurcaaella.

Encuantoalasllamadasaprocedimientos,enelVAXhaydosinstruccionesparaefectuarlas:
y
L. a diferencia entre ambas radica en la forma de pasar los argumentos:
mientrasqueen
sepasanatravsdelapilaconelndefacilitarlarecursin,en
losargumentossepuedenpasarenotrazonadememoria.
Lasintaxisdeestasinstruccioneses:
nmerodeargumentos,direccindelprocedimiento
direccindelalistadeargumentos,direccindelprocedimiento
Enlenguajeensambladorlasdireccionesqueaparecenesestasinstruccionesserepresentan
medianteetiquetas.
Siseutilizalainstruccin

losargumentosdebenponersepreviamenteenlapilaen
(argumentoporvalor)o x (argumentopor
referencia).Sinembargo,siseemplea lalistadeargumentosdebedenirsepreviamente
delasiguienteforma:
Nmerodeargumentos
Listadeetiquetasdelosargumentos
Puede ocurrir que la direccin de alguno de los argumentos no se conozca al escribir el
programa(porejemplo,porqueseaproductodeunclculo),enestecaso,seleponeunaetiqueta
independiente a esa direccin y, en ejecucin, una vez conocido el valor de la direccin se
transere mediante una instruccin
. Es necesario comentar que no es conveniente poner
enlugarde
yaquestegeneracdigoindependientedelaposicinyaqul

102

Conjuntosdeinstrucciones

Fig.4.15. ListadeargumentosdeunprocedimientoenunVAX.

no.
Ejemplo4.1:
Supongamosque tenemos una lista con tres argumentos con uno de ellos no
conocidoenelmomentodeescribirelprograma.Lalistadeargumentostendralaforma:
*

En el programa,si la direccindesconocidaes productode un clculocuyo resultado


R ,sencillamentepondremos
queda,porejemplo,en
3
*

Tantosilallamadaaprocedimientoserealizacon
!** comocon!** lalistadeargumentostienelaformamostradaenlagura4.15.Ladiferenciaentreamboscasosradicaenque
lalistadeargumentosenelcasode
!** resideenlapilayenelcasode!** encualquier
AP apuntaalcomienzodelalistadeargumentos.
lugardememoria.Enlosdoscasoselregistro
Tambinexisteladiferenciaencuantoalaformadeconstruirlalistadeargumentos:mientras
enelcasode!** losargumentosseponenmediantelasinstrucciones
"#$* y "#$ x yel
nmerodeparmetrosloponelamismainstruccin
!** (porqueesunodesusoperandos),
enelcasode!** ,lalistalaconstruyeelusuarioincluyendoelnmerodeparmetros.Desde
elpuntodevistadelprocedimientonoinuyequelallamadasehayarealizadomediante
!**
o !** . Dehechounmismoprocedimientopuedellamarsedelasdosformas(salvoquesea
recursivo).EnamboscasossehacereferenciaalosargumentosatravsdelapuntadordeargumentosAP : %&"' elprimero,(&"' elsegundo,etc.silosargumentossepasanporvaloro
( )
)%&"' elprimero,)(&"' elsegundo,etc.sisepasanporreferencia.
LatramadepilaparalasllamadasaprocedimientosdelVAXsemuestraenlagura4.16.
Lospasosnecesariosparaestasllamadassonlossiguientes:

4.4.Instruccionesdecontroldelujodeprograma
103

Fig.4.16. TramadepiladeunprocedimientoenelVAX.

Alinear
1.
la pila a doble palabra. Esto se consigue poniendo a 0 los dos ltimos bits del
apuntadordepila.Elvaloranteriordeestosbitsseguardaenunalmacenamientointermedio.
Salvar
2. el contenido de los registros comprendidos en la mscara situada en la primera
palabradelprocedimiento.Estamscaralaconstruyeelcompilador.Enlenguajeensambladorlosregistrosquesedebensalvarantesdeentrarenelprocedimientoseponenenel
directivo
. Apartirdeestainformacinelensambladorconstruyelamscara.Por
R y R ensucabecerapondremos:
ejemplo,siunprocedimientoalteralosregistros
2
3
Nombredelprocedimiento
,

P C (contadordeprograma),
F P (apuntadordetrama)y
3. Guardarenlapilalosregistros
AP (apuntadordeargumentos).
4. Guardar en la pila PSW
la
(palabra de estado), la mscara de registros salvados, los
SP ), antesdealinearlo,yunbitque
dosbitsmenossignicativosdelapuntadordepila(
indicasilallamadasehaefectuadocon (0)o
(1).
5. Ponera0lapalabradeestado.

104

Conjuntosdeinstrucciones

6. Ponerunadoblepalabracon0enlapila.
SP ) enelapuntadordetrama(
F P ).
7. Copiarelapuntadordepila(
AP (apuntadordeargumentos).
8. Ponerladireccindelalistadeargumentosenelregistro
Enelcasode
estadireccinesunodelosoperandos;sinembargo,enelcasode
, antes de salvar los registros (paso 2), se salva el nmero de argumentos y, en
esemomento,elSPesalmacenadoenunregistrotemporalparadepositarloahoraenel
AP .
registro
9. Cargarladireccindelprocedimiento+2enelcontadordeprograma(elhechodesumar
dosaladireccindelprocedimientosedebeaquelaprimerapalabradelprocedimiento
eslamscaraderegistros).
Deformaanlogalospasosrealizadosporlainstruccin
(retornodeprocedimiento)son
lossiguientes:
FP
1. CopiarenSP elcontenidode
. Estoeliminatodaslasinformacionespuestasen
+4
lapiladespusdelatramadelprocedimiento(variablesoinformacionesapiladasqueno
sehaneliminadoantes).
PSW ,mscaraderegistros,etc)enunalmacenamientointerme2. Salvarlacimadepila(
dio.
AP , F P y P C .
3. Restaurarlosregistros
Restaurar
4.
los registros de uso general a partir de la mscara guardada en el almacenamientointermedio.
SP (delalmacenamientointermedio).
5. Serestauranlosbitsmsbajosdel
6. Serestauralapalabradeestado.
n
7. Siseus
seincrementaelapuntadordepilaen
,siendon elnmerode
4( + 1)
argumentosqueradicaenlapilaencabezandolalistadeargumentos,estoserealizapara
eliminarlosargumentosdelapila.

4.5. Relacin entre el lenguaje mquina y los lenguajes de


altonivel
En esta seccin estudiaremos como se almacenan las variables y estructuras a las que se
hacereferenciaenloslenguajesdealtonivel.Tambinestudiaremosqumodosdedireccionamientosonmsconvenientesparacadacaso.Estainformacinsermuytilparaimplementar
cualquiertipodecompilador.

4.5.Relacinentreellenguajemquinayloslenguajesdealtonivel
105

4.5.1. Clasesdevariables
Enun programa dealto nivel, e incluso tambin en lenguajeensamblador, existe un connombredelas
visibilidad
mbitodevalidezdel
ceptodenominado
. Esteconceptosereereal
variables
. Atendiendoalavisibilidad,losnombresdelasvariablespuedenserdedostipos:
Globales
:sonnombresdevariablereconocidosentodoelprograma.
Locales
: son nombres de variable que slo se reconocen en una partedel programa,normalmenteunoomsprocedimientos.
Elmbitodevisibilidaddelosnombresdelasvariablesesunconceptoquemanejasolamenteelcompilador,concretamenteenlatabladesmboloshaciendoqueunsmboloslosea
reconocido en su mbito de validez, y no transciende al cdigo ejecutable del programa. Sin
embargo, hay otro concepto similar que vida
es elde
dela variable
que se dene como el
tiempoquetranscurredesdequeunavariablesecomienzaausarhastaqueselamencionapor
ltimavez
o,loqueeslomismo,eltiempoenqueesnecesarioquelavariabletengaespacio
reservadoenmemoria
. Segnestecriteriolasvariablespuedenserdetrestipos:
Permanentes
: sonvariables cuya vida es el tiempo total de ejecucin del. programa
Estas
variablessealmacenanenunazonadememoriaaccesibledesdecualquierpuntodelprorea global
grama denominada
. Se accede a este rea con direccionamiento relativo o
direccionamientoporbaseydesplazamiento,tomandocomobaseunregistroqueapunte
aladireccindecomienzodelprograma.Untipoespecialdevariablesdeestetiposon
estticas
lasvariables
quesonvariablespermanentescuyonombreeslocalaunoovariosprocedimientos
. Lasvariablesestticasconservansuvaloraunqueelprocedimiento
retorneyaquetambinsealmacenanenelreaglobal.
Automticas
:son variablescuya vidaes, comomximo, eltiempodeejecucin delprocedimientodondesehandenido
. Losnombresdeestasvariablessonlocalesaeseprocedimiento.Losparmetrosdelosprocedimientosseconsideranvariablesdeestetipo.Las
variablesautomticassealmacenanenlapila,deestaformasuespaciosereservacada
vezquesellamaalprocedimientoyesliberadocuandoretorna.Elaccesoaestasvariables
serealizamediantedireccionamientoindexadoalapuntadordetramadeprocedimiento
o framepointer
. Enelcasodelosparmetrospasadosporreferenciaodelasvariables
automticasquerepresentenapuntadores,seaplicarelmismodireccionamientoperoen
suversinindirecta.
Dinmicas
:sonvariablescuyoespaciosereservayliberadurantelaejecucindeunprocedimiento
. Estetipodevariablesseempleaparaalmacenarestructurasdedatosquepueden
crecerodecrecerenejecucintalescomolistasenlazadas,rboles,etc.Ellugardealmareadinmica
cenamientodeestasvariablessedenomina
o heapypuedenosercontiguo
yaqueelsistemaoperativovaconcediendomemoriasegnelprogramalavasolicitando
ynosiemprelamemoriaestdisponibledeformacontigua.
Lasvariablesescalaresdecualquieradelostiposanteriorespuedenalmacenarseenregistros
delprocesador,salvolasvariablesdinmicas ylasvariablesautomticasenlosprocedimientosrecursivos,inclusoenestecasotambinesposibleenprocesadoresRISCconventanasde
registroscomoseverenelapartado4.6.

106

Conjuntosdeinstrucciones

Lanomenclaturadelasclasicacionesanterioresnoconcuerdaexactamenteconladelos
lenguajesdeprogramacinyaquestapuedecambiarbastantedeunoslenguajesaotros.

4.5.2. Direccionamientodeestructurasdedatos
Una de las caractersticas fundamentales de los lenguajes de alto nivel es la posibilidad
de denir y manejar estructuras de datos complejas. Estas estructuras plantean los siguientes
problemas:
Organizarsualmacenamientoenmemoria.
Encontrarladireccindecadaunodesuscomponentesmssimples.
Enestascircunstanciaselcompiladordellenguajedealtoniveldebeproducirunasecuencia
deinstruccionesparacalcularladireccindelcomponentedeseado.
Elaccesoalasestructurasdedatosmssimples(unvectorunidimensional,unaestructurao
record
,etc)puederequerirunnmeromuypequeodeinstruccionessiseutilizalapotenciade
k
losmodosdedireccionamiento.Porejemplo,supongamosquequeremosaccederalelemento
n
deunvectorcuyoselementosocupan
bytescadaunoyestnsituadosconsecutivamenteen
2
Rx contieneladireccindelprimerelementoy
Ry contieneelndice
memoria;sielregistro
k vendrdadapor
(k), ladireccindelelemento
Rx

Ry<<n
+[
]

Si ladireccin del primer elementovienedada porundesplazamiento respecto aotroreframepointer


gistro,normalmenteel
oelpropioP C ,laexpresinanterior,llamandogenricaR ref alregistrodereferencia,seconvierteen:
mente
R ref

desplazamiento Ry<<n
+[
]

Se puede usar direccionamiento indexado para efectuar la suma, lo que nos eliminara una
operacin.EnelVAXeldireccionamientoindexadoestanpotentequerealizatodalaoperacin:
A
Si
esladireccindelprimerelemento,especicadahabitualmentemediantedireccionamiento
k seespecicamediante
A Ry yaqueeldireccionamientoindexadodel
relativo,elelemento
[ ]
VAXmultiplicaelndiceporeltamaodeloperando.
Tambin puede darse el caso de que la direccin del primer elemento venga dada por un
apuntador,encuyocasohayqueaadirunniveldeindireccin,conloquequeda:
R ref desplazamiento Ry<<n
(
+
)+[
]
EnelVAXeldireccionamientoindexadosoportacualquiermodocomondice,porloque
k
tambinsepuedeaplicarsobredireccionamientoindirectorelativo,enestecaso,elelemento
delvectorseespecicamediante .
De una manera similar se podra gestionar el acceso a elementos de matrices de varias
dimensiones.

o
simplicacinenelcasodeunapuntadoraun
4.6.CaractersticasdelosprocesadoresRISC
107

Uncasoalgomenosregulareseldireccionamientodeestructurasdedatostipo
. Lairregularidadresideenqueeltamaodecadaunodeloscamposdeunaestrucutura
deestetipoesdiferente.Enestecaso,ladireccindeunodeloscamposvienedadapor
R ref

desplazamiento
primer elemento desplazamiento
campo
+
+
R ref
desplazamiento
En esta expresin,
primer elemento, representa la direccin del primer
+
elementoydesplazamientocampo,eseldesplazamientodelcampodeseadorespectoalprimer
elemento.Estopuedehacerseas,o,sielcompiladorestoptimizado,stepuedesumarambos
desplazamientos y utilizar direccionamiento indexado simple. No puede hacerse esta ltima
(operador->dellenguajeC)yaque,en
estecaso,losdosprimerostrminosestnafectadosdeunaindireccinyladireccindelcampo
buscadoes:
R ref desplazamiento
desplazamiento
primer elemento
campo
(
+
)+
ParaestecasoseadecamuybieneldireccionamientoindirectopostindexadodelmicroprocesadorMC68020.
Unatcnicasimilarpuedeusarsesiunaestructuraesuncampodeotra.Enestecaso,para
obtener la direccin de uno de los campos de la estructura ms interna, es necesario sumar
tresdesplazamientos:eldesplazamientodelprimercampodelaestructuraprincipalrespectoal
registrodereferencia,eldesplazamientodelprimercampodelaestructurainternarespectoal
primercampodelaexterioryeldesplazamientodelcamposolicitadorespectoalprimercampo
delaestructurainterna:
R ref

desplprimer elemento struct principal desplprimer elemento struct interno desplcampo


+
+
+
Delamisma formaque enelcaso anterior,con uncompilador optimizado, se pueden sumar
todoslosdesplazamientosencompilacinyaplicardireccionamientoindexadosimple.Si,por
ejemplo, a la estructura externa se accede a travs de un apuntador, la direccin anterior se
obtendrmediantelaexpresin:
R ref desplprimer elemento struct principal desplprimer elemento struct interno desplcampo
(
+
)+
+
Deformasimilarsepuedeactuarsialgunodelosotroscamposesunapuntador.Enestecaso
tambinpuedenresultarinteresanteslosdireccionamientosindirectospreindexadoypostindexadoincorporadosalmicroprocesadorMC68020.

4.6. CaractersticasdelosprocesadoresRISC
Tradicionalmentehahabidounagrandiferenciadenivelentreellenguajemquinayloslenbarrerasemntica
guajesdealtonivel.Estadiferencia,conocidacomo
o brechasemntica
,
puedeminimizarsededosformas:aumentandolacomplejidaddeloscompiladoresoelevando
lacomplejidaddellenguajemquina.Engeneral,sehaoptadoporlasegundavaloque,alo
largodeltiempo,hallevadoaordenadoresconlenguajesmquinademuchasinstruccionesy
muyelaboradasperomuylentosdebidoaqueunmicroprogramaparadecodicarmuchasinstruccionescomplejassermslentoqueotromicroprogramaparadecodicarunconjuntoms

108

Conjuntosdeinstrucciones

reducidodeinstruccionesmssimples;porotraparte,enesteltimocaso,elcontrolpuedeser
cableado.Porotrolado,losprogramasescritosenlenguajesdealtonivelnousan,tantocomo
se piensa, las instrucciones complejas. Haciendo una estadstica sobre programas escritos en
lenguajesdealtonivel,sepuedellegaralaconclusindequelasinstruccionesquemsseusan
if,while,etc),laslla(msdeun90%)sonlasasignaciones,lasinstruccionescondicionales(
for). Tambinhayquetenerencuentaqueunporcentaje
madasaprocedimientosylosbucles(
muyelevadodelasasignaciones(alrededordel80%)noinvolucranaoperacionesaritmticas,
esdecir,sonasignacionessimples(transferencias),aunquetambinsedebemencionarquealgunas instrucciones condicionales involucran tambin a operaciones aritmticas. En cuanto a
las llamadas a procedimientos, la mayor parte de ellas son llamadas con pocos parmetros e
incluso,enlamayoradeloscasos,sinellos.
Deunaformaanlogasianalizamoselcdigomquinadelosprogramastambinsellega
a una conclusin similar respecto a los modos de direccionamiento utilizados: entre los direccionamientosinmediatoypordesplazamientosecubremsdeun80%delasreferenciasa
memoriadelamayoradelosprogramas(sibienestodependemuchodelcompiladorutilizado).
Quieredecirsecontodoestoquelosprogramasescritosenlenguajesdealtonivelnousan
apenaslasinstruccionesmscomplejas,aunqueenprincipiopudierapensarseloscontrario.Por
mejorarenloposibleloscasosmsfrecuentes
ellocabeaquaplicarelprincipiodediseo"
".
Tambin hay que tener en cuenta que muchas mquinas estn orientadas a un solo tipo de
aplicaciones(gestin,diseoasistido,clculocientco,etc.),estohacequesepuedanencontrar
lasinstruccionesmsnecesariasparaesetipodeaplicacionesconcretas.
ReducedInstructionSetComputer
Assellegaalospasosdediseo
delasmquinasRISC(
:
Computadoresconconjuntoreducidodeinstrucciones):
Analizarlasaplicacionesquevanafuncionarenesamquinaparaencontrarlasoperaoperacionesclave
cionesmsnecesariasparaesasaplicaciones(
).
Disearelconjuntoderegistrosylascomunicacionesentreellosmsapropiadosparala
ejecucindelasoperacionesclave.
Disearlasinstruccionesymodosdedireccionamientopararealizarlasoperacionesclave
enelconjuntoderegistrosanteriormentediseado.
Aadirnuevasinstruccionesslosinohacenmslentalamquina.
Estospasosdediseotienenlaestructuradelllamadodiseodescendente,estoquieredecir
descendiendo
queseanalizanlasespecicacionesdeloquesenecesitayluegoseva
hacialos
elementosdemsbajonivelnecesariosparacumpliresasespecicaciones.
ciclomquina
Ahoraintroduciremoselconceptode
queeseltiemponecesarioparaextraer
losoperandosdelosregistros,llevarlosalaALUparaoperarconellosydepositarelresultado
enunregistro
. Estetiempodeciclodebesertanpequeocomoseaposible,estoseconsigue
sacricando todo lo que incremente la duracin del ciclo, por ejemplo, deben eliminarse las
instruccionesquetardenenejecutarsemsdeunciclo.
LosprincipiosdediseodelosordenadoresconarquitecturaRISCsonlossiguientes:
pocasinstrucciones
Relativamente
y pocosmodosdedireccionamiento
.

4.6.CaractersticasdelosprocesadoresRISC
109
Tabla4.4. ComparacinentrelasarquitecturasRISCyCISC.
RISC
Instruccionessencillasdeunsolociclo

CISC
Instruccionescomplejasdevarios
ciclos
PocasinstruccionesydireccionamientosMuchasinstruccionesy
direccionamientos
SloLOADySTOREacceden
Cualquierinstruccinpuedeacceder
amemoria
amemoria
Formatodeinstruccinjo
Muchosformatosdeinstruccin
Controlcableado
Controlmicroprogramado
pipe-line Procesamientoconvencional
Procesamientosegmentadoo
Grannmeroderegistrosenel
Pocosregistrosenelprocesador
procesador
Lacomplejidadresideenelcompilador Lacomplejidadresideenel
microprograma

Grancantidadderegistrosenelprocesador
y usodeventanasderegistros
paralas
variablesdelosprocedimientos.
Formatosdeinstruccinjos
yfcilesdedecodicar.
cableada
Unidaddecontrol
.
Ejecucin de una instruccin en un ciclo de mquina
, mediante procesamiento segpipe-line
mentadoo
.
Accesosamemoriamuyrestringidos
registro-registro
conunaarquitectura
(recordar
el prrafo 1.9). Esto signica que los accesos a memoria se limitan, en general, a las
LOAD y STORE).
instruccionesdecargayalmacenamiento(
Usodecompiladoresoptimizados
quesepanaprovecharlascaractersticasanterioresy
tenganencuentalasposibilidadesycaractersticasdelamquina.
Estas caractersticas se resumen en la tabla 4.4 comparndolas con las de las arquitecturas CISC C
( omplex Instruction Set Computers
: computadores con conjunto de instrucciones
complejo).
Analizaremosbrevementealgunasdeestascaractersticas:
LaejecucindelasinstruccionesenunsolociclodemquinaeslapropiedadmsimportantedelasmquinasRISC.Estoseconsiguepordosrazones:enprimerlugar,lamayorparte
delasinstruccionesoperansobreregistros,ylasqueaccedanamemoriadebeneliminarsedel
juegodeinstrucciones,salvoLOADySTORE;estoevitamuchosaccesosamemoriaqueesla
operacinmslenta;porotraparte,losprocesadoresRISCutilizanprocesamientosegmentado
o pipe-line
,ellosignicaqueseprocesanvariasinstruccionesalavezendiferentefase,como
en una fabricacin en cadena, de la forma mostrada en la gura 4.17 donde L signica que
lainstruccincorrespondienteestenlafasedelecturadelainstruccinyXsignicaquese

110

Conjuntosdeinstrucciones
Ciclo
1
InstruccinA L
InstruccinB
InstruccinC
InstruccinD

2
X
L

3
X
L

X
L

Fig.4.17. Procesadorsegmentado.

Ciclo
1
InstruccinA L
LOAD
InstruccinC
InstruccinD
STORE
InstruccinF

2
X
L

M
L

X
X
L

X
L

X
L

M
X

Fig.4.18. ProcesadorsegmentadoconinstruccionesLOADySTORE.

encuentraenlafasedeejecucin.Estoesasporqueenestetipodemquinashay,almenos,
unmduloparaprocesarcadafase.Comopuedeverseenlagura,enelciclo2seestleyendo
lainstruccinByejecutando,alavez,lainstruccinA.Conestetipodeprocesamientonose
n instruccionesen
n ciclos,loque,
consigueejecutarunainstruccinporciclo,peros,ejecutar
aefectosprcticos,esequivalente.Sinembargo,aunquelosaccesosamemoriaestnlimitados
alasinstruccionesLOADySTORE,stasnoencajanenelesquemaanterioryaquenecesitan
pipe-line
unaetapamsenel
,paraelaccesoamemoriaadicional(M)comomuestralagura4.18.Estamodicacindelosplanteamientossuponealgunosproblemas,porque,comoseve
enlagura,lainstruccinLOADquecomienzaaejecutarseenelciclo2terminadeejecutarse
almenosalmismotiempoquelainstruccinCquecomienzaenelciclo3(tambinestopuede
suponerproblemasporestarlosrganosdeejecucinocupados).MientraslainstruccinCno
intenteusarelregistrocargadoporLOADnohabrningnproblema.Dependedelcompilador
asegurarsedequelainstruccinsiguienteaLOADnouseelregistrocargadoporsta(puede
hacerloreordenandolasinstrucciones).Sianaselcompiladornoencuentralasolucin,puede
insertar,despusdelainstruccinLOAD,unainstruccindenooperacin(NOP)queresuelve
elproblemaaunque algunavezsepierda unciclo.Todasestascosasseconsiguenaadiendo
alcompiladorunmdulodenominadoreorganizador.LainstruccinSTOREnoplanteaestos
problemasyaquelainstruccinsiguiente,salvoqueseaLOADsobrelamismadireccin,no
harusodeldatoalmacenadodebidoaqueoperasobreregistrosysilainstruccinsiguientea
STOREesunLOADqueoperesobreeldatoalmacenadoporSTOREtampocohabrproblemas debido a que un compilador optimizado deber eliminar ambas instrucciones que tienen
efectoscontrarios.Tambinhayproblemassimilaresconlossaltos,especialmenteconloscondicionales,enqueelprocesadornosabeculserlainstruccinsiguiente.Otracaracterstica
importantedelosprocesadoresRISCeslaexistenciadeunbancoderegistrosmuyamplio,esto

4.6.CaractersticasdelosprocesadoresRISC
111

Fig.4.19. EstructuradeunaventanaderegistrosenunprocesadorRISC.

sehaceasparaminimizarlosaccesosamemoriayquelasinstruccionesLOADySTOREse
usenlomenosposible.Evidentementelaorganizacindelosregistrosnoserlamismaqueen
unordenadorconvencionalconregistrosdeusogeneral(PDP-11oVAX)yaquesifueraasel
nmerodebitsnecesariosparalaespecicacindelregistroseraexcesiva.Paraverculser
lamejororganizacinparaunordenadordeestetipovolvemosalasetapasdediseodescritas
anteriormente:alhacerelanlisisdelasoperacionesquemsfrecuentementerealizanaccesos
amemoriasepuedeverquesonlasllamadasaprocedimientos, porellohabrqueorganizar
losregistrosdeformaquelasllamadasaprocedimientosoptimicenlosaccesosamemoria.De
estaformasellegalaorganizacinderegistrosqueutilizanlamayoradelosprocesadores
RISC:lasllamadasventanasderegistrosconsolapamientoparcial.Estosignicaque,cadavez
quesellamaaunprocedimiento,secambiadeventanay,adems,quecadaprocedimientoslo
puedeaccederalosregistrosdesuventana.Estaventana,quesueleconteneralrededorde32
registros,estdivididaencuatrozonas(vergura4.19):
Losregistrosglobales,quesirvenparaalmacenarlasvariablesglobalesysonlosmismos
paratodaslasventanas.
Losregistrosparalosparmetrosdellamadadelprocedimientoquellamalactual.
Losregistrosconlasvariablesautomticasdelprocedimiento.
Los registros para los parmetros de llamada del procedimiento actual a otros procedimientos.
Lasventanassesolapanporquelosparmetrosdellamadadeunprocedimientosonlosparmetros con que le llam el procedimiento anterior y tambin porque las variables globales
sonlasmismasparatodaslasventanas.Elconjuntodeventanasactacomounbuffercircular
CWP : currentwindowpointer
condosapuntadores:eldelaventanaactual(
) yeldelaprimera

112

Conjuntosdeinstrucciones

Fig.4.20. Organizacindelasventanasderegistrosenformadelistacircular.

OWP : overowwindowpointer
OWP signicaquetodaslas
ventanautilizada(
), si CWP
=
ventanasestnocupadasloqueprovocaundesvoquesalvaraenmemorialaventanacorrespondiente al procedimiento con nivel de anidamiento ms profundo. El tamao del banco de
registros debe calcularse para que este desvo se produzca pocas veces; en general slo debe
producirseencasosderecursividadfuerte.Estemecanismoademsdehacermsgilelpaso
deparmetrosdeunprocedimientoaotrotambinconsiguequeelnmerodebitsnecesariosen
loscamposderegistroseamenorporquecadaprocedimientoslonecesitaaccederalosregistrosdesuventana.Enelcasodelagura4.19elnmerodebitsnecesariosparadireccionarun
registroser 2 n siendon elnmeroderegistrosdecadaunadelaszonasdeunaventana.
log (4 )
Unaformadeoptimizarelusodelosregistrosestenerencuentaelconceptodevidadelas
variablesintroducidoenelapartado4.5.1.Sielcompiladorrealizaunestudiodetalladodela
vidadetodaslasvariablesdelosprocedimientos,puedeutilizarelmismoregistroparavarias
variablescuyoperiododevidanosesuperponga.
Otradelascaractersticas delosprocesadoresRISCeslaque ledanombre, estonoslo
debe entenderse como un conjunto de pocas y sencillas instrucciones sino tambin como un
conjuntoespecializadodeinstruccionesparauntipodeaplicacinconcreto(estacionesdetra-

Bibliografayreferencias 113

bajo,sistemasexpertos,etc.).Tambinsehademencionarqueestareduccinnoslosereere
alasinstruccionessinotambin,einclusoconmsnfasis,alosmodosdedireccionamiento.
Estoesdebidoaquelosmodosdedireccionamientoqueexijanclculosdedireccionesdeben
eliminarsedebidoaqueintroduciranciclosmquinaadicionales.

Bibliografayreferencias
VAX-11AssemblyLanguageProgramming
Baase,S.1983.
. Prentice-Hall.
Brown,F.1991.ProcesseursRISC.LexampledelAm29000
. Masson.
DeBlasi,M.1990.ComputerArchitecture
. AddisonWesley.
Computer Architecture. A Quantitative Approach
Hennessy, J.L., & Patterson, D.A. 2003.
. 3 edn.
MorganKaufmannPublishers.
LesarchitecturesRISC
Heudin,J.C.,&Panetto,C.1990.
. DunodInformatique.
StructuredComputerOrganization
Tanenbaum,A.S.2006.
. 5 edn. Prentice-HallInternational. Existe
traduccinalcastellanodelaedicinanterior:Organizacindecomputadores:unenfoqueestructurado,
a
4 edicin,Prentice-HallHispanoamericana,2000.

CUESTIONESYPROBLEMAS
Notaimportante
:Paralaresolucindemuchosproblemasdeestecaptuloesnecesarioconsultar
losapndices.

4.1 EscribirlasinstruccionesdeVAXnecesariasparaponera1losbits3,6y17delregistro
R ya0losbits2,5y8.
7
4.2 RepetirelproblemaanteriorenensambladordearquitecturaSPARCconelregistro
l .
0
4.3 EscribirenensambladordeVAXlasinstruccionesnecesariasparacomplementartodos
R dejandoinalterados
losbitsdelsegundobytecomenzandoporladerechadelregistro
9
elrestodelosbitsdeeseregistro.
4.4 a)EnelregistroC deunZ-80haydoscifrascodicadasenBCDempaquetadas.Escribir
D yE.
unprogramaenlenguajeensambladordeZ-80quepaseesascifrasalosregistros
b)Codicarelprogramaanteriorencdigomquina.

114

Conjuntosdeinstrucciones

4.5 RepetirelproblemaanteriorparaunMC68000suponiendoqueenelregistro
D hay8
0
cifras en BCD y que las queremos depositar separadas en bytes seguidos
a partir de la
A cuyovalores00456F00H.
direccin
4.6 EnelregistroR deunPDP-11haydoscaracteresempaquetados.Escribirlasinstruccio5
nesnecesariasparapasarelcarctersituadoenelbytedeordenmsaltodeesteregistro
R sin alterar el resto del contenido de este registro ni el
al byte ms bajo del registro
2
R .
contenidooriginalde
5
4.7 Supongamosqueapartirdeladireccinrelocalizable
X delamemoriadeunPDP-11hay
unacadenaquerepresentaunnmerodecimalpositivodedoscifrascodicadoenASCII.
Y,
Escribirunprogramaenlenguajeensambladorparaconstruir,apartirdeladireccin
otracadenaquerepresenteelmismonmeroenhexadecimaltambinenASCII.
4.8 Demostrarlapropiedaddadaporlaecuacin4.1.
4.9 Silosregistrosl y l deunamquinaconarquitecturaSPARCrepresentanrespectiva0 1 A y B,indicarlasinstruccionesnecesariaspara:
mentesendosconjuntos
i pertenecea
B.
a)Comprobarsiunciertoelementosituadoenlaposicingenrica
b)CalcularA B .
A B.
c)Comprobarsi
4.10Supongamosque
X e Y sondoblespalabrasquerepresentanaloselementosdesendos
A y B . EscribirunfragmentodeprogramaenlenguajeensambladordeVAX
conjuntos
Incluidosiy,slosi, A B ,encasocontrariolaejecucin
quebifurquealaetiqueta
debecontinuarsecuencialmente.
4.11Supngaseque
X esunapalabraquerepresentaunconjunto
A dentrodelconjuntouniversaldelosnmerosenteroscomprendidosentre0y15.EscribirenlenguajeensamblaPertenece
dor del PDP-11 las instrucciones necesarias para bifurcar a
laetiqueta
si el
Y esunelementodelconjunto
A.
nmerocontenidoenladireccin
4.12Culdelostresmtodosdescritoseneltextoparaanalizarlainclusindeunconjunto
enotroesmenosecienteenunVAX?YenunamquinaconarquitecturaSPARC?
4.13SupongamosqueenunamquinaconarquitecturaSPARC,sendaspalabrasdememoria
a y brepresentanadosconjuntos
A y B. Escribirlasinstruccionesnecesariasenlenguaje
ensambladordedichamquinapara:
A y B.
a)Calcularlapalabraquerepresentealauninde
A y B.
b)Calcularlapalabraquerepresentealainterseccinde
A B.
c)Calcularunavariableenteraquevalga1si,yslosi,
A y B sondisjuntos.
d)Calcularunavariableenteraquevalga1si,yslosi,
4.14
Inventar un mtodo para intercambiar dos variables sin utilizar una tercera variable ni
ningnotroregistro.
Sugerencia:RecordarlaspropiedadesdelaoperacinORexclusivo.

a)
b)
c)
d)
e)

Cuestionesyproblemas115

4.15Describirlaformamsrpidadeborrarunregistrosinosedisponedeunainstruccin
especcaparaello.
4.16Todas las instrucciones siguientes tienen el mismo efecto: borrar
R el
deregistro
un
6
VAX.Sinembargo,requierendiferentenmerodebytesalcodicarlasencdigomquina.Cuntosbytesrequierecadauna?Culesmseciente?

4.17Todas las instrucciones siguientes tienen el mismo efecto: borrar


l el
deregistro
un
1
procesadorconarquitecturaSPARCCulesmseciente?
a)
d)

b)
e)

c)
f)

4.18Escribir,enensambladordelVAX,lasinstruccionesparabifurcaralaetiqueta
X silas
A, B y C sontodasmayoresque1024.En
doblespalabrascontenidasenlasdirecciones
casocontrariodebeejecutarselasiguienteinstruccin.
4.19Repetirelproblemaanteriorparaquelaejecucindelprogramacontineenlaetiqueta
X slosialgunadelasdoblespalabrasmencionadasesmayorque1024.
4.20Dibujarlagrcadedependenciadelcontadordelprogramaconrespectoaltiempopara
dosllamadasanidadasaprocedimientos.Sedebesuponerqueelcdigodentrodeambos
procedimientoseslineal.
4.21Dibujarlagrcadedependenciadelcontadordelprogramaconrespectoaltiempopara
dosbuclesanidados.Supngasequeelcdigodentrodelosbucleseslineal,queelbucle
internoseejecutatresvecesyelexternodos.
4.22Dibujarlagrcadevariacindelcontadordeprogramarespectoaltiempoparaunprograma que llama a un procedimiento recursivo que se ejecuta tres veces. La llamada
recursivadentrodelprocedimientoseproduceaproximadamenteenlamitaddelprocedimientoycuandoseproducelasalidasesaltalainstruccindellamada.
4.23Dibujarlagrcadedependenciadelcontadordeprogramaconrespectoaltiempopara
dos procedimientos que se llaman recursivamente de forma indirecta y se ejecutan dos
vecescadauno.Lasalidaseproduceenunodelosprocedimientosmedianteunabifurcacincondicionalefectivaqueprovocaquesesaltelainstruccindellamadaalotro.
4.24
Escribir las instrucciones de VAX necesarias para el intercambio de control entre dos
corrutinas.
4.25
Escribir las instrucciones de VAX necesarias para llamar a un procedimiento que tiene
dosparmetrosmediantelainstruccinCALLGperopasandolosparmetrosatravsde
lapila.
4.26a)Supngaseque,apartirdeunadireccin,cuyaetiquetaesCADENA,existeunacadenadecaracterescuyalongitudestlocalizadaenladireccinL.Escribirunprograma
enensambladordelVAXquepongaenladireccinPOSICIONladireccindelprimer

116

Conjuntosdeinstrucciones

blancoqueexistaenlacadena.SilacadenanocontieneblancosladireccinPOSICION
quedara0.
Traducir
b)
el programa escrito para resolver el apartado anterior a lenguaje mquina suponiendoqueelprogramacomienzaenladireccin0000C000Hyquelasetiquetasrepresentan los siguientes valores: CADENA: 0000A015H, POSICION: 0000BA10H, L:
0000BA20H.
4.27RepetirelproblemaanteriorparaelMC68000.
4.28a)
Escribir un procedimiento en lenguaje ensamblador del VAX que tome como parmetros dos nmeros enteros (una doble palabra, N, y un byte, M ) y una direccin. El
procedimientoescribir,apartirdeladireccinsuministrada,Mnmerosconsecutivos
apartirdeN.Elprocedimientotendrtambinunparmetrodeerror(detipobyte)que
devolverun1siMesnegativoocero).
b)Utilizarelprocedimientoescritoenelapartadoanteriorparaconfeccionarunprograma
quepidaportecladodosnmerosenteros,AyB,yescribaporpantallaBnmerosconsecutivosapartirdeA.
4.29a)EscribirlosdirectivosdellenguajeensambladordelSPARCnecesariosparareservar
espacio para la siguiente variable descrita en lenguaje Pascal Se puede suponer que el
integer
tamaode
esde2bytes.

b)Escribirlasinstruccionesdelenguajeensambladormsecientesparadepositaren
lasuma
2
i=0

v .bi
[2] [ ]

c)RepetirelapartadoanteriorparaunPDP-11.
4.30
Describir brevementelospasos necesarios paraaccederaunelemento genricodeuna
matrizdedosdimensiones.

También podría gustarte