Posteado por: wozgeass | septiembre 2, 2009

Importancia del ensamblador


El principal objetivo de este post es el de darte una pequeña vision de la importancia del ensamblador y por que todavia no pasa de moda. Para lograr este objetivo comparo y hago el contraste del lenguaje ensamblador con lenguajes de alto nivel. Esta comparacion nos permite ver los pros y contras del ensamblador.

Iniciemos  .  .  .

La vision que tiene cada usuario del su ordenador depende del nivel con el que se interactue con el mismo.

En el nivel mas alto se encuentra los usarios que se limitan a usar la interfaz ofrecida por el software:

ej.

messenger

word, exel, powerpoint.

Firefox etc..

La resolucion de problemas a este nivel  implica la composicion de una carta en world o configurar algun aspecto de tu entorno grafico . . .

El nivel 4, la resolucion de problemas se realiza en lenguajes de alto nivel tales como c#, java entro otros mas…

Un usuario que interctua en este nivel debe tener conocimiento de desarrollo de software, mejor conocidos como programadores de aplicaciones de escritorio, sin embargo no podran conocer los detalles internos del sistema a menos que tambien participen en el desarrollo de software del sistema como: controladores de dispositivos.

Tanto del nivel 4 como el nivel 5 son independientes del sistema, es decir independientes del procesador.

ej.

Un programa escrito en C puede ser ejecutado en un procesador Intel o un procesador PowerPc sin modificar el codigo fuente (en ensamblador la programacion depende del procesador ya que cada uno tiene su propio lenguaje).

Todo lo que tenemos que hacer es volver a compilar en la maquina en la que estemos y listo ya podremos correr el programa.

La programacion en lenguaje ensamblador se conoce como programacion de bajo nivel, por que realiza una tarea a un menor nivel que un lenguaje de alto nivel. Como consecuencia, para realizar la misma tarea tiende a ser mucho mas codigo  que el equivalente a un lenguaje de alto nivel.

Los ensambladores suelen ser nativos del procesador. Por ejemplo un programa escrito en lenguaje ensamblador de intel no puede ser ejecutado en un procesador Motorola.

Explicacion grafica

La programacion en este lenguaje requiere conocimiento detallado del sistema interno del procesador, como la arquitectura del procesador, la organizacion de la memoria entre otras mas…

El lenguaje maquina es el pariente mas cercano del ensamblador. El procesador solo entiende el lenguaje Maquina, cuyas instrucciones consisten en cadenas de uno y ceros,Codigo fuente en ensamblador debe ser procesado  por otro programa con el fin crear el codigo maquina NASM(Netwide Assembler), MASM(Microsoft Assembler) y TASM (Borland Turbo Assembler) son algunos de los mas populares ensambladores.

En siguientes posts usaremos NASM por que es un ensamblador libre muy completo y facil de usar.

Para el que siente curiosidad de comparar mnemonicos de ensamblador y algunas instrucciones de lenguajes de alto nivel, vean como son muy similares:

Ensamblador

inc resultado

Lenguaje C

resultado++; o resultado += 1;

Ensamblador

mov numero, 20

Lenguaje C

numero = 20;

Queda claro que la programacion en un lenguaje de alto nivel es mucho mas facil, sin embargo considero que existen 2 razones por las cuales la programacion en ensamblador se hace todavia:

  • Eficiencia.
  • Acceso al hardware.

La eficiencia se refiere que tan bueno es un programa en tiempo de ejecucion, en este punto considerare 2 objetivos, basados en (espacio eficiencia) y  (tiempo eficiencia).

  1. El espacio eficiencia se refiere a los requsitos de memoria de un programa es decir el tamaño del ejecutable. Muy amenudo los programas en ensamblador tienden a ser mas compactos que los escritos en un lenguaje de alto nivel.
  2. Tiempo de eficiencia se refiere al tiempo que tarde en ejecutarce. Obviamente un programa que se ejecuta mas rapido se dice que es mejor desde el punto de vista de la eficiencia. Un programa realizado en ensamblador tiende a correr mas rapido  por que la traduccion a codigo maquina realiza mas eficiente por que el ensamblador es lo mas cercano al codigo maquina.

La superioridad de los lenguajes ensambladores es cada vez menos importante por varias razones, en primer lugar el ahorro en memoria puede ya no ser sustancial por que ha ido en aumento, hoy el tamaño en memoria de un programa ya no es un obtaculo tan grande sin embargo el lenguaje ensamblador vivira mientras la computacion cuantica no entre a uso comun.

wozgeass: push eax, 1

int 80h

EOF!!!

hasta el proximo post…

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: