1.- lenguaje ensamblador de la familia Intel 80x86
Incluye desde los procesadores Intel 8086 y
8088, pasando por los Pentium de Intel y los Athlon de AMD y llegando hasta los últimos procesadores x86 de estas
compañías.
Es una serie de mnemotécnicos
para representar las operaciones fundamentales que el procesador puede realizar.
Los compiladores
a menudo producen código ensamblador como un paso intermedio cuando traducen un
programa de alto nivel a código máquina. Considerado como un lenguaje de programación de bajo nivel y específico para cada máquina.
Aunque algunas veces es usado para software de aplicación de sistemas de ventanas, los lenguajes ensambladores
son utilizados principalmente en aplicaciones críticas como sistemas de arranque, Sistemas Operativos, núcleos y en controladoras de dispositivos, así como en
sistemas en tiempo real o pequeños sistemas
embebidos.
Los procesadores Intel 8086 y 8088 fueron los primeros de 16 bits en tener un conjunto de instrucciones conocido actualmente
como x86. Fueron un paso evolutivo en comparación con la generación anterior de
CPUs de 8 bits, como el 8080
y heredaron muchas características e instrucciones, las cuales fueron
extendidas para trabajar con 16 bits. Ambos CPUs contenían un bus de direcciones de 20 bits y un grupo de registros internos de 16 bits. El 8086
tenía un bus de datos externo de 16 bits y el 8088 uno
de 8 bits. El 8088 estaba previsto como una versión de bajo coste del 8086. El lenguaje ensamblador del x86 también cubre
las diferentes versiones de CPU que siguieron, como el 80188 y 80186, 80286,
80386,
80486,
Pentium,
etc, de Intel,
también como los CPU de AMD
y Cyrix
como los procesadores 5x86 y K6, y el NEC V20
de NEC. El término
x86 aplica a cualquier CPU pueda correr el lenguaje ensamblador original
(usualmente también correrá por lo menos algunas de las extensiones.
El moderno conjunto de
instrucciones x86 es un superconjunto de las instrucciones del 8086
y el 8088 y una serie de extensiones a este conjunto de instrucciones que
comenzaron con el microprocesador Intel 8008.
Existe casi una completa compatibilidad binaria desde los chips
Intel 8088 y 8086 con los modernos procesadores Intel Pentium
4, Intel Core Duo, Intel Core i7,
AMD Athlon 64,
AMD Opteron,
hasta la generación actual de microprocesadores x86, aunque existen algunas
excepciones. Esta compatibilidad se logra gracias al uso de 2 conjuntos de
instrucciones de arquitecturas, lo cual es comúnmente criticado. La
compatibilidad de los programas en lenguaje ensamblador con procesadores más
antiguos sólo es posible cuando el programa no incluye instrucciones solo
disponibles en los procesadores nuevos.
Generalmente, cada nuevo procesador de la serie tiene unas cuantas
instrucciones adicionales y más capacidades y mejor desempeño que los
anteriores. El 286 agregó unas cuantas instrucciones. el modo
protegido y capacidad multitarea,
el 386
extendió la plataforma de 16 a 32 bits, añadió algunas instrucciones e hizo al
conjunto de instrucciones más ortogonal, haciéndolo la base de los procesadores
siguientes hasta que aparecieron los de 64 bits. Con el 486
se incorporó el coprocesador numérico en el propio chip, otros procesadores
posteriores agregaron instrucciones para acelerar el procesamiento multimedia, multithreading,
2 ó más núcleos, 64 bits, etc.
Sintaxis
El lenguaje ensamblador x86 tiene 2 vertientes diferentes en cuanto a su
sintaxis de programación: sintaxis Intel, usada en sus
inicios para la documentación de la plataforma x86, y sintaxis AT&T
.1
La sintaxis Intel es la dominante en la plataforma Windows,
mientras que en Unix/Linux ambas son utilizadas
aunque GCC
solo soportaba la sintaxis AT&T en sus primeras versiones.
2.- lenguaje ensamblador de la familia Motorola 68000
El Motorola
68000 es un microprocesador CISC 16/32 -bit diseñado y
comercializado por Motorola (actualmente producido por Freescale).
Introducido en 1979, con la tecnología HMOS, fue el primer
miembro de la exitosa familia de microprocesadores m68k de 32 bits, por lo
general el software creado para este procesador es compatible con las versiones
futuras del resto de la línea a pesar de que esta primera versión está limitada
a un ancho de bus externo de 16-bit . Después de tres décadas en la producción,
la arquitectura 68000 todavía está en uso.
El Motorola 68000 (MC68000), debe su nombre al número de
transistores de los que se compone, este microprocesador ha sido utilizado,
entre otros, en los Commodore Amiga, los Atari ST,
los primeros Macintosh,
en Sharp X68000
y las primeras PCB de videojuegos de recreativas de Capcom. El
MC68000 fue lanzado al mercado en 1980 y es el primero de una familia de microprocesadores que
está formada por el Motorola 68010, Motorola
68020, Motorola 68030, Motorola
68040 y el Motorola 68060. Esta familia de procesadores a
menudo es designada por el término genérico 680x0, m68k, 68k
o familia 68000.
Motorola
desarrolló también a un sucesor de los 680x0: el Coldfire.
Los 68000
surgieron del proyecto MACSS (Motorola Advanced Computer System on Silicon,
Sistemas de Computación Avanzadas en Silicio de Motorola), iniciado en 1976
para desarrollar una arquitectura totalmente nueva sin mantener la compatibilidad hacia los anteriores procesadores.
Sería el hermano de mayor potencia que complementara la línea de productos de 8 bits
6800 en lugar de diseñar
una línea compatible. Al final, el 68000 fue provisto de un protocolo de bus con modo de compatibilidad
para los dispositivos periféricos de la línea 6800, y una versión con un bus de
8 bits de datos fue producida. Sin embargo, los diseñadores se centraron
principalmente en el futuro, o la compatibilidad hacia delante, lo que dio la
plataforma M68K una ventaja frente posteriores arquitecturas de 32 bits
en el conjunto de instrucciones. Por ejemplo,
los registros de la CPU eran de 32 bits de ancho,
aunque son pocas las estructuras autónomas en el procesador en sí funcionan en
32 bits a la vez. El equipo MACSS estuvo muy fuertemente infuenciado por el
diseño de procesadores para minicomputadoras,
tales como el PDP-11
y los sistemas VAX,
que tienen un microcódigo similar.
Arquitectura
El 68000 está
basado en dos bancos de 8 registros de 32 bits. Un banco es de datos (Dn) y el
otro de punteros (An). Además contiene un contador de programa de 32 bits y un
registro de estado de 16 bits, Siendo su parte alta el "System Byte"
y la parte baja el "User Byte".
Los registros
de datos (D0 a D7) se pueden usar como registros de 32 bits (.l), 16 bits (.w)
y 8 bits (.b). Cualquiera de ellos puede usarse como acumulador, índice o
puntero.
Realizado en
tecnología HMOS
y posee 64 pines sin multiplexación de señales.
Los registros
de direcciones (punteros) son muy parecidos a los de datos, pero no pueden
usarse como bytes y las operaciones con ellos no afectan al acarreo para poder
efectuar cálculos con direcciones entre cálculos con datos. El registro A7 es
el puntero de la pila (Stack Pointer) y está duplicado, habiendo un
stack para el modo usuario y otro para el modo supervisor.
Contiene dos ALUs diferentes, para
operar con datos y direcciones independiente y simultáneamente.
3.- Lenguaje ensamblador del procesador POWER usado en las IBM RS/6000
En una nueva arquitectura que
incorpora importantes ventajas conceptuales respecto a los anteriores.
Una ventaja importante es una arquitectura
RISC, es decir, que dispone de un juego de instrucciones reducido, frente a
otras que se conocen como CISC los cuales disponen de juegos muchos mas amplios.
Esta diseñana para trabajar tant ne
maquinas de 32bits como de 64 bits