Simples VM - PARTE 2

1. Simples VM - PARTE 2

???
gokernel

(usa Linux Mint)

Enviado em 24/02/2016 - 20:15h


Bom, este post é a SEGUNDA PARTE ( e última ) deste aqui:
https://www.vivaolinux.com.br/topico/C-C++/Simples-VM-Virtual-Machine-PARTE-1

Código aqui:
http://codepad.org/f6fn6vM9




  


2. Re: Simples VM - PARTE 2

Matth
MattF

(usa Slackware)

Enviado em 24/02/2016 - 22:44h

Pessoal, estava afim de testar o código, mas obtive o seguinte problema de link ao compilar:


$ gcc vm.c -o vm -O2 -Wall -m32
/usr/bin/ld: ignorando /usr/lib/gcc/x86_64-linux-gnu/5/libgcc.a incompatível ao procurar por -lgcc
/usr/bin/ld: não foi possível encontrar -lgcc
/usr/bin/ld: ignorando /usr/lib/gcc/x86_64-linux-gnu/5/libgcc_s.so incompatível ao procurar por -lgcc_s
/usr/bin/ld: não foi possível encontrar -lgcc_s
collect2: error: ld returned 1 exit status



Até o momento não tenho conhecimentos suficientes para lidar com isso, poderiam me dar uma luz?


3. Re: Simples VM - PARTE 2

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/02/2016 - 23:17h

Se não estivesse instalado daria uma mensagem de comando não encontrado na hora.
Pode ser outra coisa que está faltando.
O que é aquela opção -w32? É para compilar em 32 bits?

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



4. Re: Simples VM - PARTE 2

???
gokernel

(usa Linux Mint)

Enviado em 25/02/2016 - 11:24h


Oi Sam L. acho que o código não tem vida ... tem bug mesmo rarsrsrsr


// funcao com bug:
VM *vm_new (int size)
{
VM *vm = (VM*) malloc (sizeof(VM));

if (vm) {
if ( (vm->code = (OPCODE*) malloc (sizeof(OPCODE)*size)) == NULL)
return NULL;

vm->ip = vm->code;
vm->label = NULL;
vm->pos = 0;
}
return vm;
}

//--------------------------------------------------------
// AGORA: funcao correta:
// faltou apenas isso: vm->jump = NULL;
//--------------------------------------------------------
VM *vm_new (int size)
{
VM *vm = (VM*) malloc (sizeof(VM));

if (vm) {
if ( (vm->code = (OPCODE*) malloc (sizeof(OPCODE)*size)) == NULL)
return NULL;

vm->ip = vm->code;
vm->label = NULL;
vm->jump = NULL;
vm->pos = 0;
}
return vm;
}


Código completo sem Bug aqui:
http://codepad.org/Yvf443BL



5. Re: Simples VM - PARTE 2

Matth
MattF

(usa Slackware)

Enviado em 25/02/2016 - 11:29h

SamL escreveu:

listeiro_037 escreveu:

Se não estivesse instalado daria uma mensagem de comando não encontrado na hora.
Pode ser outra coisa que está faltando.
O que é aquela opção -w32? É para compilar em 32 bits?

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


É, tem razão, mas é a primeira vez que vejo tal mensagem. Isso só ocorre quando não linka com uma lib no sistema, que no caso foi a "gcc", talvez falte alguma lib e não estamos sabendo qual é.
EDIT:
aquela opção -m32 é para compilar para arquitetura 32 bits.


Gente estou em 64 bits. Me gcc está logicamente instalado e já vi esse tipo de saída várias vezes. Não sabia dessa obção de arquitetura m. Fazendo :

gcc vm.c -o vm -O2 -Wall -m64


Compilou...


6. Re: Simples VM - PARTE 2

???
gokernel

(usa Linux Mint)

Enviado em 25/02/2016 - 17:44h


Modificado para ser compatível ( 32 ou 64 BITS ).
http://codepad.org/fFEzbhAz

MattF, compilou ok, mas executou corretamente ?



7. Re: Simples VM - PARTE 2

Matth
MattF

(usa Slackware)

Enviado em 25/02/2016 - 18:24h

gokernel escreveu:


Modificado para ser compatível ( 32 ou 64 BITS ).
http://codepad.org/fFEzbhAz

MattF, compilou ok, mas executou corretamente ?


Executou sim, tanto a nova versão quanto a antiga foram do mesmo jeito. Você pensa em continuar com esse projeto?


8. Re: Simples VM - PARTE 2

???
gokernel

(usa Linux Mint)

Enviado em 26/02/2016 - 11:02h


MattF escreveu:
Você pensa em continuar com esse projeto?


Oi MattF, não penso em continuar com esse "projeto" ... a ideia era de apenas postar algo básico de uma VM que serviria como base para algum projeto.

RESUMINDO: mostrei o básico como modelo para quem quiser se aventurar e desenvolver algo mais incrementado.

E para falar a verdade não tenho tempo disponível para projetos...

Esse meu modelo foi baseado nesta VM:
http://byteworm.com/2010/11/21/the-fastest-vm-bytecode-interpreter/


T++.





9. Re: Simples VM - PARTE 2

???
gokernel

(usa Linux Mint)

Enviado em 12/03/2016 - 11:19h


Link do projeto:
https://sourceforge.net/projects/simple-vm/files/

Na pasta ( backup ) contem a versão lenta.

Para compilar veja ( compila.bat )
Para executar: run arquivo.vm

Projeto em fase inicial ... e se dispor de tempo atualizarei rarsrsrsr.

T++.


10. Re: Simples VM - PARTE 2

Matth
MattF

(usa Slackware)

Enviado em 13/03/2016 - 20:56h

gokernel escreveu:


Link do projeto:
https://sourceforge.net/projects/simple-vm/files/

Na pasta ( backup ) contem a versão lenta.

Para compilar veja ( compila.bat )
Para executar: run arquivo.vm

Projeto em fase inicial ... e se dispor de tempo atualizarei rarsrsrsr.

T++.



Ha! Então se tornou um projeto. Meus parabéns!



11. Re: Simples VM - PARTE 2

???
gokernel

(usa Linux Mint)

Enviado em 14/03/2016 - 06:12h

MattF, obrigado pelo parabéns !!!

Apenas incrementei mais algumas coisas e disponibilizei para download.

Mas não espere grande evolução no projeto ... fiz porque algumas vezes precisei de algo assim para testar alguma coisa.

Mas qualquer pergunta, fique a vontade ...

T++.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts