Conceptos De Automatas
Micho54824 de Octubre de 2013
3.379 Palabras (14 Páginas)282 Visitas
Intérprete (informática)
En ciencias de la computación, intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.
Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.
Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).
Para mejorar el desempeño, algunas implementaciones de programación de lenguajes de programación pueden interpretar o compilar el código fuente original en una más compacta forma intermedia y después traducir eso al código de máquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representación intermedia (ej. Python, UCSD Pascal y Java).
Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.
Ensamblador
Se define como un lenguaje de programación que se usa para dar directamente órdenes al ordenador. A diferencia de otros lenguajes, que usan el sistema operativo como intermediario para ejecutar las tareas (le dicen al sistema operativo que haga una cosa y este es quien se encarga de hacerselo saber al ordenador), el lenguaje de ensamblador (en inglés assembly) no usa intermediarios, sino que directamente le dá las órdenes a la 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).
desde mastermagazine
Cargadores
Un cargador es un programa del sistema que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un ligador para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización y la carga. Los procesos de ensamblado y carga están íntimamente relacionados.
Las funciones más importantes de un cargador son: colocar un programa objeto en la memoria e iniciar su ejecución. Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalización de programas, su operación es muy simple, pues todas las funciones se realizan en un solo paso. Se revisa el registro de encabezamiento para comprobar se ha presentado el programa correcto para la carga (entrando en la memoria disponible). A medida que se lee cada registro de texto, el código objeto que contiene pasa a la dirección de memoria indicada. Cuando se encuentra el registro de fin, el cargador salta a al dirección especificada para iniciar la ejecución del programa cargado.
Un programa objeto contiene instrucciones traducidas y valores de datos del programa fuente, y específica direcciones en memoria donde se cargarán estos elementos.
Carga, que lleva el programa objeto a la memoria para su ejecución.
Relocalización, que modifica el programa objeto de forma que puede cargarse en una dirección diferente de la localidad especificada originalmente.
Ligado, que combina dos o más programas objeto independientes y proporciona la información necesaria para realizar referencias entre ellos.
Un cargador es un programa del sistema que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un ligador( o editor de ligado) para realizar las operaciones de enlace, y un cargador separado para manera la relocalización y la carga.
En la mayoría de los casos todos los traductores de programas (esto es, ensambladores y compiladores) de un sistema en particular producen programas objeto en el mismo fromato.
Se han desarrollado herramientas especiales de sotware, llamadas cargadores, para asistir al programados en la carga del programa. El cargador es normalmente un programa pequeño que permite al usuario entrar directamente las palabras de isntrucción y datos a direcciones concretas de la memoria, mediante un teclado o una cinta magnética.
El cargador consiste en un juego de instrucciones que permiten al dispositivo de entrada (teclado o unidad de cinta) asignar la dirección de inicio de la memoria y asegurar que el computador leerá el programa y lo cargará byte a byte.
Depurador
Un depurador (en inglés, debugger), es un programa usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto.
Si es un depurador de nivel de fuente o depurador simbólico, comúnmente ahora visto en entornos de desarrollo integrados, cuando el programa "se estrella" o alcanza una condición predefinida, la depuración típicamente muestra la posición en el código original. Si es un depurador de bajo nivel o un depurador de lenguaje de máquina, muestra la línea en el fuente desensamblado (a menos que también tenga acceso en línea al código fuente original y pueda exhibir la sección apropiada del código del ensamblador o del compilador). Un "estrellamiento" sucede cuando el programa no puede continuar normalmente debido a un error de programación. Por ejemplo, el programa pudo haber intentado usar una instrucción no disponible en la versión actual del CPU o haber intentado tener acceso a memoria protegida o no disponible.
Típicamente, los depuradores también ofrecen funciones más sofisticadas tales como correr un programa paso a paso (un paso o animación del programa), parar el programa (breaking), es decir, pausar el programa para examinar el estado actual en cierto evento o instrucción especificada por medio de un breakpoint, y el seguimiento de valores de algunas variables.
...