Skip to content
On this page

Introdução ​

Então, hoje acordei com uma vontade repentina de desenvolver um emulador.

Começou como um desejo de desenvolver um emulador de Gameboy, porém, depois de algumas pesquisas, descobri isso [BytePusher] (https://esolangs.org/wiki/BytePusher), uma máquina virtual baseada em Chip8.

Parecia bastante simples para começar, então eu escolhi. Mas ainda quero desenvolver um emulador de Gameboy, mas farei isso depois de terminar este.

A propósito, tentarei escrevê-lo usando tecnologias da Web (HTML, CSS e Javascript) usando <canvas> para exibição.

Então, o objetivo desta planta é basicamente registrar minha jornada nesta "aventura" de aprendizado, enquanto ensino a mim mesmo e escrevo de uma forma que possa ser usada para ensinar outras pessoas.

::: informação Aviso legal Então, vou ser honesto, não entendo muito sobre engenharia de computação em profundidade, então hardware e coisas relacionadas não são algo que eu conheça bem, pelo menos no momento em que escrevo esta introdução. :::


Compreender a máquina. ​

Ok, vou ser honesto. Para entender como isso funciona, tive que ler a página Wiki pelo menos 3 vezes. A maior parte soava (na verdade, ainda soa) como magia negra. Minha dificuldade em entendê-lo é baseada em dois fatores sobre mim:

  1. Já faz um bom tempo desde a última vez que li sobre memórias e CPU. Fiz um curso de hardware de computador na Uni e li o Manga Guide to Microprocessors;
  2. Mesmo que eu tenha aprendido da maneira mais básica sobre como os computadores funcionam, muitas das abstrações se perderam ao longo do tempo em minha mente.

Felizmente, contornei o básico, quem quer que seja, isso parecia muito mais complexo do que eu pensava que seria.

A CPU ​

Portanto, a CPU é a base da máquina ByterPush. Seu código de máquina é baseado em ByteByteJump, que é uma instrução de 3 palavras (também conhecida como 3 bytes), que é algo como:

A >> B -> C

O que se traduz aproximadamente em:

  1. Obtenha o valor do endereço A;
  2. Mova-o para o endereço B;
  3. Vá para C.

A parte mais difícil de tudo isso é que, em bytebytejump, você não tem instruções de operação, então não há "add", "sub" e assim por diante, você mesmo deve escrevê-las.

A máquina mental ​

Então, fiquei tipo, 3 horas, só coçando a cabeça tentando entender, porque é a forma mais básica de operar: você, sua linguagem de escolha, seus operadores binários e sua criatividade (ou resiliência mental).

Vamos começar! ​

Ok, então, em vez de tentar ensiná-lo sobre como isso pode funcionar, começarei desenvolvendo sozinho e explicando o que estava tentando fazer em movimento.

Continue lendo em Hello World, eu acho?

Released under the MIT License.