Visita la versión flash
Propuestas
Visita el perfil del autor
Hablan del blog

SOM30


"Cómo hacer un Sistema Operativo en 30 días"
5/07/2010 23:58

Conociendo el compilador que usaremos

Comunicaciones de Red
Ya sé que muchos de los lectores pensarán que no se puede estar llegando al 20% del tiempo total de desarrollo del Sistema Operativo y todavía no haber tocado el núcleo de éste. Para tranquilizar, ya que estoy yendo un poco por libre y la gente empieza a preguntar, adelantar que sí, habrá un núcleo, en concreto, un micronúcleo-exonúcleo. Pero hoy ni por asomo podemos afrontar el tema de picar código, sino que vamos a tener que ver el compilador que usaremos.

Es obvio que si vamos a tener un lenguaje de programación y un código fuente, vamos a necesitar un programa que nos convierta ese código fuente en código objeto para que pueda ejecutarse en el Sistema Informático. Ese es el cometido del compilador.

Vamos a dejar claro las estructuras que nos va a tener que proveer, y con las que vamos a poder formar el lenguaje de programación. Estas estructuras tendrán la característica, como todo lo que empieza por almohadilla ("#") según definimos en el idioma, de empezar por dicho símbolo. Igualmente, hay que concretar que sólo usaremos ese símbolo para comunicarse con el compilador o utilizar las estructuras que nos provea el compilador.
Esto es muy serio ya que muchos lenguajes de programación lo usan para representar números hexadecimales; eso no lo podremos hacer por definición.

El compilador nos va a ofrecer las siguientes estructuras nativas:
  • #: Será la estructura global.
  • #VOID: Será la estructura vacía.
  • #DEFINED: Será la estructura base de todas las que definamos a través de los métodos correspondientes.
  • #UNDEFINED: Será cualquier estructura que no entre en la definición de las demás.
A esas cuatro estructuras nativas se añaden todas las que generará el compilador a través de la definición del idioma de programación que hicimos:
  • #FUNTION: Será la estructura que generan las llaves ({...}) para trabajar con funciones.
  • #STRING: Será la estructura que generan las comillas dobles ("...") y simples ('...') para trabajar con cadenas.
  • #UINT: Será la estructura que generarán los números (0123456789) para trabajar con enteros sin signo.
  • #OBJECT: Será la estructura que generarán los dos puntos (:) para trabajar con tipos de dato.
  • #ARGUMENT: Será la estructura que generará la coma (,) o el espacio ( ) para trabajar con argumentos.
Como se dejaba ver en la estructura #DEFINED, el compilador, además, nos permite usar unos procedimientos para realizar ciertas acciones. Hay que tener en cuenta que estos procedimientos no se verán reflejados en el código máquina (si no serían métodos), ya que su objetivo es parametrizar el compilador. Nótese que siempre reciben cadenas constantes, nunca variables. En un futuro podría (para las dos últimas) entender expresiones regulares, aunque eso ahora no corre prisa. Por último, los procedimientos siempre irán en minúsculas, en contraposición con las estructuras, que irán en mayúsculas.
  • #compilador "compilador": Selecciona el tipo de compilador, por si hubiera diferentes configuraciones por defecto.
  • #lenguaje "lenguaje": Selecciona el tipo de lenguaje, por si hubiera diferentes (que habrá) lenguajes que usar.
  • #define "nueva estructura": Pasa un #UNDEFINED (" estructura") a #DEFINED.
  • #undefine "estructura a destruir": Pasa un #DEFINED (" estructura a destruir") a #UNDEFINED.
  • #haz " nuevo recurso" "estructura": Pasa un #UNDEFINED (" nuevo recurso") al tipo "estructura".
  • #deshaz "recurso a destruir": Pasa un recurso (" recurso a destruir") a #UNDEFINED.
  • #alterna "valor buscado" "valor escrito": Alterna en el código fuente "valor buscado" por "valor escrito".
  • #unterna "valor ya no buscado": Deja de alternar "valor buscado".
  • #crea "estructura" "estructura devuelta" "argumentos" "función": quizás es la más completa y más poderosa, ya que crea métodos dentro de las estructuras, es decir, define estructuras por completo.
Esto nos deja por fin abiertas las puertas para abordar mañana todo el conjunto de conceptos que hemos ido definiendo para empezar el trabajo duro.

Comentarios

12/04/2013 21:26
En el código fuente de la aplicación "Fi(eWa)" puedes encontrar la parte del compilador. Justamente ahora mismo se está comenzando a programar el "Fi(eWa)" en versión móvil.

7/04/2013 00:50
Gracias por este gran tutorial ahora mi duda es donde colocas todo? en que trabajas? gracias y disculpa mi ignorancia

13/09/2012 00:41
Como se explicó en la entrada anterior (http://www.som30.es/dia4) aquí hablaremos de Idioma de Compilación. Lee dicha entrada y comenta allí tus dudas. Pero, para ir aclarando las cosas, no se utiliza ningún lenguaje "tradicional" (C++, Java, Python...) sino un lenguaje funcional (similar al C o al php en su variante procedimental) que se define en las siguientes entradas.

12/09/2012 06:40
perdon pero en que lenguaje se esta programando C++, java o algun otro???

23/01/2012 01:52
tratare de entenderle, porque aun sigo pero no logro entender casi nada deberian poner informacion mas especifica y clara con ejemplos.

13/11/2011 23:16
asd

Deja tu comentario


Se enviará usando la Red Social @visitante
¿Quieres responder con otra cuenta de TuEntidad.es?
Usa MonoMola o LoTienes.

Búsqueda

Calendario

- Día 1
- Día 2
- Día 3
- Día 4
- Día 5
- Día 6
- Día 7
- Día 8
- Día 9
- Día 10
- Día 11
- Día 12
- Día 13
- Día 14
- Día 15
- Día 16
- Día 17
- Día 18
- Día 19
- Día 20
- Día 21
- Día 22
- Día 23
- Día 24
- Día 25
- Día 26
- Día 27
- Día 28
- Día 29

Código

- Sistemas Informáticos
- Compilador
- GAM
- GAE
- Kérnel
- LiSi
- ViSi
- SAM
Licencia LSW

Comentan

- Día 1 (16) 8/06 02:28
- Día 29 (19) 13/03 04:10
- Día 10 (18) 23/01 22:16
- Día 3 (9) 10/12 08:55
- Día 2 (19) 10/12 08:54
- Día 7 (4) 5/11 21:29
- Día 11 (44) 25/10 01:39
- Día 4 (3) 24/09 13:45
- Día 28 (2) 6/04 04:01
- Día 26 (1) 17/07 01:21
- Día 27 (4) 29/05 14:50
- Día 8 (9) 29/05 05:35
- Día 24 (2) 18/01 05:16
- Día 17 (5) 18/01 05:10
- Día 13 (7) 6/12 18:44
- Día 15 (1) 30/08 08:53
- Día 6 (2) 25/08 02:14
- Día 5 (4) 7/04 00:50
- Día 21 (6) 26/06 21:26
- Día 18 (2) 26/06 03:09
- Día 23 (2) 22/04 13:45
- Día 25 (1) 11/03 21:34
- Día 19 (3) 19/01 17:33
- Día 14 (2) 7/01 22:06

Valid HTML 4.01 Transitional