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"
3/07/2010 15:47

Juego de instrucciones que tenemos

Comunicaciones de Red
Hoy despertamos sabiendo la arquitectura donde se va a montar este Sistema Operativo. Como cualquier arquitectura, tiene su propio conjunto de instrucciones, y en el caso de la Arquitectura eWa, seleccionada por su sencillez, se trata de un conjunto de instrucciones bastante reducido.

Las instrucciones o mnemónicos usados habitualmente para comenzar a desarrollar un Sistema Operativo dependen de aquellas instrucciones que reconozca la Arquitectura en la que se va a ejecutar, soliendo coincidir con las instrucciones que el Sistema Informático entiende. En general, el conjunto de mnemónicos determinan el lenguaje de ensamblador que se usará

En nuestro caso, cada una de las instrucciones que entiende el Sistema Informático se nombrará con su correspondiente cifra hexadecimal. Como la Arquitectura eWa está orientada a ofrecer la mayor sencillez y personalización, el desarrollo del lenguaje de ensamblador será cosa nuestra. Por ese motivo, nuestro primer objetivo será pondremos manos a la obra para poder crear y determinar ese lenguaje de ensamblador que nos permitirá desarrollar el código fuente de procesos que se ejecutarán en código máquina sobre el Sistema Informático.

Lo primero que vamos a hacer es conocer un poco las instrucciones que nos ofrece esta arquitectura. Las instrucciones que nos ofrece la Arquitectura eWa, sólo 16 (24) ya que cada instrucción ocupa 4 bits, están explicadas en la documentación, pero voy a intentar resumirlas aquí brevemente. Están clasificadas en cuatro grupos:
  • Las de asignación: se trata de instrucciones que nos permiten escribir en los registros WVUZ de la CPU. A su vez, están divididas en negativas (que ponen el valor 0 binario) y positivas (que ponen el valor 1 binario), siendo en total ocho. Las instrucciones "0", "1", "2" y "3" ponen el valor 0 a W, V, U y Z respectivamente; mientras que las instrucciones "4", "5", "6" y "7" ponen en esos registros el valor 1 en el mismo orden.
  • La de condición: se trata de una instrucción (la "8") que realiza algo similar a las anteriores. Consiste en poner en el registro W el valor del registro K ambos de la CPU. El llamarla "de condición" veremos que se debe a que gracias a esto, podremos implementar la función "if" y derivados en nuestro sistema.
  • Las de ejecución: se trata de las instrucciones "9" y "A" que llamaran a las funciones de ejecución de la ABU y la MMU respectivamente. Estas funciones de ejecución, como comentaba en la entrada anterior, permiten en el caso de la ABU realizar operaciones con los grupos de registros MN, OP y XY, y que la MMU trabaje con sus punteros en función de los valores de los registros ZUVW de la CPU.
  • Las de lectura y escritura: las siguientes últimas cinco instrucciones están destinadas a trabajar con el registro K de la CPU. La instrucción "B" llamará a la función de acceso (lectura o escritura) de la ABU; las instrucciones "C" y "D" llaman respectivamente a la función de lectura y a la función de escritura de la CPU; y las instrucciones "E" y "F" llamará respectivamente a la función de lectura y a la función de escritura sobre el Espacio de Direcciones a través de la MMU.
Y con estas 16 instrucciones tenemos todas las funciones básicas para armar nuestro propio lenguaje de ensamblador que se usará para comenzar a desarrollar el Sistema Operativo.

Comentarios

10/12/2016 08:54
marc

21/10/2016 00:01
mnmnmnm

14/10/2015 22:28
muy bien

2/08/2013 00:18
Los "Tres Lenguajes eWa" (eWamblador, eWa y eWa++) son los lenguajes estándares para, respectivamente, programar el S.I.M., el S.O.M. y el S.A.M. y, por lo tanto, son únicos. Aunque inicialmente el eWamblador tenía una sintaxis un poco diferente, con el tiempo se ha conseguido que todos utilicen el mismo Idioma de Programación, y lo único que cambia entre ellos es la cantidad de funciones disponibles de forma nativa.
Esto quiere decir que, las funciones que provee cada una de las capas de los Sistemas Multiplataforma, se integran dentro del propio lenguaje de programación. De todas formas, siempre es posible bifurcar ligeramente los lenguajes de programación de bajo nivel sin que llegue a ser exactamente el del siguiente nivel gracias a los "dialectos" y otras licencias que se pueden tomar.
De todas formas, insisto, la idea es que se utilice el lenguaje de programación correspondiente para dar solución a problemas de cada uno de los Sistemas Multiplataforma dados.

2/08/2013 00:13
¿Estás proponiendo que haya trozos de un programa creado para estos Sistemas Multiplataforma en los que se compaginen código C/C++? Sí, es posible. Más adelante se hablará de los "dialectos" del Lenguaje de Programación, en donde se podrán acoplar de la mejor forma posible todo aquel código escrito para diferentes lenguajes; aunque siempre habrá alguna restricción inherente al cambio de Arquitectura.

2/08/2013 00:10
El juego de instrucciones se implementa "electrónicamente" en los componentes que conforman el Sistema Informático (Multiplataforma, S.I.M. real, en este caso) o "virtualizándose" a través de código ejecutable que simula el S.I.M. virtualizado.
Por lo tanto, viene declarado por el estándar S.I.M. y es el que se comenta en esta entrada.
Una vez dicho esto, para llamar a las diferentes intrucciones disponibles, lo único que hay que hacer es convertirlas del mnonénico correspondiente al juego de instrucciones básicas de los SIMs. Posteriormente, ya obtenido el binario ejecutable en código máquina, se carga en la memoria a ejecutar por el S.I.M. y ya se ejecutarán secuencialmente.

2/08/2013 00:03
Gracias. Participa en este blog con preguntas o propuestas y ¡seguro que saldrá de aquí algo bueno!

23/07/2013 18:36
¿Es posible que crees ficheros en un editor de texto o .cpp o .c que luego aproveches cuando se llama a la ejecucion de dichos ficheros creados con las instrucciones eWa?

23/07/2013 18:33
otra pregunta que me corroe... ¿como se crea y donde los tres lenguajes eWa?

23/07/2013 18:26
Buenas,¿ en donde implementamos o declaramos el juego de instrucciones?, estan el lenguaje ensamblador, supongo.... y luego ¿cuando realizan la llamada para ejecutarlas?

6/08/2011 16:30
ta gueno??'

6/08/2011 16:29
la neta que esta bien homis sigan adelante!!!

19/07/2011 02:18
Hola soy nuevo en esto, es un proyecto muy interezante por lo cual hare grandes esfuerzos para hacer buenos aportes al mismo...mi nombre ing. Alberto MOlina de Republica Dominicana. si vamos a hacer esto hay que hacerlo por todo lo alto y pensar en como invandir cada pc con dicho so. verlo como una solucion a la atadura con que nos tiene el guindo hasta ahora....

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