Professional Documents
Culture Documents
Algunos registros son utilizados para almacenar operandos, antes de ser utilizados por la
ALU o bien para almacenar el resultado que produce la misma tras una operacin.
Por ello tiene sentido que dichos registros tengan tamao de palabra y que los datos
manipulados tengan un tamao de palabra o mltiplo del de palabra. De ese modo, si han de
procesarse datos de gran longitud de forma secuencial, se har palabra a palabra.
INTRODUCCIN
Las instrucciones de un procesador, a nivel binario, suelen tener una configuracin como la
de los siguientes ejemplos:
Dichos operandos pueden ser constantes numricas, nombres de registros que contienen
valores*
Qu son dichos *valores? Pueden ser simples valores numricos, tratarse de direcciones de
memoria
COMPUTER ARCHITECTURE
Categoras/niveles de estudio:
Memoria
Mecanismos de entrada/salida
Processing Unit
Control Unit
ALU
Registros del procesador (propsito general)
Buses (trmino genrico para referirse a sistemas de transferencia de datos entre partes del
computador o, en otros contexto, entre computadores distintos)
Pipelining / Segmentacin:
ANTECEDENTES
baco
Leonardo Da Vinci pone sobre el papel su idea para una sumadora mecnica
Gottfried Wilhelm Leibniz perfecciona en 1670 la mquina de Pascal y crea otra capaz de
multiplicar
Joseph Marie Jacquard disea un telar automtico, utilizando placas perforadas que
controlan los diseos tejidos
Augusta Ada Byron esboza los primeros algoritmos ideados expresamente para ser
ejecutados por una mquina en 1842, a partir del trabajo de Babbage
PRIMEROS COMPUTADORES
En los aos 60 aparece el circuito integrado , capaz de integrar varios transistores en una
placa semiconductora con interconexiones soldadas. Como consecuencia, se reducen los
tamaos, costes de produccin y mejora la fiabilidad
GENERACIONES DE COMPUTADORES
COMPUTADORE
Primera generacin
Utilizacin de vlvulas de vaco
De gran tamao, lentas y poco eficientes
Usaban tarjetas perforadas
No eran comercializados
Segunda generacin
Uso de transistores
Ms rpidos y de menor tamao que los anteriores
Se utilizan lenguajes de un nivel ms alto para programarlos
Tercera generacin
Utilizacin de circuitos integrados
Flexibles y ms pequeos
Adecuados para aplicaciones comerciales
Conocidos como mini computadores
Cuarta generacin
Uso de circuitos integrados a muy gran escala
Mquinas interactivas de propsito general
Permiten el desarrollo rpido de aplicaciones
Mayor facilidad de uso para el usuario y para ser integrado en redes
Quinta generacin
?
GENERACIONES
INTERACCIN
CON
DEEL
COMPUTADORE
USUARIO
Desde mediados de los 40 hasta finales de los 60 (Batch interface/Interfaz por lotes)
Entrada mediante tarjetas perforadas o cinta de papel
Salida mediante impresora
Poca o nula interaccin en tiempo real
Ingrediente #1,
Ingrediente #2,
Ingrediente #n
Preparacin
de receta X
Producto final
El programa o usuario exterior que utiliza la caja no necesita conocer los detalles
internos para poder interactuar con ella
Ensamblador: Lenguaje de bajo nivel en el que hay una correspondencia muy alta entre
sus instrucciones y las del procesador
Procesos, programas que estn siendo ejecutados, desde aplicaciones de usuario hasta
servicios del sistema operativo
Adems, la interaccin con el propio usuario no es directa, sino que se hace uso de
intermediaros, como el GUI o el Shell
Para limitar el acceso de los programas a determinadas acciones, el S.O. distingue dos
modos de ejecucin para los mismos:
Las solicitudes que los programas/procesos realizan al kernel para que lleve a cabo ciertas
tareas especiales o restringidas (comunicacin con hardware, creacin de procesos
nuevos) se denominan llamadas al sistema (system calls)
LLAMADAS AL SISTEMA
Un proceso de usuario necesita un servicio del S.O. : Se realiza una llamada al sistema y el
S.O. pasa a tener el control, realizando lo siguiente:
Determina qu quiere el proceso que ha invocado la llamada, examinando los
parmetros
Ejecuta la llamada al sistema
Devuelve el control al proceso que ha realizado la llamada al sistema
Administracin de recursos
Administracin de recursos
Administracin de recursos
Administracin de recursos
Administracin de recursos
Una orden en un lenguaje de programacin de alto nivel que imprime una cadena de
texto en pantalla est realizando, internamente, muchas operaciones de
movimiento/manipulacin de datos desde una regin de memoria hasta que
finalmente se muestra en el monitor
Humano
Ej: Lenguajes
Orientados a
Objetos
Ej: Lenguajes
Imperativos
Ensamblador
Mquina
Nivel de
abstraccin
Cdigo Mquina
Humano
Ej: Lenguajes
Orientados a
Objetos
Solucin? Compiladores
Ej: Lenguajes
Imperativos
Ensamblador
Mquina
Nivel de
abstraccin
Cdigo Mquina
COMPILADOR
Es un proceso complejo
Cdigo
Fuente
Escrito en un
lenguaje de
programacin
concreto
Compilador
Ejecutable
Preparado para
funcionar en un
sistema concreto
FASES DE COMPILACIN
Anlisis lxico
Preprocesado
Anlisis sintctico
Anlisis semntico
Generacin de cdigo
Optimizacin de cdigo
FASES DE COMPILACIN
Anlisis lxico
Se analiza el cdigo y se reconocen secuencias de texto como, por ejemplo, nombres
de variables, operadores aritmticos, llaves, corchetes, etc., asocindoles un
significado concreto
FASES DE COMPILACIN
Preprocesado
FASES DE COMPILACIN
Anlisis sintctico
FASES DE COMPILACIN
Anlisis semntico
Ejemplo de error semntico en C++: Asignar un valor booleano a una variable entera
int myVariable = false;
FASES DE COMPILACIN
Generacin de cdigo
FASES DE COMPILACIN
Optimizacin
Ejemplos:
ISA (Instruction Set Architecture) es el modelo abstracto que define tanto el conjunto de
instrucciones que el procesador puede ejecutar, el tamao de palabra, tipos de registros,
modos de direccionamiento de memoria y formatos de datos utilizados
INSTRUCTION SET
Tradicionalmente:
*Arquitecturas en las que slo est permitida la recuperacin de datos desde memoria y
escritura de la misma mediante operaciones especficas LOAD y STORE, en lugar de lo que
ocurre con otras, como la 8086 en las que una operacin como ADD (suma) ofrece la
posibilidad de escribir su resultado en memoria directamente
REGISTROS
Algunos son de propsito general, de modo que el programador puede usarlos con cierta
libertad a la hora de especificar instrucciones
FLAGS
Por ejemplo, indican si el resultado ha sido cero o el resultado de una comparacin ( Ej: En
el 8086, el llamado Zero flag toma valor 1)
EJEMPLO: 8086
Algunos datos
Registros especiales, como uno de estado, dedicado a almacenar flags, como Zero
flag, Carry flag, Overflow flag
MODOS DE DIRECCIONAMIENTO
Los modos de direccionamiento son las formas en que los operandos de cada instruccin del
juego / set pueden ser identificados
MODOS DE DIRECCIONAMIENTO
Inmediato
Ej: MOV AX, 16: La constante con valor 16 se almacenar en el registro AX
Registro
Ej: MOV AX, BX. El contenido de BX se copia en AX
Directo
Ej: MOV AX, [300h]. El uso de [ ] indica que aquello que se va a copiar no es 300h
(h hexa), sino que lo que se copiar es un dato que est almacenado a partir de la
direccin 300h. As pues, la direccin de inicio del dato es conocida Y el tamao de
lo que hay que copiar? Viene dado por la capacidad del registro destino. En este
ejemplo, AX es de 2 Bytes
Indirecto
Ej: MOV AX, [BX]. Se copia en AX un dato cuya direccin de inicio est en BX
Base + Desplazamiento
Ej: MOV AX, [BX + 8]. BX sumado al valor marcan la direccin de inicio del dato a
copiar a AX.
MOVIMIENTO
ADICIN
* No interpretar de forma literal necesariamente, ya que se deben tener en cuenta los modos
de direccionamiento
SUSTRACCIN
* No interpretar de forma literal necesariamente, ya que se deben tener en cuenta los modos
de direccionamiento
COMPARACIN
Los operandos permanecen inalterados pero los flags se actualizan, pudindose consultar a
continuacin mediante instrucciones de bifurcacin condicional
Si los valores comparados son iguales el flag zero toma el valor 1. De lo contrario, el valor
es 0
* No interpretar de forma literal necesariamente, ya que se deben tener en cuenta los modos
de direccionamiento
AND / Y LGICO
Se almacena en el destino el resultado de hacer operacin y con cada bit de los operandos
OR / O LGICO
OR opDst, opSrc
Se almacena en el destino el resultado de hacer operacin o con cada bit de los operandos
Se almacena en el destino el resultado de hacer operacin o lgico con cada bit de los
operandos
NOT / NO LGICO
NOT opDst
SALTO INCONDICIONAL
JMP opDst
Transfiere el control incondicionalmente al operando, que puede ser una direccin o una
etiqueta
SALTO CONDICIONAL
JZ opDst
JNZ opDst
INCREMENTO Y DECREMENTO
INC opDst
DEC opDst
http://schweigi.github.io/assembler-simulator/
Se trata de un simulador restringido y reducido tomando como base las arquitecturas x86
El espacio de memoria desde 0xE8 hasta 0xFF est destinado a mapear un dispositivo
simulado de salida similar a una consola
Documentacin
http://schweigi.github.io/assemblersimulator/instruction-set.html