gokernel
(usa Linux Mint)
Enviado em 24/06/2014 - 11:31h
Atualizando "final":
arquivo ( vm.h ):
http://codepad.org/dYNySQ0W
arquivo ( vm.c ):
http://codepad.org/jMthpGXw
arquivo ( micro.c ):
http://codepad.org/1f05H146
UM TINY VM MODELO ( tiny.c ):
http://codepad.org/puwt6MHW
Biblioteca C Interna:
--------------------------------
int hello (int a, int b);
int soma_int (int a, int b);
float soma_float (float a, float b);
void info (void);
void clocki (void);
void clocke (void);
--------------------------------
Um pequeno script para teste:
float f, value = 100.00, a = 255.50;
int i;
print value;
for(i=0;i<5;i++){
f = soma_float (value, a);
value = value + 0.77;
print f;
}
i = soma_int (1500, 55);
print i;
info();
----------------------------------------------------------------
Nota sobre o modelo(THREADED) de implementação da VM:
01 - Vantagem:
a - Velocidade:
O principal motivo de implementar esse modelo usando ( THREADED ) foi
para ganhar em velocidade, comparando ao modelo usando ( switch ):
USANDO THREADED PROCESSAMENTO PASSOS:
01: incrementa
02: pula para a instrucao
USANDO SWITCH PROCESSAMENTO PASSOS:
01: incrementa
02: compara
03: pula para a instrucao
04: pula para o inicio ... refazendo o loop
02 - Desvantagem:
a - Tamanho maior de cada instrução:
Usando o modelo ( THREADED ) cada instrucao consome 8 bytes:
Um exemplo THREADED somando 2 longs:
-------------------------------------
LOAD_L : 8 bytes
LOAD_L : 8 bytes
ADD_L : 8 bytes
= 24 bytes
-------------------------------------
Um exemplo usando (switch) somando 2 longs:
-------------------------------------
LOAD_L : 5 byte (1 byte da instrucao + 4 bytes do argumento LONG)
LOAD_L : 5 byte (1 byte da instrucao + 4 bytes do argumento LONG)
ADD_L : 1 byte (1 byte da instrucao)
= 11 bytes
-------------------------------------
----------------------------------------------------------------
NOTA FINAL:
Este tópico tem como objetivo de divulgar uma pequena API ...
Este código é de domínio público sem direito autoral ... então use como quiser e caso "use"( informe os créditos ) ...
Espero que este seja útil para alguem.
Críticas são bem-vindas !!! ...
POR (gokernel - gokernel@hotmail.com) - 24/06/2014 - 11:30
Francisco G. A.
OBS: Só informei o meu nome real para provar que este código é "meu" ... na faculdade ;)
T.