Ensamblador
El
término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de
traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero
objeto que contiene código máquina, ejecutable directamente por el microprocesador.
Para la que se
ha generado, en si la función de un ensamblador es traducir un programa en
lenguaje de ensamblador al código correspondiente en lenguaje de máquina. Antes de proseguir conviene diferenciar para no
confundirnos por un lado el término lenguaje ensamblador, y por otro el término
ensamblador. El primero sería el lenguaje de programación como tal, mientras el
segundo sería el programa que convierte un fichero escrito en lenguaje
ensamblador en código máquina o binario para que le ordenador pueda leerlo.
Aunque en el artículo hablaremos de ambos y en general se usa ensamblador para
ambos indistintamente, técnicamente son cosas distintas,
Evidentemente este lenguaje tiene varias ventajas e inconvenientes. Entre las ventajas tenemos que por supuesto, es más rápido y eficiente, más estable y requiere menos recursos.
Las desventajas son sin embargo mucho mayores: para empezar está limitado a las órdenes que el ordenador traiga memorizadas en su placa base, nada más. Y requiere unos conocimientos técnicos muy avanzados, toda vez que cada CPU incluye órdenes distintas e incluso formas distintas de darle esas órdenes, variando según el modelo, el fabricante... etc... Es por ello, entre otras cosas, que no se ha impuesto en el mercado como lenguaje de programación para aplicaciones o juegos.
Como se vé es un lenguaje de programación orientado a profesionales que trabajan con hardware, muy útil sobre todo para detectar fallos e incompatibilidades entre piezas del PC o chequear el estado de estas.
Como ya dijimos el lenguaje ensamblador debe ser traducido a código máquina para funcionar, y por tanto requiere un ensamblador que lo traduzca a código binario (a ceros y unos). Pero es el lenguaje más cercano al propio código que usan los ordenadores. Es por ello que se dice que es un lenguaje de bajo nivel, debido a que está sólo un escalón por encima del código máquina, y solo permite ejecutar instrucciones sencillas. Los lenguajes de alto nivel son más elaborados y permiten realizar tareas multiples y complejas con una sola orden, mientras que en el que nos ocupa una orden equivale a una instruccion directa.
Existen como hemos visto muchas variantes del lenguaje ensamblador, de hecho una por cada tipo de arquitectura del CPU. Las primeras CPUs apenas tenían instrucciones y por tanto eran mucho más sencillas. En la actualidad están en boga los llamados ensambladores de alto nivel, que permiten instrucciones más complejas e incluso cadenas de instrucciones (macros).
Evidentemente este lenguaje tiene varias ventajas e inconvenientes. Entre las ventajas tenemos que por supuesto, es más rápido y eficiente, más estable y requiere menos recursos.
Las desventajas son sin embargo mucho mayores: para empezar está limitado a las órdenes que el ordenador traiga memorizadas en su placa base, nada más. Y requiere unos conocimientos técnicos muy avanzados, toda vez que cada CPU incluye órdenes distintas e incluso formas distintas de darle esas órdenes, variando según el modelo, el fabricante... etc... Es por ello, entre otras cosas, que no se ha impuesto en el mercado como lenguaje de programación para aplicaciones o juegos.
Como se vé es un lenguaje de programación orientado a profesionales que trabajan con hardware, muy útil sobre todo para detectar fallos e incompatibilidades entre piezas del PC o chequear el estado de estas.
Como ya dijimos el lenguaje ensamblador debe ser traducido a código máquina para funcionar, y por tanto requiere un ensamblador que lo traduzca a código binario (a ceros y unos). Pero es el lenguaje más cercano al propio código que usan los ordenadores. Es por ello que se dice que es un lenguaje de bajo nivel, debido a que está sólo un escalón por encima del código máquina, y solo permite ejecutar instrucciones sencillas. Los lenguajes de alto nivel son más elaborados y permiten realizar tareas multiples y complejas con una sola orden, mientras que en el que nos ocupa una orden equivale a una instruccion directa.
Existen como hemos visto muchas variantes del lenguaje ensamblador, de hecho una por cada tipo de arquitectura del CPU. Las primeras CPUs apenas tenían instrucciones y por tanto eran mucho más sencillas. En la actualidad están en boga los llamados ensambladores de alto nivel, que permiten instrucciones más complejas e incluso cadenas de instrucciones (macros).
Funcionamiento Y Diseño:
El programa lee el fichero escrito en lenguaje
ensamblador y sustituye cada uno de los códigos nemotécnicos que aparecen por
su código de operación correspondiente en sistema binario para la plataforma
que se eligió como destino en las opciones específicas del ensamblador.cc
Ventajas para utilizarlo:
Mayor control de la computadora.
Independencia de lenguaje.
La mayoría de las computadoras pueden ensamblar.
Los programas hechos en lenguaje ensamblador son generalmente más rápidos y consumen menos recursos del sistema.
Desventajas para no utilizarlo:
Demasiado complejo.
Comprensión más profunda de la computadora.
Errores más frecuentes en el programa.
Mayor tiempo de codificación.
Difícilmente portable, es decir, un código escrito para un microprocesador en particular necesita ser modificado muchas veces en su totalidad para poder ser usado en otro microprocesador.
Tipos de ensambladores:
Ensambladores cruzados: Se denominan así a los ensambladores que se utilizan en una computadora que posee el procesador diferente al que tendrán las computadoras donde se va a ejecutar el programa objeto producido.
Ensambladores residentes: Son aquellas que permanecen en la memoria principal de la computadora y cargar para su ejecución al programa objeto producido.
Mayor control de la computadora.
Independencia de lenguaje.
La mayoría de las computadoras pueden ensamblar.
Los programas hechos en lenguaje ensamblador son generalmente más rápidos y consumen menos recursos del sistema.
Desventajas para no utilizarlo:
Demasiado complejo.
Comprensión más profunda de la computadora.
Errores más frecuentes en el programa.
Mayor tiempo de codificación.
Difícilmente portable, es decir, un código escrito para un microprocesador en particular necesita ser modificado muchas veces en su totalidad para poder ser usado en otro microprocesador.
Tipos de ensambladores:
Ensambladores cruzados: Se denominan así a los ensambladores que se utilizan en una computadora que posee el procesador diferente al que tendrán las computadoras donde se va a ejecutar el programa objeto producido.
Ensambladores residentes: Son aquellas que permanecen en la memoria principal de la computadora y cargar para su ejecución al programa objeto producido.
Micro ensambladores: Al programa que indica al intérprete de instrucciones de la CPU como debe actuar se le denomina microprograma. El programa que ayuda a realizar esta microprograma se llama micro ensamblador.
Macro ensambladores: Son ensambladores que permiten el uso de macroinstrucciones.
Ensambladores de una fase: Leen una línea y la traducen directamente para producir una instrucción de lenguaje maquina o la ejecuta si se trata de una pseudosinstrucción. Se construye la tabla de símbolos a medida que aparecen las definiciones de variables, etiquetas, etc.
Ensambladores de dos fases: Realiza la traducción en dos etapas: 1° fase leen el programa fuente y construyen la tabla de símbolos, 2° fase vuelve a leer el programa fuente y pueden ir traduciendo totalmente pues reconocen la totalidad de los símbolos.
No hay comentarios:
Publicar un comentario