Diferencia entre revisiones de «Código máquina»

De Wiki~eWa
Ir a la navegaciónIr a la búsqueda
m
Línea 15: Línea 15:
 
==== '''0''' (0000) ====
 
==== '''0''' (0000) ====
  
Escribe en el registro '''W''' el valor '''0'''.
+
Escribe en el registro '''W''' de la [[CPU]] el valor '''0'''.
 +
 
 +
W = 0;
  
 
==== '''1''' (0001) ====
 
==== '''1''' (0001) ====
  
Escribe en el registro '''V''' el valor '''0'''.
+
Escribe en el registro '''V''' de la [[CPU]] el valor '''0'''.
   
+
 
 +
  V = 0;
 +
 
 
==== '''2''' (0010) ====
 
==== '''2''' (0010) ====
  
Escribe en el registro '''U''' el valor '''0'''.
+
Escribe en el registro '''U''' de la [[CPU]] el valor '''0'''.
 +
 
 +
U = 0;
  
 
==== '''3''' (0011) ====
 
==== '''3''' (0011) ====
  
Escribe en el registro '''Z''' el valor '''0'''.
+
Escribe en el registro '''Z''' de la [[CPU]] el valor '''0'''.
 +
 
 +
Z = 0;
  
 
=== Verdaderas ===
 
=== Verdaderas ===
Línea 35: Línea 43:
 
==== '''4''' (0100) ====
 
==== '''4''' (0100) ====
  
Escribe en el registro '''W''' el valor '''1'''.
+
Escribe en el registro '''W''' de la [[CPU]] el valor '''1'''.
 +
 
 +
W = 1;
  
 
==== '''5''' (0101) ====
 
==== '''5''' (0101) ====
  
Escribe en el registro '''V''' el valor '''1'''.
+
Escribe en el registro '''V''' de la [[CPU]] el valor '''1'''.
 +
 
 +
V = 1;
  
 
==== '''6''' (0110) ====
 
==== '''6''' (0110) ====
  
Escribe en el registro '''U''' el valor '''1'''.
+
Escribe en el registro '''U''' de la [[CPU]] el valor '''1'''.
 +
 
 +
U = 1;
  
 
==== '''7''' (0111) ====
 
==== '''7''' (0111) ====
  
Escribe en el registro '''Z''' el valor '''1'''.
+
Escribe en el registro '''Z''' de la [[CPU]] el valor '''1'''.
 +
 
 +
Z = 1;
  
 
== La de condición ==
 
== La de condición ==
Línea 53: Línea 69:
 
=== '''8''' (1000) ===
 
=== '''8''' (1000) ===
  
Escribe en el registro '''W''' el valor del registro '''K'''.
+
Escribe en el registro '''W''' de la [[CPU]] el valor del registro '''K''' de la [[CPU]].
 +
 
 +
W = K;
  
 
== La de ejecución ==
 
== La de ejecución ==
Línea 59: Línea 77:
 
=== '''9''' (1001) ===
 
=== '''9''' (1001) ===
 
{{AP|ABU}}
 
{{AP|ABU}}
Realiza la llamada a [[ABU#Operaciones_de_la_ABU|la ejecución de la ABU]].
+
Realiza la llamada a [[ABU#Operaciones_de_la_ABU|la ejecución de la ABU]], que modificará los registros '''XY''' de la [[ABU]].
 +
 
 +
abu_ejecuta();
  
 
== Las de lectura y escritura ==
 
== Las de lectura y escritura ==
  
 
=== '''A''' (1010) ===
 
=== '''A''' (1010) ===
 
+
{{AP|ABU}}
[[ABU#Acceso_a_los_registros|]]
+
Llamar a la [[ABU#Acceso_a_los_registros|función de acceso a los registros]] de la [[ABU]] que, dependiendo de la naturaleza del registro de la [[ABU]] apuntado por los ''registros azules'' '''UVW''' de la [[CPU]] ('''solo lectura''' o '''solo escritura'''), escribirá su valor en '''K''' o le asignará el de '''K'''.
  
 
  K = abu_dameytoma(K, U, V, W);
 
  K = abu_dameytoma(K, U, V, W);

Revisión del 01:06 7 may 2009

El Lenguaje de Mnemónicos o de Instrucciones básicas que entiende la Arquitectura eWa es un lenguaje muy simple de solo deiciséis instrucciones básicas. Estas deiciséis instrucciones básicas están clasificadas en cuatro grupos. En realidad, aunque realmente se debería llamar Lenguaje de máquina, es usado para optimizar de forma extrema los códigos, generalmente, ensamblado por alguno de los tres Lenguajes eWa.

Gráfico ilustrativo del núcleo de la Arquitectura eWa.

Explicación del funcionamiento

Artículo principal: Arquitectura eWa

En cuanto se inicializa el sistema, se escriben los cuatro primeros bits desde (inclusive) la dirección que indica el PC, inicialmente 0x0000 a G, 0x0001 a H, 0x0002 a I, y 0x0001 a J. Posteriormente, se aumenta en cuatro el valor del PC. Después, se ejecuta la instrucción GHIJ (por ejemplo, 1001 para G=J=1 y H=I=0), que coinciden con los siguientes diecicéis mnemónicos posibiles. Por último, se vuelve a repetir el proceso de lectura de los registros GHIJ.

Las de posición

Falsas

Estos cuatro mnemónicos consisten en poner los registros WVUZ a valores 0.

0 (0000)

Escribe en el registro W de la CPU el valor 0.

W = 0;

1 (0001)

Escribe en el registro V de la CPU el valor 0.

V = 0;

2 (0010)

Escribe en el registro U de la CPU el valor 0.

U = 0;

3 (0011)

Escribe en el registro Z de la CPU el valor 0.

Z = 0;

Verdaderas

Estos cuatro mnemónicos consisten en poner los registros WVUZ a valores 1.

4 (0100)

Escribe en el registro W de la CPU el valor 1.

W = 1;

5 (0101)

Escribe en el registro V de la CPU el valor 1.

V = 1;

6 (0110)

Escribe en el registro U de la CPU el valor 1.

U = 1;

7 (0111)

Escribe en el registro Z de la CPU el valor 1.

Z = 1;

La de condición

8 (1000)

Escribe en el registro W de la CPU el valor del registro K de la CPU.

W = K;

La de ejecución

9 (1001)

Artículo principal: ABU

Realiza la llamada a la ejecución de la ABU, que modificará los registros XY de la ABU.

abu_ejecuta();

Las de lectura y escritura

A (1010)

Artículo principal: ABU

Llamar a la función de acceso a los registros de la ABU que, dependiendo de la naturaleza del registro de la ABU apuntado por los registros azules UVW de la CPU (solo lectura o solo escritura), escribirá su valor en K o le asignará el de K.

K = abu_dameytoma(K, U, V, W);

B (1011)

C (1100)

D (1101)

E (1110)

Escribe en el registro K el valor de la dirección de memoria apuntada por el puntero actual de la MMU.

K = mmu_dame();

F (1111)

Escribe en la dirección de memoria apuntada por el puntero actual de la MMU el valor del registro K.

mmu_toma( K );