Está en la página 1de 25

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.

2 Repertorio de instrucciones y formato de la instruccin mquina


ndice

1 Repertorio de instrucciones
Clasificacin de las instrucciones
2 Aplicaciones del repertorio de instrucciones
3.1.2 Repertorio de instrucciones y formato de la
Ejecucin alternativa
instruccin mquina Ejecucin iterativa
Parte III. Diseo del procesador Subrutinas
Mdulo 3.1 Lenguaje mquina y ensamblador
3 Formato de la instruccin mquina
Alternativas de diseo
Ingeniera Tcnica en Informtica Nmero de operandos explcitos
Ejemplos
Facultad de Informtica - Universidad Complutense de Madrid
4 Arquitecturas CISC y RISC
Arquitecturas CISC
Arquitecturas RISC
Ejempos

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Clasificacin de las instrucciones (1/2) Clasificacin de las instrucciones (2/2)

Transferencia de datos, permiten el movimiento entre distintos


dispositivos de almacenamiento del computador
Otras instrucciones
Aritmticas, permiten realizar operaciones de tipo aritmtico
Transformacin de datos
Lgicas y de manipulacin de bits, permiten realizar operaciones Manipulacin de direcciones
lgicas, bit a bit, entre los operandos o manipular un bit del Creacin de marcos de almacenamiento local
operando Control del sistema
Entrada / Salida
Desplazamiento y rotacin, permiten desplazar o rotar un operando
a la decha. o la izda. un no determinado de bits
Control de flujo, permiten romper la secuencia normal de ejecucin
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Transferencia de datos (1/2) Transferencia de datos (2/2)

Instruccin Operacin Descripcin


MOVE fnte, dest dest fnte Transfiere palabra de reg. a reg.,
reg. a mem, mem. a reg o mem. a
mem. (fuente= mem. o reg.; des-
Permiten el movimiento entre distintos dispositivos de tino = mem. o reg.)
almacenamiento del computador (registros, memoria y pila) LOAD Ri, dir Ri dir Transfiere palabra de memoria a
Necesario especificar registro
STORE dir, Ri Ri dir Transfiere palabra de registro a
Tipo de movimiento memoria
Direccin de operandos fuente y destino PUSH fnte Pila fnte Transfiere palabra de mem. o reg.
Tamao de datos a mover (byte, palabra, doble palabra, ...) a la cabecera de pila
No de elementos a mover (para movimientos mltiples) POP dest dest Pila Transfiere palabra de cabecera de
pila a mem. o reg.
MOVEM fnte, dest, n dest0 fnte0 Transfiere n palabras a partir de
una dir. inicial fuente y una dir.
inicial destino
destn1 fnten1

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Instrucciones aritmticas (1/2) Instrucciones aritmticas (2/2)

Instruccin Operacin Descripcin


Permiten realizar operaciones de tipo aritmtico ADD fnt1,fnt2,dest destfnt1+fnt2 Suma dos operandos
Necesario especificar SUB fnt1,fnt2,dest destfnt1-fnt2 Resta dos operandos
MULT fnt1,fnt2,dest destfnt1fnt2 Multiplica dos operandos
Tipo de operacin (suma, resta, multiplicacin, divisin, etc.) DIV fnt1,fnt2,dest destfnt1/fnt2 Divide dos operandos
Tipo de operandos y de aritmtica (con signo, sin signo, entera, NEG fnte,dest dest-fnte Cambia de signo al operando
punto flotante, BCD, ...) ABS fnte,dest destabs(fnte) Obtiene el valor absoluto
Tamao de datos sobre los que se opera INC fnte,dest destfnte+1 Suma 1 al operando
Direccin de operandos fuente y destino (0, 1, 2 3, segn el DEC fnte,dest destfnte-1 Resta 1 al operando
repertorio) COMP fnt1,fnt2 fnt1-fnt2 Resta y activa los bits de
estado segn resultado
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Instrucciones lgicas y de manipulacin de bits (1/2) Instrucciones lgicas y de manipulacin de bits (2/2)

Permiten realizar operaciones lgicas, bit a bit, entre los operandos


Instruccin Operacin Descripcin
o manipular un bit del operando AND fnt1,fnt2,dest destfnt1fnt2 Y lgica
Necesario especificar OR fnt1,fnt2,dest destfnt1fnt2 O lgica
Tipo de operacin (AND, OR, NOT, Bit Clear, Bit Set, etc) NOT fnte,dest dest fnte Negacin
Tamao de datos sobre los que se opera (byte, palabra, doble palabra, XOR fnt1,fnt2,dest destfnt1fnt2 O exclusiva
...) BCLR dest,n dest(n)0 Pone a 0 el bit n
Direccin de operandos fuente y destino (0, 1, 2 3, segn el BSET dest,n dest(n)1 Pone a 1 el bit n
repertorio) BTEST fnte,n Estadofnte(n) Activa flag segn bit n
El nmero de bit en las instrucciones de manipulacin de bit

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Desplazamiento y rotacin (1/2) Desplazamiento y rotacin (2/2)

Instruccin Operacin Descripcin


Permiten desplazar o rotar un operando a la decha. o la izda. un no
determinado de bits LSL fnte,n Desp. lgico izda. n bits
Necesario especificar LSR fnte,n Desp. lgico dcha. n bits
Tipo de operacin (desplazamiento izda. o decha., rotacin izda. o
decha., ) ASL fnte,n Desp. aritm. izda. n bits
Tamao de datos sobre los que se opera (byte, palabra, doble palabra, ASR fnte,n Desp. aritm. dcha. n bits
...)
Direccin del operando RL fnte,n Rotacin izquierda n bits
No de bits a desplazar o rotar RR fnte,n Rotacin derecha n bits
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Control de flujo (1/4) Control de flujo (2/4)

Permiten romper la secuencia normal de ejecucin y saltar a una


determinada direccin especificada en la instruccin o implcita Instruccin Operacin Descripcin
JMP dir PCdir Salta (Jump) a dir
Necesario especificar
Bcc dir if(cc) PCdir Bifurca (Branch) a dir
Direccin de siguiente instruccin a ejecutar si el salto es explcito else PCPC+longInstr si (cc) es cierta
Las instrucciones de bifurcacin o salto condicional (Bcc), saltan o JSR dir Pila(PC,STR) Salto a subrutina
PCdir Guarda PC y estado
no en funcin de la condicin especificada (cc)
RTS (PC,STR)Pila Retorno subrutina, recupera PC y STR
Esta condicin se calcula a partir de los bits de condicin del SKIP n PCPC+nlongInstr Salta n instrucciones
registro de estado NOP PCPC+longInstr No hace nada, siguiente instr.
Los bits de condicin se activan segn el resultado de las
instrucciones que se detallan en las siguientes tablas

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Control de flujo (3/4) Control de flujo (4/4)

cc Nombre Cierta si cc Nombre Cierta si


EQ Igual (Equal) En una comparacin previa los operandos son P Positivo El resultado de una operacin anterior es po-
iguales sitivo
NEQ No igual (No equal) En una comparacin previa los operandos son N Negativo El resultado de una operacin anterior es ne-
distintos gativo
GT Mayor que (Greater Than) En una comparacin previa el primer operan- C Acarreo (Carry) El resultado de una operacin anterior ha
do es mayor que el segundo producido acareo
GE Mayor o igual (Gr. or Eq.) En una comparacin previa el primer operan- NC No acarreo (No Carry) El resultado de una operacin anterior no ha
do es mayor o igual que el segundo producido acareo
LT Menor que (Less Than) En una comparacin previa el primer operan- V Desbord. (Overflow) El resultado de una operacin anterior ha
do es menor que el segundo producido desbordamiento
LE Menor o igual (Les.or Eq.) En una comparacin previa el primer operan- NV No desbord. (No Overfl.) El resultado de una operacin anterior no ha
do es menor o igual que el segundo producido desbordamiento
Z Cero (Zero) El resultado de una operacin anterior es cero T Verdad (True) Siempre cierta
NZ No cero (No Zero) El resultado de una operacin anterior es dis- F Falso (False) Siempre falsa
tinto de cero
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Repertorio de instrucciones Repertorio de instrucciones
Clasificacin de las instrucciones Clasificacin de las instrucciones

Otras instrucciones (1/2) Otras instrucciones (2/2)


Transformacin de datos
Cambian el formato de los datos, por ej. de decimal a binario Control del sistema
Manipulacin de direcciones Suelen ser instrucciones privilegiadas que usa el sistema operativo
Permiten calcular la direccin efectiva de un operando y almacenarla
en un registro o en pila RESET (para reiniciar el computador: PCvalor inicial)
RTE (retorno de excepcin o interrupcin)
LEA fnt,reg (Load effective address: reg Dir de fnt)
PEA fnt (Push Effective Address: Pila Dir de fnte) E/S
Para entrada y salida de datos entre el computador y dispositivos
Creacin de marcos de almacenamiento local perifricos
Permiten reservar espacio en la pila del sistema, p. ej:
IN dirPerif,reg (regPerifrico)
LINK reg,#tam (Pilareg, regSP, SPSP+tam) OUT dirPerif,reg (Perifricoreg)
UNLK reg (SPreg, regPila)

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Ejecucin alternativa Ejecucin alternativa

Ejecucin alternativa Ejecucin alternativa simple

Segn el valor de cierta condicin o valor, se decide entre varios


caminos de ejecucin ...
Simple: Un slo if i f ( a cc b ) then CMP a , b
Doble: if..else bloque BNcc end
Mltiple: Mltiples if..elseif
end bloque
Selectiva: switch, case
end . . .
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Ejecucin alternativa Ejecucin alternativa

Ejecucin alternativa doble Ejecucin alternativa mltiple

CMP a0 , b0
i f ( a0 cc0 b0 ) then BNcc0 i f 1
bloque0 bloque0
e l s e i f ( a1 cc1 b1 ) then JMP end
i f ( a cc b ) then CMP a , b bloque1 i f 1 CMP a1 , b1
blqthen BNcc e l s e BNcc1 i f 2
e l s e i f ( an ccn bn ) then bloque1
else blqthen
bloquen JMP end
blqelse JMP end else
end else blqelse blqelse i f n CMP an , bn
end end BNccn e l s e
bloquen
JMP end
else blqelse
end

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Ejecucin alternativa Ejecucin iterativa

Ejecucin alternativa selectiva Ejecucin iterativa

t a b l a DATA e t q 0
case a of DATA e t q 1
0: bloque0
1: bloque1 DATA e t q n Segn el valor de cierta condicin, se decide repetir la ejecucin de
cierto bloque de cdigo
n: bloquen MOVE a , D1 Con evaluacin al final: repeat..until
end LEA t a b l a (D1 t a m _ d i r ) , A1 Con evaluacin al principio: while
JMP ( A1 ) Con un nmero definido de iteraciones: for i=1,n
etq0 bloque0
JMP end
etq1 bloque1
JMP end

etqn bloquen
end
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Ejecucin iterativa Ejecucin iterativa

Con evaluacin al final Con evaluacin al principio


repeat repeat bloque w h i l e a cc b do w h i l e CMP a , b
bloque CMP a , b bloque BNcc end
u n t i l a cc b BNcc r e p e a t end bloque
JMP w h i l e
end

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Ejecucin iterativa Subrutinas

Con un nmero definido de iteraciones Llamada a subrutina (1/5)

Supongamos:
Una memoria direccionada por bytes
Un tamao palabra de 16 bits
Un tamao de direccin de 32 bits
que un integer se representa mediante palabra
f o r c := n to m do MOVE n , c
bloque f o r CMP m, c
end BGT end
bloque procedure sub ( a , b : i n t e g e r ; v a r c : i n t e g e r )
INC c begin
bloque
JMP f o r
end
end
sub ( x , y , z ) ;

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Subrutinas Subrutinas

Llamada a subrutina (2/5) Llamada a subrutina (3/5)

Acceso a parmetros Memoria


...
;Salva contexto
Parmetros Memoria SP (A0)
... sub PUSH SR
sub(x,y,z) PUSH D0
SP etq SP (D1) 4(SP)
PUSH x PUSH D1 SP (D0) 6(SP)
PUSH y SP EA(z)
PUSH A0 SP (SR) 8(SP)
PEA z; !! etq 10(SP)
SP y MOVE 20(SP),D0 ;a
JSR sub MOVE 18(SP),D1 ;b
SP x EA(z) A014(SP)
etq ... ... MOVE 14(SP),A0 ;c en
&z y D118(SP)
x D020(SP)
bloque ...

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Subrutinas Subrutinas

Llamada a subrutina (4/5) Llamada a subrutina (5/5)

Restaura contexto Memoria ; p a s o param sub PUSH SR ; s a l v a c o n t e x t o


... PUSH x PUSH D0
POP A0 PUSH y PUSH D1
SP (A0) A0
POP D1 PEA z PUSH A0
POP D0 SP (D1) D1 ; llamada ; a c c e s o a param
POP SR SP (D0) D0 JSR sub MOVE 1 4 ( SP ) , D0
SP (SR) SR // l i b e r a c i n param MOVE 1 8 ( SP ) , D1
RTS e t q ADD #8,SP MOVE 2 0 ( SP ) , A0
SP etq JMP etq
bloque
SP EA(z) ; restaura contexto
POP A0
y POP D1
x POP D0
... POP SR
RTS ; r e t o r n o a e t q
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Subrutinas Subrutinas

Subrutina con variables locales (1/5) Subrutina con variables locales (2/5)

Llamada a subrutina: Variables locales


Realizar la traza anterior con el siguiente fragmento de programa
Parmetros Memoria
...
procedure sub ( a , b : i n t e g e r ; v ar c : i n t e g e r ) sub(x,y,z)
SP etq
v ar l o c 1 , l o c 2 , l o c 3 : i n t e g e r PUSH x
begin PUSH y SP EA(z)
bloque
PEA z; !!
end SP y
JSR sub
SP x
sub ( x , y , z ) ; etq ... ...

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Subrutinas Subrutinas

Subrutina con variables locales (3/5) Subrutina con variables locales (4/5)

Acceso a parmetros Memoria


SP (A0)
;Puntero de marco Restaura contexto Memoria
sub LNK Ai,#-6 POP A0 SP (A0) A0
SP (D1)
;Salva contexto SP (D0) POP D1 SP (D1) D1
PUSH SR SP (SR) POP D0 SP (D0) D0
SP -6(Ai)loc3
PUSH D0 POP SR SP (SR) SR
-4(Ai)loc2
PUSH D1 UNLK Ai SP (Ai) Ai
-2(Ai)loc1
PUSH A0 Ai (Ai) RTS SP etq JMP etq
bloque
SP etq
SP EA(z) 8(Ai)
El mapa de memoria de la EA(z) 8(Ai)
y 12(Ai)
figura constituye el marco x 14(Ai)
y 12(Ai)
de activacin de la
x 14(Ai)
subrutina.
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Aplicaciones del repertorio de instrucciones Aplicaciones del repertorio de instrucciones
Subrutinas Subrutinas

Subrutina con variables locales (5/5) Anidamiento de subrutinas


Suponiendo que la subrutina "sub" es recursiva, la evolucin de la
pila tras dos llamadas es la siguiente.
; p a s o param ; r e a l o c a l de v a r i a b l e s
PUSH x sub LNK Ai ,#6
PUSH y PUSH SR ; s a l v a c o n t e x t o
PEA z PUSH D0
; llamada PUSH D1
JSR sub PUSH A0
// l i b e r a c i n param bloque
e t q ADD #8,SP ; restaura contexto
POP A0
POP D1
POP D0
POP SR
UNLK A i
RTS ; r e t o r n o a e t q

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Alternativas de diseo Alternativas de diseo

De cdigo ensamblador a programa en memoria De cdigo ensamblador a programa en memoria


Ensamblador (assembler)

Resuelve las etiquetas de instrucciones y datos


Relativas a PC para instrucciones
Relativas a algn registro para datos
Expande macros y pseudo-instrucciones
Interpreta las directivas de ensamblaje
Fa la representacin de los datos
Traduce las instrucciones a cdigo mquina
Crea el fichero objeto
Determina cabeceras, segmentos de cdigo y segmentos de datos
Crea tablas de smbolos: smbolos no resueltos + smbolos visibles
Aade informacin para la depuracin
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Alternativas de diseo Alternativas de diseo

De cdigo ensamblador a programa en memoria De cdigo ensamblador a programa en memoria


Enlazador (Linker) Cargador (Loader)

Lee y carga sobre memoria el cdigo ejecutable


Combina varios cdigos objeto, resolviendo las referencias cruzadas Inicializa registros, pila y argumentos
Crea un cdigo ejecutable Fa los vectores de excepcin
Salta a la rutina de inicio del programa

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Alternativas de diseo Alternativas de diseo

De cdigo ensamblador a programa en memoria Elementos constitutivos de una instruccin mquina


Ciclo instruccin

Cdigo de operacin (opcode)


Especifica el tipo de operacin a realizar: Suma, Resta, Y lgica,
Movimiento de datos, etc.
Operandos fuente
La instruccin puede involucrar uno o ms operandos fuente (o
ninguno)
Estos podrn especificarse utilizando distintos modos de
direccionamiento
Operando destino
Si la instruccin produce un resultado deber especificar el operando
destino
Este podr especificarse utilizando distintos modos de
direccionamiento
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Alternativas de diseo Alternativas de diseo

Elementos constitutivos de una instruccin mquina Alternativas de diseo del formato de instruccin

Instruccin siguiente
En ocasiones es necesario especificar cul es la siguiente instruccin a
ejecutar A la hora de disear el formato de las instruc. mquina de un
Normalmente la ejecucin del programa es secuencial, donde la repertorio, debemos decidir
direccin de la siguiente instruccin suele ser implcita: Cul ser la longitud de las instrucciones
Dir. instr. siguiente = Dir. instr. actual + Longitud Todas las instrucciones de igual longitud
instr. actual Instrucciones de distinta longitud, segn el tipo de operacin a realizar
En las instrucciones de salto s es necesario especificar la dir. de la De cuntos campos constar la misma (dependiendo del tipo de
siguiente instruccin instruccin)
Ruptura de la secuencia normal del programa Cuntos bits ocuparn cada uno de esos campos
Codificacin de cada campo
Instruccin mquina
opcode op. fuente 1 ..... op. fuente n op. destino instr. siguiente

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Alternativas de diseo Nmero de operandos explcitos

Alternativas de diseo del formato de instruccin Introduccin

Los principales factores a tener en cuenta para decidir este formato


son
Nmero de operaciones distintas presentes en el repertorio Una operacin tpica de un computador (p. e. A=B+C) suele tener
Aritmticas, lgicas, de control, de movimiento de datos, ... tres operandos
Nmero de operandos de la instruccin (incluyendo operandos fuente Dos operandos fuente B y C y un operando destino A
y destino)
Las principales alternativas que se presentan son
Instrucciones sin operandos
Instrucciones con 1, 2, 3, ... operandos Instrucciones con tres operandos explcitos
Modos de direccionamiento disponibles para cada operando Instrucciones con dos operandos explcitos
Instrucciones con un nico operando explcito
Inmediato, absoluto, de registro, indirecto, ...
Instrucciones sin operandos explcitos
Tamao y tipos de datos soportados
Bit, byte, palabra, doble palabra, ...
Caracteres, BCD, magnitud y signo, complemento a 2, punto
flotante, ...
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Nmero de operandos explcitos Nmero de operandos explcitos

Instrucciones con tres operandos explcitos Instrucciones con dos operandos explcitos

Se especifican los tres operandos en la instruccin mquina Dos operandos explcitos y uno implcito
Cada operando puede soportar distintos modos de direccionamiento Uno de los operandos acta como fuente y destino
Cada operando puede soportar distintos modos de direccionamiento
Formato flexible, pero ocupa mucho espacio
Es menos flexible, pero ocupa menos espacio
Ejemplo
Ejemplo
ADD A,B,C (AB+C)
ADD B,C (BB+C)

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Nmero de operandos explcitos Nmero de operandos explcitos

Instrucciones con un operando explcito Instrucciones sin operandos explcitos

Tanto los operandos como el resultado se almacenan en la pila del


sistema
Se especifica un slo operando en la instruccin mquina Ocupa muy poco espacio
Uno de los operandos y el resultado se almacenan en un registro
especial del procesador: el acumulador Requiere varias instrucciones previas de acceso a la pila
El operando puede soportar distintos modos de direccionamiento
Ejemplo
Formato muy reducido, pero poco flexible
ADD ((SP)(SP)+(SP+1))
Ejemplo
ADD B (Acum.B+Acum.)
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Formato de la instruccin mquina
Ejemplos Ejemplos

Ejemplo: Nmero de operandos Ejemplo: Diseo de instruccin mquina

Diseo de instruccin mquina


Disear el formato de las instrucciones de un computador con 8 registros
Ejemplo de propsito general que permita codificar en una instruccin de 32 bits:
12 instrucciones de 3 operandos
Escribir los programas simblicos para la siguiente operacin:
Dos operandos, con direccionamiento absoluto e indirecto de memoria
Y = (A B)/(C + D E )
Un operando, con direccionamiento de registro en indirecto de registro
en un computador de 0, 1, 2 3 operandos, utilizando las instrucciones
150 instrucciones de 2 operandos
que sean necesarias y sin sobreescribir el contenido de ninguno de los
Un operando, con direccionamiento absoluto e indirecto de memoria
operandos fuente.
Un operando, con direccionamiento de registro en indirecto de registro
30 instrucciones de 0 operandos
Nota: El campo direccin de los operandos con direccionamiento
absoluto e indirecto de memoria ser de 11 bits.

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Formato de la instruccin mquina Arquitecturas CISC y RISC
Ejemplos Arquitecturas CISC

Ejemplo: Diseo de instruccin mquina Introduccin

CISC
Solucin
Complex Instruction Set Computer
Computador de conjunto de instrucciones complejo

Desde los aos 60 (en que aparece la unidad de control


microprogramada) hasta principio de los aos 80 la tendencia ha
sido incrementar la complejidad de la CPU
Gran nmero de instrucciones en el repertorio e instrucciones
complejas
Uso de gran nmero de modos de direccionamiento complejos
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Arquitecturas CISC Arquitecturas CISC

Introduccin Problemas de las arquitecturas CISC

Esta tendencia se debe a varias razones


Aparecen lenguajes de programacin de alto nivel cada vez ms
sofisticados
Los estudios de ejecucin de programas en arquitecturas CISC
Diseo de instrucciones complejas que permitan implementar
revelan que
instrucciones de alto nivel directamente o con un pequeo nmero de
instrucciones mquina La mayor parte de las instrucciones complejas apenas se utilizan en
Una instruccin de alto nivel compleja implementable directamente programas reales
en hardware, mejora la eficiencia del programa ya que se ejecuta Lo mismo ocurre con modos de direccionamiento complejos
mucho ms rpidamente Dificultad para disear compiladores eficientes
Gracias al uso de unidad de control microprogramada, se pueden Al aumentar la complejidad del repertorio se hace cada vez ms difcil
disear compiladores que aprovechen realmente esta gran variedad y
implementar estas instrucciones mquinas complejas de forma
versatilidad de instrucciones mquina
simple, sin demasiado coste para el diseador
Facilidad para mantener la compatibilidad hacia abajo con los
miembros de la misma familia
Aadir nuevas instrucciones al repertorio, manteniendo las antiguas

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Arquitecturas CISC Arquitecturas RISC

Problemas de las arquitecturas CISC Caractersticas

Las instrucciones ocupan mucho espacio en memoria Repertorio de instrucciones simple y ortogonal
Al existir un gran nmero de instrucciones y de modos de Slo se dispone de instrucciones mquina bsicas
direccionamiento se necesita mucho espacio para codificar las Repertorio ortogonal: no existen varias instrucciones distintas para
instrucciones mquina y se tarda ms tiempo en leerlas de memoria realizar la misma operacin
El tiempo de acceso a memoria para captar instrucciones (Fetch)
resulta cada vez ms crtico conforme evolucionan los computadores Modos de direccionamiento sencillos
Cada operando slo soporta unos pocos modos de direccionamiento
simples
Debido a estos problemas a principio de los 80 surge la arquitectura RISC
Formatos de instruccin uniformes
(Computador de conjunto de instrucciones reducido)
Nmero reducido de formatos de instrucciones distintos
Idea bsica: hacer rpidos y eficientes los casos ms comunes a costa de
Todas las instrucciones de longitud similar
reducir la velocidad en los casos menos comunes
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Arquitecturas RISC Arquitecturas RISC

Caractersticas Ventajas de las arquitecturas RISC

Tipos de datos simples


Las instrucciones slo soportan unos pocos tipos de datos bsicos
distintos Su estructura es mucho ms simple
Arquitectura de tipo registro-registro Es ms rpido y puede trabajar a mayor velocidad
Su diseo es ms sencillo y barato
Slo algunas instrucciones MIPS: LOAD (MemReg) y MIPS: STORE
(RegMem) hacen referencia a memoria Instrucciones ms cortas
El resto de instrucciones (aritmticas, lgicas, etc.) son de tipo Tardan menos tiempo en leerse de memoria
registro-registro Mayor simplicidad para generar cdigo mquina
Tanto los operandos fuente como destino son registros de la Los compiladores son ms eficientes y ms sencillos de disear
arquitectura
Las arquitecturas RISC suelen caracterizarse por disponer de un gran
nmero de registros de propsito general

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Arquitecturas RISC Ejempos

Desventajas de las arquitecturas RISC Computadores CISC

El compilador genera un mayor nmero de instrucciones mquina VAX 11 (desaparecido)


Se necesitan varias instrucciones para ejecutar las instrucciones de IBM Mainframes
alto nivel serie 360, 370 y descendientes
Mayor nmero de instrucciones Instrucciones ms rpidas Intel 80x86
Ms difcil mantener la compatibilidad entre computadores de la i8086, i80286, i80386, i80486, Pentium, Pentium II, ..., Pentium IV,
misma familia IA64
Para disear un repertorio simple no se pueden heredar todas las Motorola MC68xxx
instrucciones
MC68000, MC68010, MC68020, MC68030, MC68040, MC68060
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Computadores RISC Ejemplo: MC68000


Caractersticas

Motorola MC88000 (desaparecido)


MIPS Rxxxx
R2000, R3000, R4000, R5000, R8000, R10000, R12000 Procesador CISC de 16 bits
Sun SPARC Aprox. 90 instrucciones mquina
SPARC, Super SPARC 2, Ultra SPARC I, Ultra SPARC II, Ultra 12 modos de direccionamiento
SPARC III 9 formatos de instruccin distintos y con tamaos de una a cinco
HP PA-RISC palabras
7100, 7200, 7300, 8000, 8200, 8500 Ancho del bus de datos: 16 bits
Tamao mnimo direccionable: 1 byte
PowerPC Ancho del bus de direcciones: 24 bits (224 bytes = 16 MB de
601, 602, 603, 604, 620, 630, Power3 memoria direccionables)
DEC Alpha
21064, 21064a, 21066a, 21164, 21164a, 21264
Intel 80860, Intel 80960

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Modos de funcionamiento Tipos de datos y direccionamiento

Modo usuario
Modo normal de ejecucin de programas
No tiene acceso a determinadas instrucciones privilegiadas Tipos de datos: Visto en tema anterior
No tiene acceso a determinados registros del supervisor Registros de la arquitectura: Visto en tema anterior
Modo supervisor Registro de estado: Visto en tema anterior
Modo de ejecucin del Sistema Operativo y durante el tratamiento de
Modos de direccionamiento: Visto en tema anterior
interrupciones
Tiene acceso a todas las instrucciones privilegiadas y a registros del
supervisor
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Formato de las instrucciones Formato de las instrucciones

Caractersticas
Instrucciones de 0, 1 y 2 operandos
9 formatos distintos
Longitud entre 1 y 5 palabras
Contenidos de una instruccin mquina
Palabra operacin (OW, siempre presente)
Primera palabra de la instruccin: Contiene el cdigo de operacin,
modos de direccionamiento y tamao de los operandos
Palabra de extensin (EW, de 0 a 4)
Informacin adicional de los operandos: Valor inmediato y
desplazamiento
Codificacin modos de direccionamiento
Dos campos: modo y registro (6 bits)

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Formato de las instrucciones Instrucciones de 0 y 1 operandos

Instrucciones de 0 operandos
EA
Codificacin de los modos de direccionamiento modo Registro
Directo de reg. de datos 000 No de reg. (Dn)
Directo de reg. de direcciones 001 No de reg. (An)
Indirecto de reg. 010 No de reg. (An)
Indirecto de reg. con postincr. 011 No de reg. (An) Instrucciones de 1 operando
Indirecto de reg. con predecr. 100 No de reg. (An)
Indirecto de reg. con desplaz. 101 No de reg. (An)
Indirecto de reg. index. con deplaz. 110 No de reg. (An)
Absoluto corto 111 000
Absoluto largo 111 001
Relativo al PC con deplaz. 111 010
Relativo al PC index. con deplaz. 111 011
Inmediato 111 100
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Instrucciones de 2 operandos Otras

3 formatos 2 operandos con operando inmediato corto

Bifurcacin condicional: Bcc

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Instrucciones de movimiento de datos Instrucciones de aritmtica entera

INSTR. DESCRIPTION EXAMPLE


INSTR. DESCRIPTION EXAMPLE ADDx/SUBx add/subtract the contents of a source to/from the
Copies an 8-, 16- or 32-bit value from MOVE.B #$8C,D0 [D0]$XXXXXX8C ADDx contents of a destination and deposits the result in the ADD.W D0,D1 [D1]$11118123
MOVE one memory location or register to MOVE.W #$8C,D0 [D0]$XXXX008C destination location. Direct memory-to-memory operations are ADD.L D0,D1 [D1]$22228123
another memory location or register MOVE.L #$8C,D0 [D0]$0000008C SUBx not permitted. Assume [D0]=$11118000 and ADDQ #N,D1 N [1, 8]
Copies a source operand to an [D1]=$11110123. SUB.L D1,D0 [D0]$00007EDD
address register. MOVEA operates MOVEA.W #$8C00,A0 [A0]$FFFF8C00 MULU (multiply unsigned) forms the product of two 16-bit
MOVEA only on words or longwords. MULU integers. The 32-bit destination must be a data register. MULS MULU #$0800,D0 [D0]$00400000
MOVEA.W sign-extends the 16-bit MOVEA.L #$8C00,A0 [A0]$00008C00 MULS is similar but treats data as signed. Assume
operand to 32 bits. [D0]=$ABCD8000.
Copies a 8-bit signed value in the DIVU (divide unsigned) works with a 32-bit dividend and a
range 128 to +127 to one of the eight MOVEQ #-3,D0 [D0]$FFFFFFFD DIVU 16-bit divisor. The dividend must be a data register. The 16-bit
MOVEQ data registers. The data to be moved result is stored in the low word of the destination, and the DIVS #-3,D0 [D0]$0002FFFC
is sign-extended before it is copied to MOVEQ #4,D0 [D0]$00000004 DIVS 16-bit remainder in the high word. DIVS is similar but treats
its destination. data as signed. Assume [D0]=$0000000E, 1410 .
Transfers the contents of a group of CRL (clear) writes zeros into the destination operand. NEG
registers specified by a list. The list of CLR (negate) performs a 2s complement operation on the CLR.B D0 [D0]$1234B000
MOVEM registers is defined as Ai Aj /Dp Dq . MOVEM.L A0-A3/D0-D7,-(A7) ;copies all working NEG destination datasubtracts it from zero. Assume CLR.L D0 [D0]$00000000
MOVEM operates only on words or ;registers to stack [D0]=$1234B021. NEG.W D0 [D0]$12344FDF
longwords. Sign-extend increases the bit-size of a signed integer. EXT.W
EXT converts an 8-bit into a 16-bit, and EXT.L converts a 16-bit EXT.W D0 [D0]$12340021
into a 32-bit. Assume [D0]=$1234B021. EXT.L D0 [D0]$FFFFB021
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Instrucciones booleanas Instrucciones de desplazamiento y rotacin

INSTR. OPERATION SCHEME

ASL Arithmetic shift left


INSTR. DESCRIPTION EXAMPLE
AND Bit-wise logical AND operation.
Normally used to clear, or mask, ANDI.B # %0111111,D0 clear the 8th least ASR Arithmetic shift right
ANDI certain bits in a destination operand. significant bit of D0
OR Bit-wise logical OR operation.
Normally used to set certain bits in a ORI.B # %10101010,D0 set even bits of D0 LSL Logic shift left
ORI destination operand. lowest byte
EOR Bit-wise logical XOR operation. EOR.B # %11111111,D0 XOR of the lowest byte of D0
EORI LSR Logic shift right
NOT Bit-wise NOT operation. Assume NOT.W D0 [D0]$12340F0F
[D0]=$1234F0F0.
TST Similar to CMP #0,operand TST D0 update N,Z and clear V,C ROL Rotate left

ROR Rotate right

SWAP Swap words of a long word

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Instrucciones de manipulacin de bits Instrucciones BCD

INSTR. DESCRIPTION EXAMPLE: Assume [D0]=$00000009


Bit test and set Causes the Z-bit to
INSTR. DESCRIPTION EXAMPLE: Assume [X]=0, [D0]=48, [D1]=21
BSET be set if the specified bit is zero and BSET #2, D0 [D0]$0000000D, Z1
then forces the specified bit of the Adds the source operand and the X-bit to the
operand to be set to one ABCD destination operand using BCD arithmetic. This is ABCD D0,D1 [D1]$00000069
a BYTE operation only; the X-bit is used to provide
Bit test and clear works like BSET
a mechanism for multi-byte BCD operations.
BCLR except that the specified bit is BCLR #0, D0 [D0]$00000008, Z0
cleared (forced to zero) after it has Subtract the source operand and the X-bit from the
been tested SBCD destination operand using BCD arithmetic. This is SBCD D1,D0 [D0]$00000027
a BYTE operation only, so the X-bit is used to
Bit test and change causes the
provide a mechanism for multi-byte BCD operations.
BCHG value of the specified bit to be BCHG #4, D0 [D0]$00000019, Z1
reflected in the Z-bit and then toggles NBCD Subtract the destination operand and the X-bit NBCD D1 [D1]$00000052
(inverts) the state of the specified bit from zero. [X]1, [V]1, [C]1
BTST Bit test reflects the value of the BTST #2, D0 Z1
specified bit in the Z-bit
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MC68000 Ejemplo: MC68000


Instrucciones de flujo Instrucciones de control

INSTR. DESCRIPTION cc CONDITION BRANCH TAKEN IF


BRA BRA (branch always) implements an un- CC Carry clear C =0
conditional branch, relative to the PC. The CS Carry set C =1
offset is expressed as an 8- or 16-bit signed NE Not equal Z =0 INSTR. DESCRIPTION
integer. If the destination is outside of a EQ Equal Z =1 MOVE
16-bit signed integer, BRA cannot be used. ANDI Unique variations of MOVE, AND, OR and EOR that allow
PL Plus N =0
Bcc Bcc (branch conditional) is used whenever ORI altering the bits in the status and condition code registers.
MI Minus N =1
program execution must follow one of two EORI
HI Higher than CZ = 1 TRAP performs three operations: (1) pushes the PC and SR
paths depending on a condition. The con-
LS Lower than or same as C +Z =1 TRAP to the stack, (2) sets the execution mode to supervisor and
dition is specified by the mnemonic cc. The
offset is expressed as an 8- or 16-bit signed GT Greater than NV Z + NVZ = 1 (3) loads the PC with a new value read from a vector table
integer. If the destination is outside of a LT Less than NV + NV = 1 STOP loads the SR with an immediate operand and stops
16-bit signed integer, Bcc cannot be used. GE Greater than or equal to NV + NV = 0 STOP the CPU. RESET asserts the CPUs RESET line for 124
BSR,RTS BSR branches to a subroutine. The PC is LE Less than or equal to Z + (NV + NV ) = 1 RESET cycles. If STOP or RESET are executed in user mode, a
saved on the stack before loading the PC VC Overflow clear V =0 privilege violation occurs.
with the new value. RTS is use to return VS Overflow set V =1
from the subroutine by restoring the PC T Always true Always
from the stack.
F Always false Never
JMP JMP (jump) is similar to BRA. The only
difference is that BRA uses only relative ad-
dressing, whereas JMP has more addressing
modes, including absolute address (see re-
ference manual).

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MIPS Ejemplo: MIPS


Caractersticas Caractersticas

Procesador RISC de 32 bits Banco de 64 registros (32 bits cada uno)


70 instrucciones mquina 32 de propsito general (R0-R31)
Repertorio ortogonal 32 para instrucciones en punto flotante (F0-F31). Pueden usarse
Instrucciones clasificadas en cuatro grupos como:
Movimiento de datos 32 registros para operaciones en simple precisin (32 bits)
Aritmtica entera, logicas y desplazamiento 16 registros para operaciones en doble precisin (64 bit)
Control de flujo
3 formatos de instruccin distintos con longitud nica de 32 bits
Aritmtica en punto flotante
Arquitectura registro-registro
4 modos de direccionamiento
Slo las instrucciones de LOAD y STORE hacen referencia a memoria
Inmediato El resto de instrucciones operan sobre registros
Directo de registros
Instrucciones con tres operandos: 2 op. fuente y 1 op. Destino
Indirecto con desplazamiento Notacin ensamblador: op x,y,z x (y) op (z)
Indirecto con desplazamiento relativo al PC
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MIPS Ejemplo: MIPS


Tipos de datos Modos de direccionamiento

Directo de registro
Enteros Reales en punto flotante
Tamao Byte (8 bits) Simple precisin (32 bits)
Tamao Media palabra (16 Doble precisin (64 bits) Inmediato
bits)
Tamao Palabra (32 bits)
Indirecto con desplazamiento

Indirecto con desplazamiento relativo a PC

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MIPS Ejemplo: MIPS


Formato de la instruccin mquina: Instruccin de tipo I Formato de la instruccin mquina: Instruccin de tipo R

Instruc. aritmticas, lgicas y desplazamiento de tipo de


registro-registro
El campo funcin especifica el tipo de operacin a realizar: suma,
resta, mult. div., and, or, desplaz., etc.
Instrucciones de LOAD/STORE
LW $1,30($2) R1Mem(30+(R2))
SW 60($5),$10 Mem(60+(R5))(R10)

Instruc. con operando inmediato


ADDI $7,$9,#30 R7(R9)+30
Ejemplos
Instruc. de bifurcacin condicional SUB $1,$2,$3 R1(R2)-(R3)
SLL $1,$2,$3 R1(R2)<<(R3))
BNE $5,$6,#0x0C if (R56=R6) PC0x0C
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MIPS Ejemplo: MIPS


Formato de la instruccin mquina: Instruccin de tipo J Instrucciones de movimiento de datos

Instrucciones de salto Instruccin


LB
Significado
Load byte
Ejemplo
LB $2,40($3)
Operacin
R2[24 31] Mem(40 + (R3))8 ;
R1[0 23] (signo(Mem(40 + (R3))))24
LBU Load byte unsigned LBU $2,40($3) R2[24 31] Mem(40 + (R3))8 ;
R1[0 23] (0)24
LH Load half word LH $2,40($3) R2[16 31] Mem(40 + (R3))16 ;
R1[0 15] (signo(Mem(40 + (R3))))16
LHU Load half word unsigned LHU $2,40($3) R2[16 31] Mem(40 + (R3))16 ;
R1[0 15] (0)16
LW Load word LW $2,40($3) R2[0 31] Mem(40 + (R3))32
LF Load Float LF $2,40($3) F 2[0 31] Mem(40 + (R3))32
LD Load double float LD $2,40($3) F 2[0 31], F 3[0 31] Mem(40 + (R3))64
SB Store byte SB 40($3),$2 Mem(40 + (R3))8 R2[24 31]
SH Store half word Mem(40 + (R3))16 R2[16 31]
Ejemplo SW Store word
SH
SW
40($3),$2
40($3),$2 Mem(40 + (R3))32 R2[0 31]
SF Store float SF 40($3),$2 Mem(40 + (R3))32 F 2[0 31]
J dir PCdir SD Store double float SD 40($3),$2 Mem(40 + (R3))64 F 2[0 31], F 3[0 31]

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: MIPS Ejemplo: MIPS


Instrucciones de aritmtica entera, lgicas y desplazamiento Otras

Instruccin Significado Ejemplo Operacin


ADD/ADDU Suma con/sin signo ADD $1,$2,$3 R1 (R2) + (R3) Instruccin de control de flujo
ADDI/ADDIU Suma inmediato con/sin signo ADDI $1,$2,#5 R1 (R2) + 5 Instruccin Significado Ejemplo Operacin
SUB/SUBU Resta con/sin signo SUB $1,$2,$3 R1 (R2) (R3) J Salto (jump) J dir PC dir
SUBI/SUBIU Resta inmediato con/sin signo SUBI $1,$2,#5 R1 (R2) 5 JR Salto con registro JR $2 PC (R2)
MULT/MULTU Multiplicacin con/sin signo MULT $1,$2,$3 R1 (R2) (R3) BEQZ Bifurcacin condic. si igual a cero BEQZ dir,$4 if ((R4) == 0)PC (R4)
DIV/DIVU Divisin con/sin signo DIV $1,$2,$3 R1[0 15] Cociente((R2)/(R3)) BNEQZ Bifurcacin condic. si distinto de cero BNEQZ dir,$4 if ((R4) 6= 0)PC (R4)
R1[16 31] Resto((R2)/(R3)) JAL Salto y link JAL dir R31 (PC ) + 4; PC dir
AND Y lgica AND $1,$2,$3 R1 (R2) (R3) JALR Salto y link con registro JALR dir,$2 R31 (PC ) + 4; PC (R2)
ANDI Y lgica con inmediato ANDI $1,$2,#5 R1 (R2) 5 TRAP Provoca una excepcin
OR O lgica OR $1,$2,$3 R1 (R2) (R3) RFE Retorno de excepcin
ORI O lgica con inmediato ORI $1,$2,#5 R1 (R2) 5
XOR O exclusiva XOR $1,$2,$3 R1 (R2) (R3) Instruccin de aritmtica en punto flotante
XORI O exclusiva con inmediato XORI $1,$2,#5 R1 (R2) 5 Instruccin Significado
SLL/SRL Desplaz. lgico Izda./decha. SLL $1,$2,$3 R1 (R2) << (R3) ADDF/ADDD Suma en punto flotante simple/doble precisin
SLLI/SRLI Desp. Lg. Izda./decha. con inmed. SLLI $1,$2,#4 R1 (R2) << 4 SUBF/SUBD Resta en punto flotante simple/doble precisin
SRA Desplaz. aritmtico derecha SRA $1,$2,$3 R1 (R2) << (R3) (mantiene signo) MULTF/MULTD Multiplicacin en punto flotante simple/doble precisin
SRAI Desplaz. aritm. Dcha. con inmed. SRA $1,$2,#4 R1 (R2) << 4 (mantiene signo) DIVF/DIVD Divisin en punto flotante simple/doble precisin
Scc * Set condicional SLT $1,$2,$3 if ((R2) < (R3))R1 1, elseR1 0 CVTI2F/CVTI2D Convierte entero a real simple precisin / doble precisin
SccI * Set condicional con inmediato SEQI $1,$2,#0 if ((R2) == 0)R1 1, elseR1 0 CVTF2I/CVTF2D Convierte real simple precisin a entero / real doble precisin
(*) cc = LT, GT, LE, GE, EQ, NE CVTD2I/CVTD2F Convierte real doble precisin a entero / real simple precisin
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: ARM Ejemplo: ARM


Origen Mercado: Datos del 2007

En el ao 2005 ARM se estableci como lder del mercado


ARM - Mquinas RISC Avanzadas (Advanced RISC Machines) (superando a Intel) en arquitecturas empotradas.
Origen: Acorn RISC Machine, parte de un proyecto educativo El 30 % del mercado fue absorbido por ARM en el 2006 (frente al
(Inglaterra, 1984) 28 % de Intel)
1987 - se convierte en el primer procesador RISC para uso comercial
1990 - escisin de Acorn Machines ARM Ltd.
ARM Ltd.: Creacin de procesadores altamente configurables y
adaptables a multitud de aplicaciones
Innovaciones
Formato de instrucciones comprimido (thumb), con descompresin
dinmica del flujo de instrucciones
Cauce segmentado (Pipeline) bsico de 3 fases de gran simplicidad en
el ncleo
Gran trabajo en temas de desarrollo y depurado software

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: ARM Ejemplo: ARM


Caractersticas Caractersticas

60 instrucciones mquina Banco de 17 registros de 32 bits


Repertorio ortogonal 15 registros de propsito general (R0-R14)
Instrucciones de 32 bits (salvo modo comprimido de 16 bits, thumb) R13: Puntero de pila
alineadas en potencias de 4 en memoria R14: Retorno de funcin
Clasificadas en 3 grupos R15: Contador de programa
Instrucciones de proceso de datos: operaciones entre registros CPSR: Registro de estado
Instrucciones de transferencia de datos: carga-almacenamiento
Instrucciones para el control del flujo Instrucciones fijas de 32 bits
Modos de direccionamiento (ver tema anterior) Arquitectura registro-registro
Indexados con pre y post incremento Slo las instrucciones de LOAD y STORE hacen referencia a memoria
Desplazamiento relativos al PC El resto de instrucciones operan sobre registros
3.1.2 Repertorio de instrucciones y formato de la instruccin mquina 3.1.2 Repertorio de instrucciones y formato de la instruccin mquina
Arquitecturas CISC y RISC Arquitecturas CISC y RISC
Ejempos Ejempos

Ejemplo: ARM Ejemplo: ARM


Formato de instruccin Formato de instruccin en ensamblador

<codop>{<cond>}{S} Rd, Rn, operando2,{<desplazamiento>}

Condicin: Cdigo de ejecucin condicional


codop: nemnico de la operacin
De forma predeterminada el cdigo indica ejecutar siempre
CodOp: Cdigo de operacin cond: sufijo opcional para ejecucin condicional
Dos o tres registros (Rn, Rd y Rm) S: sufijo opcional para modificar cdigos de condicin (N,V,Z,C)
Operaciones sobre registros: Rd: Registro destino
Rd: Registro destino
Rn: Registro primer operando Rn: Registro del operando1
Rm (opcional): Registro segundo operando operando2: Puede ser un tercer registro (Rm) o un operando
Operaciones registro-memoria (carga-almacenamiento): inmediato
Rd: Registro origen/destino
Rn: Registro base para construccin direccin de memoria desplazamiento: Desplazamiento (shift) opcional sobre operando2
Otra informacin adicional tipo de desplazamiento + #cantidad de bits a desplazar
Tamao variable en funcin de la instruccin

3.1.2 Repertorio de instrucciones y formato de la instruccin mquina


Arquitecturas CISC y RISC
Ejempos

Ejemplo: ARM
Ejemplos de instrucciones

Cd. Nemn. Interpretacin Estado necesario/Resultado


0000 EQ Igual/igual a cero Z (1)
0001 NE Distinto Z (0)
0110 VS Desbordamiento V (1)
0111 VC No desbordamiento V (0)
1000 HI Mayor sin signo C (1)&Z (0)
1011 LT Menor con signo N 6= V
0000 AND AND lgico bit-a-bit Rd Rn Op2
0010 SUB resta Rd Rn Op2
0011 RSB resta al revs Rd Op2 Rn
0100 ADD suma Rd Rn + Op2
1010 CMP comparar cod. cond: Rn Op2
1101 MOV mover Rd Op2
000 MUL multiplicar Rd Rm Rs

También podría gustarte