LENGUAJES DE INTERFAZ PARTE 2
1.2 El procesador y sus registros internos.
Un registro es una memoria de alta velocidad y poca
capacidad integrada en el microprocesador que permite guardar transitoriamente
y acceder a valores muy usados,
generalmente en operaciones matemáticas.
Función de un Registro.
Los registros están en la cumbre de la jerarquia de memoria,
y son la manera mas rápida que tiene el sistema de almacenar datos. Los
registros se miden generalmente por el numero de bits que almacenan; por
ejemplo un "registro de 8 bits" o un "registro de 32 bits".
La CPU contiene un conjunto de localidades de almacenamiento
temporal de datos de alta velocidad llamada registros. Algunos de los registros
están dedicados al control, y solo la unidad de control tiene acceso a ellos. Los
registros restantes son los registros de uso general y el programador es el
usuario que tiene acceso a ellos.
Algunos Registros Básicos.
A. Contador de Programa (PC).
B. Registro de Direcciones de la Memoria ( MAR).
C. Registro de Datos (RD).
D. Registro de Instrucciones (IR).
E. Palabra de Estado del Programa (PSW).
Lenguajes para Programar en Ensamblador.
1. NASM :
El Netwide Assembler o NASM, es un ensamblador libre para la
plataforma Intel x86. Puede ser usado para escribir programas tanto de 16 bits
como de 32 bits (IA-32). En el NASM, si se usan las bibliotecas correctas, los
programas de 32 bits se pueden escribir de una manera tal para que sean
portables entre cualquier sistema operativo x86 de 32 bits. El paquete también
incluye un desensamblador, el NDISASM.
Características:
El NASM puede generar varios formatos binarios en cualquier
máquina, incluyendo COFF (y el ligeramente diferente formato Portable
Executable usado por Microsoft Windows), el a.out, ELF, Mach-O, y el formato
binario nativo Minix. El NASM incluso define su propio formato binario, RDOFF,
que es usado actualmente solamente por el proyecto del sistema operativo
RadiOS).
La variedad de formatos de la salida permite a uno portar
los programas a virtualmente cualquier sistema operativo x86. Además, el NASM
puede crear archivos binarios planos, usables para escribir bootloaders
(gestores de arranque), imágenes ROM, y varias facetas del desarrollo sistemas
operativos. El NASM incluso puede correr en plataformas diferentes del x86,
como SPARC y PowerPC, aunque no puede producir programas usables por esas
máquinas.
El NASM usa la tradicional sintaxis de Intel para el
lenguaje ensamblador x86, mientras que otros ensambladores libres, como el
ensamblador del GNU (GAS), utilizan la sintaxis de AT&T. También evita
características como la generación automática de sobreescritura (override) de
segmentos y la relacionada directiva ASSUME usada por el MASM y los
ensambladores compatibles, pues estas pueden ser a menudo confusas -- los programadores
deben seguir por sí mismos el contenido de los registros de segmento y la
localización de variables a los que éstos se refieren.
2. MASM:
El Microsoft Macro Assembler (MASM) es un ensamblador para
la familia x86 de microprocesadores. Fue producido originalmente por Microsoft
para el trabajo de desarrollo en su sistema operativo MS-DOS, y fue durante
cierto tiempo el ensamblador más popular disponible para ese sistema operativo.
El MASM soportó una amplia variedad de facilidades para macros y programación
estructurada, incluyendo construcciones de alto nivel para bucles, llamadas a
procedimientos y alternación (por lo tanto, MASM es un ejemplo de un
ensamblador de alto nivel). Versiones posteriores agregaron la capacidad de
producir programas para los sistemas operativos Windows. MASM es una de las
pocas herramientas de desarrollo de Microsoft para las cuales no había
versiones separadas de 16 bits y 32 bits. Este lenguaje casi no es usado mas
sin emabargo es necesario conocerlo por la inmensa mayoria de codigos de
Ensamblador de Windows que se puede presentar al programador.
Existen algunos tutoriales de Iczelion, los del Test
Department, un Tetris en DirectX (del que hablaré dentro de poco) y la mayor
parte de los códigos de las comunidades de Ensamblador para Windows fueron
ensamblados con MASM. Lo siniestro del asunto es que Microsoft abandonó MASM
desde mediados de los noventa y desde entonces ha sido mantenido con vida
artificial por hábiles programadores de diversas partes del mundo. De hecho hay
un programador conocido solo como Hutch que ha hecho mucho por mantener este
viejo ensamblador funcionando en estos últimos años. Puede que lo que lo ha
mantenido con vida haya sido su capacidad para generar viejo código máquina de
32 bits para los 486 pero de ahí en delante, el MASM no pasaba de ser un modelo
antiguo con grandes remodelaciones de aficionados.
3. TASM:
El Turbo Assembler (TASM), un paquete ensamblador
principalmente destinado a la plataforma del IBM PC y sus compatibles. Fue la
oferta de Borland en el mercado de herramientas de programación en lenguaje
ensamblador para la familia de los microprocesadores x86. Como se pudiera
esperar, trabajaban bien con los compiladores de lenguaje de alto nivel de
Borland para los PC, como Turbo C, Turbo BASIC, Turbo Prolog y Turbo Pascal.
Junto con el resto de suite de lenguajes de programación Turbo. Turbo Assembler
es mantenido y empaquetado por Embarcadero Delphi y C++Builder.
El paquete Turbo Assembler vino junto con el enlazador Turbo
Linker, y era interoperable con el depurador Turbo Debugger. Para la
compatibilidad con el ensamblador Microsoft Macro Assembler (MASM) de
Microsoft, TASM también podía ensamblar los archivos de código fuente del MASM
por medio de su modo MASM. Al igual que éste, es un ensamblador de alto nivel.
Turbo Assembler también se refiere a un ensamblador común,
basado en el microprocesador 6502 para el Commodore 64, creado por la compañía
alemana Omikron en 1985. Este producto no se relaciona con el ensamblador de
Borland.
4. GAS:
El gas, o GNU Assembler, es el ensamblador del proyecto GNU.
Es el back end por defecto del GNU Compiler Collection y es usado para compilar
Linux y otros sistemas operativos como el sistema operativo GNU. Es una parte
del paquete GNU Binutils, y se puede acceder con el comando as desde el shell.
Al igual que el resto de aplicaciones GNU, es software libre, y es licenciado
bajo GNU General Public License.
El gas puede ejecutar como también generar ensamblados para
un número diferente de arquitecturas. Inicialmente utilizaba únicamente la
sintaxis de AT&T en lugar de la sintaxis de Intel usada en muchos otros
ensambladores, sin embargo, las últimas versiones soportan dicha sintaxis.
5. FASM:
Flat assembler (FASM) es un ensamblador libre, multi-paso,
con el estilo de la sintaxis de Intel que soporta las arquitecturas IA-32 y
x86-64.
El proyecto fue iniciado en 1999 por Tomasz Grysztar, que en
aquella época era un estudiante no graduado de matemáticas en Polonia. El FASM
está escrito en lenguaje ensamblador, viene con el código fuente completo, y
fue capaz de ensamblarse a sí mismo (bootstrapping) desde la versión 0.90 del 4
de mayo de 1999. El primer lanzamiento público fue anunciado la 15 de marzo de
2000.
Es notable por su velocidad rápida, optimizaciones de
tamaño, portabilidad, poderosas capacidades de macro, y la comunidad del foroen
línea. Sin embargo, casi no usa opciones en la línea de comandos. Hay
disponibles archivos binarios y de código fuente para Linux, Windows
(incluyendo un IDE de desarrollo), DOS, OpenBSD, MenuetOS, OctaOS, y DexOS.
FASM contiene vínculos (bindings) para la GUI de Windows y OpenGL.
Todas las versiones de FASM pueden generar los siguientes
archivos objeto: binarios planos (flat binary), ELF o COFF (clásico o de MS),
como también executables en formato MZ, ELF o PE. Existe un traslado del
ensamblador a la arquitectura ARM, llamado FASMARM.
Comentarios
Publicar un comentario