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.