Professional Documents
Culture Documents
(GSyC)
Lenguaje Mquina
0
Introduccin
Instrucciones y direccionamiento
Direccionamientos, juego de instrucciones y
formato
Secuencia bsica de ejecucin
1. Leer de memoria una instruccin
2. UC interpreta la instruccin
3. Ejecucin de la instruccin bajo las rdenes de la UC
Un computador solo entiende lenguaje mquina
El lenguaje mquina es distinto para cada
computador, salvo compatibilidad entre familias
El lenguaje mquina establece las capacidades
bsicas del computador
Al conjunto de instrucciones del lenguaje mquina
se conoce como juego de instrucciones
GSyC 2011 - Lenguaje mquina 1
Lenguaje mquina y lenguaje ensamblador
Lenguaje ensamblador
Z80 8086/88
Tipo de
instruc
codificado ensamblador operacin codificado ensamblador operacin
cin
Lenguaje ensamblador
Lenguaje simblico a base de nemnicos
(nombres que recuerdan la operacin a realizar)
Este lenguaje simblico se conoce como
lenguaje ensamblador
Al programa que traduce a binario un programa
escrito en lenguaje ensamblador se le conoce
como programa ensamblador
El programa ensamblador utiliza una tabla que
hace corresponder a cada nemnico con su
cdigo binario
Lenguaje ensamblador
Propiedades que cumplen las instrucciones:
Emplean un nmero fijo de operandos
Codificacin sistemtica y ajustada a un formato de
instrucciones
Autocontenidas e independientes, contienen toda la
informacin que necesitan para ejecutarse
Por ser autocontenidas deben tener la siguiente
informacin:
Operacin a realizar
Ubicacin de los operandos
Ubicacin del resultado
Posicin de la siguiente instruccin
siguiente
operacin operandos resultado
instruccin
GSyC 2011 - Lenguaje mquina 4
Lenguaje mquina y lenguaje ensamblador
Lenguaje ensamblador
Registro-Registro de 3 operandos,
todos deben estar en registros
Se utilizan instrucciones de carga (load)
y almacenamiento (store)
Registro-Memoria de 2 operandos, al
menos uno de los operandos debe
estar en registro
Memoria-Memoria de 2 o 3
operandos, todos ellos en memoria
En arquitecturas registro-registro:
La codificacin es sencilla, siempre hay que
especificar el identificador de tres registros
Pero los programas ocupan ms, por qu?
En arquitecturas memoria-memoria:
Cdigo ms compacto
La memoria, un cuello de botella, por qu?
Grandes diferencias entre la longitud de las
instrucciones y entre su duracin
Se complica la codificacin de las
instrucciones y puede variar mucho el CPI
(Ciclos Por Instruccin) entre instrucciones
GSyC 2011 - Lenguaje mquina 14
Diseo de un repertorio de instrucciones
Ejemplo
Vamos a evaluar dos alternativas:
1. Registro-Registro de 3 operandos con 8 registros de
propsito general
2. Memoria-Memoria de 3 operandos
Se desea realizar una secuencia de operaciones
lgicas
R = X AND Y
Z = X OR Y
Y = R AND X
El cdigo de operacin ocupa 1Byte
Las direcciones de memoria y los operandos
ocupan 4 Bytes
Los operandos estn almacenados inicialmente en
memoria
GSyC 2011 - Lenguaje mquina 15
Diseo de un repertorio de instrucciones
Trfico con la memoria de Trfico con la memoria
instrucciones de datos
load r1,X opcode+dir+registro=6B 1 operando = 4B
load r2,Y opcode+dir+registro=6B 1 operando = 4B
and r3,r1,r2 opcode+3 registro=3B -
or r4,r1,r2 opcode+3 registro=3B -
and r2,r3,r1 opcode+3 registro=3B -
store r3,R opcode+dir+registro=6B 1 operando = 4B
store r4,Z opcode+dir+registro=6B 1 operando = 4B
store r2,Y opcode+dir+registro=6B 1 operando = 4B
Total, 39B Total, 20B
Trfico con la memoria de Trfico con la memoria
instrucciones de datos
and R,X,Y opcode+3 direcciones=13B 3 operandos = 12B
or Z,X,Y opcode+3 direcciones=13B 3 operandos = 12B
and Y,R,X opcode+3 direcciones=13B 3 operandos = 12B
Total, 39B Total, 36B
GSyC 2011 - Lenguaje mquina 16
Diseo de un repertorio de instrucciones
int main(void){
int i = 1;
char *p = (char *) &i;
if ( p[0] == 1 )
printf("Little Endian\n");
else
printf("Big Endian\n");
return 0;}
Modos de direccionamiento
Direcccionamiento inmediato
Direcccionamiento de registro
Direcccionamiento directo
Otras consideraciones
Tipo y tamao de los operandos:
Qu tipo de datos se soportan? Con qu tamaos?
Carcter, entero, coma flotante, etc
El cdigo de operacin, opcode, indicar el tipo de los
operandos implicados en la ejecucin de la instruccin
tambin lo pueden indicar los operandos mediante
etiquetas, inconvenientes?
Conjunto de operaciones soportadas:
Qu tipo de operaciones van a realizar las instrucciones del
repertorio?
Un conjunto sencillo: aritmtico-logicas, de acceso a
memoria, de control de flujo (saltos) y llamadas al sistema
operativo
Dependiendo de los tipos de datos, instrucciones para
manejo de caracteres, coma flotante, etc
Tratamiento de las instrucciones de control de flujo:
modifican el flujo de control de un cdigo
GSyC 2011 - Lenguaje mquina 30
Diseo del repertorio de instrucciones
Instrucciones de Tipo I
Load/Store
RS (registro fuente): registro base para el acceso a memoria
RT (registro destino): registro para los datos
Inmediato: desplazamiento para el clculo de la direccin de
memoria a la que hay que acceder
Aritmtico-lgicas con direccionamiento inmediato
RS (registro fuente): operando 1
RT (registro destino): registro destino de la operacin
Inmediato: operando 2, directamente su valor
Saltos codicionales/incodicionales
RS (registro fuente): registro de condicin (para la
comparacin)/Registro que contiene la direccin destino del salto
RT (registro destino): registro de condicin (para la
comparacin)/No se utiliza
Inmediato: desplazamiento respecto del PC/0
GSyC 2011 - Lenguaje mquina 38
Ejemplo de codificacin hbrida: MIPS64
Instrucciones de Tipo R
Aritmtico-lgicas registro-registro
RS (registro fuente): operando 1
RT (registro destino): operando 2
RD: registro destino
sa (Shift Amount): indica el desplazamiento para las
instrucciones de tipo Shift
function: junto con el OpCode indica el tipo de
operacin que se debe realizar
Instrucciones de Tipo J
Ejemplos
MIPS Digital Media eXtension (MDMX) o a las
Multimedia Acceleration eXtensions (MAX)
Extensiones de las arquitecturas x86, primero las MMX,
despus las diferentes versiones de 3Dnow! y las SSE
MIPS64
Application Specific Extensions
M
W
Evaluacin de prestaciones
Rendimiento de un procesador
tCPU = I CPI T
Ejemplo
T = 1/f
CPI = finstruccin CPIinstruccin