lunes, 29 de agosto de 2016

Código Fuente

El código fuente de un programa informático (o software) es un conjunto de líneas de texto con los pasos que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está escrito por completo su funcionamiento.




El código fuente de un programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje o código binario; así será más fácil para la máquina interpretarlo (lenguaje máquina o código objeto que sí pueda ser ejecutado por el hardware de la computadora). Para esta traducción se usan los llamados compiladores, ensambladores, intérpretes y otros sistemas de traducción.


Programa Fuente

Programa fuente es una noción que se emplea como sinónimo de código fuente. Se trata de las instrucciones que un programa informático transmite a una computadora para que pueda ejecutarse. Dichas instrucciones son líneas de texto escritas en un lenguaje de programación (una estructura capaz de impartir instrucciones informáticas a partir de una determinada base semántica y sintáctica).


Puede decirse que, en el programa fuente, un software detalla la totalidad de su funcionamiento. Un programador es quien desarrolla dichas instrucciones, respetando los principios del lenguaje de programación elegido. El sistema en cuestión, al acceder al programa fuente, interpreta las instrucciones y las pone en marcha.

Compilador

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.




Fases del compilador

Un compilador típicamente opera en fases, cada una lleva a cabo una tarea sobre el programa fuente, las primeras tres fases suelen agruparse en una sola fase llamada fase de análisis y las últimas tres en una llamada fase de síntesis.

La fase de análisis y el módulo de manejo de errores se describen posteriormente en este mismo capítulo. La fase de síntesis no es relevante en el contexto de un lenguaje cultivase de datos, ya que este sigue un enfoque diferente que el de los lenguajes tradicionales, por esta razón solo se menciona.
Partes de un compilador

Básicamente, un compilador cuenta con dos partes fundamentales: El Front End y el Back End. Estas partes se complementan para lograr el objetivo del compilador. A continuación, describiremos cada una de estas partes:

Front End: El Front End es la parte del compilador que interactúa con el usuario y por lo general, es independiente de la plataforma en la que se trabaja. Se encarga de realizar el análisis del código fuente a compilar y verifica que este sea válido, así como también, genera el árbol de derivación y rellena los valores de la tabla de símbolos.

Back End: Esta parte del compilador es la encargada de generar el código en formato de máquina, a partir del trabajo hecho por el Front End.

Lenguaje Ensamblador

Un lenguaje ensamblador puro es aquel en que cada sentencia produce exactamente una instrucción máquina. En otras palabras, hay una correspondencia biunívoca entre las instrucciones de máquina y las sentencias del programa en ensamblador.

Si cada línea de un programa en ensamblador contuviera una sentencia ensamblador y si cada palabra de máquina contuviera una instrucción de máquina, entonces un programa de n líneas escrito en ensamblador produciría un programa en lenguaje de máquina que ocuparía n palabras.

Ensamblador.png

¿Dónde se utiliza el lenguaje ensamblador?

El lenguaje ensamblador trabaja directamente con el microprocesador de una máquina, es decir, programamos un microprocesador con este lenguaje, también lo podemos utilizar para desarrollar controladores de dispositivos (Drivers) y sistemas operativos de computadoras.

IDE para lenguaje ensamblador

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 foro en 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 ejecutables en formato MZ, ELF o PE. Existe un traslado del ensamblador a la arquitectura ARM, llamado FASMARM.

Lenguaje Máquina

El lenguaje de máquina o código máquina es el sistema de códigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autómata. 

Está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones más un conjunto de datos sobre el cual se trabaja.



Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos.

El lenguaje de máquina es específico de la arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas