martes, 13 de septiembre de 2011

Compilando con Assembler

es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, micro controladores, y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que, idealmente son portables.
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.
Características
  • El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.
  • El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente.
  • Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
  • Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel.
  • También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.
Ventajas
  • Cualquiera puede editar
  • Fácil de usar y aprender
  • Los wikis son instantáneos por lo que no hay necesidad de esperar a un editor para crear una nueva edición o actualización de la información
  • Personas situadas en diferentes partes del mundo pueden trabajar en el mismo documento
  • El software wiki hace un seguimiento de cada nueva edición y es un proceso simple el de volver a una versión anterior de un artículo
  • Amplía el acceso al poder de publicación web para usuarios no técnicos
  • El wiki no tiene una estructura determinada, por lo tanto es una herramienta flexible que puede utilizarse para una amplia gama de aplicaciones
  • Hay una amplia gama de software de código abierto wiki para elegir, de modo que los costos para la obtención de una licencia no debe ser un obstáculo para la instalación de un wiki institucional
Desventajas
Las ventajas en un contexto, pueden ser desventajas en otro.
  • Cualquier persona puede editar lo que esto puede ser demasiado abierto para algunas aplicaciones, por ejemplo, la documentación confidencial. Sin embargo, es posible regular el acceso de los usuarios.
  • Requiere una conexión a Internet para colaborar, pero las tecnologías para producir versiones impresas de los artículos están mejorando
  • La flexibilidad de la estructura de un wiki puede significar que la información se vuelve desorganizada. Así como un wiki va creciendo, la comunidad planea y administra la estructura en colaboración.
  • Las directrices habituales para el uso saludable de computadoras
QUE SON MAQUINAS DE ESTADO FINITO?
Un autómata finito (AF) o máquina de estado finito es un modelo matemático que realiza cómputos en forma automática sobre una entrada para producir una salida.

PORQUE ESTA CONFORMADA?
Este modelo está conformado por un alfabeto, un conjunto de estados y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una función de transición, que recibe a partir de un estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena a medida que el autómata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptación, que representa la salida.
CUAL ES SU FINALIDAD?
 La finalidad de los autómatas finitos es la de reconocer lenguajes regulares, que corresponden a los lenguajes formales más simples según la Jerarquía de Chomsky.
  
  funcionamiento

      En el comienzo del proceso de reconocimiento de una cadena de entrada, el autómata finito se encuentra en el estado inicial y a medida que procesa cada símbolo de la cadena va cambiando de estado de acuerdo a lo determinado por la función de transición. Cuando se ha procesado el último de los símbolos de la cadena de entrada, el autómata se detiene en el estado final del proceso. Si el estado final en el que se detuvo es un estado de aceptación, entonces la cadena pertenece al lenguaje reconocido por el autómata; en caso contrario, la cadena no pertenece a dicho lenguaje.
ventajas
      Su simplicidad hace fácil para los desarrolladores sin experiencia realizar la implementación con poco o nada de conocimiento extra (fácil entrada)
      Predictibilidad (en FSM deterministas), dado un grupo de entradas y un estado actual conocido, puede predecirse la transición de estados, facilitando la tarea de verificación
      Dada su simplicidad, los FSM son rápidos de diseñar, rápidos e implementar y rápidos de ejecutar
      FSM en una técnica antigua de representación de conocimiento y modelado de sistemas, y ha sido usados desde hace tiempo, como tal ha sido verificado como una técnica de inteligencia artificial, con muchos ejemplos de los que aprender
      Las FSM son relativamente flexibles. Existen varias maneras de implementar un sistema basado en FSM en términos de su topología, y es fácil incorporar muchas otras técnicas.
      La transferencia desde una representación abstracta del conocimiento a una implementación es fácil
      Bajo uso del procesador; apropiado para dominios donde el tiempo de ejecución está compartido entra varios módulos o subsistemas. Solo el código del estado actual ha de ser ejecutado, además de un poco de lógica para determinar el estado actual.
      Es fácil determinar si se puede llegar o no a un estado, en las representaciones abstractas, resulta obvio si se puede o no llegar a un estado desde otro, y que requerimientos existen para hacerlo.

Desventajas
      La naturaleza predecible de las FSM deterministas puede no resultar conveniente en algunos dominios como los juegos por ordenador (la solución pasa por implementar una FSM no determinista)
      Si se implementa un sistema grande usando FSMs puede ser difícil de administrar y mantener sin un buen diseño. Las transiciones entre estados pueden causar cierto grado de "factor espagetti" al intentar seguir una linea de ejecución.
      No es apropiado para todos los dominios de problema, solo debe ser usado cuando el comportamiento de un sistema puede ser descompuesto en estados separados con condiciones bien definidas para las transiciones. Esto significa que todos los estados, transiciones y condiciones deben ser conocidos y estar bien definidos.
      Las condiciones para las transiciones entre estados son rígidas, significando que están fijadas (puede superarse usando una FuSM)

0 comentarios:

Publicar un comentario