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

De Wiki~eWa
Ir a la navegaciónIr a la búsqueda
m
Línea 97: Línea 97:
 
=== '''C''' (1100) ===
 
=== '''C''' (1100) ===
 
{{AP|CPU}}
 
{{AP|CPU}}
Llama a la [[CPU#Operaciones_de_la_CPU|función de lectura de registros]] de la [[CPU]], que leerá el valor de uno de los registros '''0123456789ABCDEF''' de la [[CPU]] dependiendo de los valores pasados de los registros '''ZUVW''' de la [[CPU]] y lo copiará en el registro '''K''' de la [[CPU]] .
+
Llama a la [[CPU#Operaciones_de_la_CPU|función de lectura]] de [[CPU#Registros de la CPU |registros]] de la [[CPU]], que leerá el valor de uno de los registros '''0123456789ABCDEF''' de la [[CPU]] dependiendo de los valores pasados de los registros '''ZUVW''' de la [[CPU]] y lo copiará en el registro '''K''' de la [[CPU]] .
  
 
  k = cpu_leeRegistro( K, U, V, W );
 
  k = cpu_leeRegistro( K, U, V, W );
Línea 103: Línea 103:
 
=== '''D''' (1101) ===
 
=== '''D''' (1101) ===
 
{{AP|CPU}}
 
{{AP|CPU}}
Llama a la [[CPU#Operaciones_de_la_CPU|función de escritura de registros]] de la [[CPU]], que copiará el valor del registro '''K''' de la [[CPU]] en uno de los registros '''0123456789ABCDEF''' de la [[CPU]] dependiendo de los valores pasados de los registros '''ZUVW''' de la [[CPU]].
+
Llama a la [[CPU#Operaciones_de_la_CPU|función de escritura]] de [[CPU#Registros de la CPU |registros]] de la [[CPU]], que copiará el valor del registro '''K''' de la [[CPU]] en uno de los registros '''0123456789ABCDEF''' de la [[CPU]] dependiendo de los valores pasados de los registros '''ZUVW''' de la [[CPU]].
  
 
  cpu_escribeRegistro( K, U, V, W );
 
  cpu_escribeRegistro( K, U, V, W );

Revisión del 14:52 20 may 2009

El Lenguaje de Código máquina 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: Sólo aparecen las Unidades.

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 en G, se incrementa a 0x0001 y se escribe en H, se vuelve a incrementar a 0x0002 y se escribe en I, se incrementa a 0x0003 y se escribe en J, y por último, se vuelve a incrementar. En total, se habrá aumentado en cuatro el valor del PC después de la lectura. Después, se ejecuta la instrucción de GHIJ (por ejemplo, 1001 para G=J=1 y H=I=0), que coinciden con los siguientes diecicéis instrucciones básicas posibiles. Por último, se vuelve a repetir el proceso de lectura de los registros GHIJ.

Las de posición

Artículo principal: CPU

Negativas

Estas cuatro instrucciones básicas consisten en poner los registros WVUZ de la CPU 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;

Positivas

Estas cuatro instrucciones básicas consisten en poner los registros WVUZ de la CPU 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 función de 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

Realiza la llamada 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)

Artículo principal: MMU

Llama a la función de ejecución de la MMU, que hará modificaciones en los punteros de la MMU dependiendo de los valores pasados de los registros ZUVW de la CPU.

mmu_ejecuta( K, U, V, W );

C (1100)

Artículo principal: CPU

Llama a la función de lectura de registros de la CPU, que leerá el valor de uno de los registros 0123456789ABCDEF de la CPU dependiendo de los valores pasados de los registros ZUVW de la CPU y lo copiará en el registro K de la CPU .

k = cpu_leeRegistro( K, U, V, W );

D (1101)

Artículo principal: CPU

Llama a la función de escritura de registros de la CPU, que copiará el valor del registro K de la CPU en uno de los registros 0123456789ABCDEF de la CPU dependiendo de los valores pasados de los registros ZUVW de la CPU.

cpu_escribeRegistro( K, U, V, W );

E (1110)

Artículo principal: MMU

Llama a la función de acceso al Bus de Direcciones que escribirá 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)

Artículo principal: MMU

Llama a la función de acceso al Bus de Direcciones que escribirá en la dirección de memoria apuntada por el puntero actual de la MMU el valor del registro K.

mmu_toma( K );