Construindo um SO x86/16bits | Uma abordagem na moral
Este documento tem como finalidade aprofundar os conhecimentos sobre a arquitetura x86 e assembly (usando NASM), usando uma abordagem prática. Todo o processo será voltado para o desenvolvimento de um pequeno sistema operacional na moral, com capacidade de dar boot, escrever na tela, receber entrada a partir de um teclado e executar pequenos comandos, além de um carregador de aplicações externas que podem ser carregadas através de uma midia (floppy/HD/SD). Todo desenvolvimento será feito usando um emulador de x86 (BOCHS) para que possamos ter um ambiente de testes confiável o homogêneo, sem neurose, sem caô.
Se o barato é louco e o processo é lento no momento, deixa eu separar os tópicos assim:
- Processo de boot - Uma bagulho sinistro
- Setor de boot (16 bits modo real) - 512 bytes de pura emoção
- Interrupções - Como lidar?
- Registradores - O que são? Onde vivem? O que comem?
- Assembly (com NASM) - Tem que ter fé aqui, sim, tem que insistir!
- Escrevendo, compilando rodando programas em x86 - Metal nú
- Acessar dispositivos via BIOS - Voltar rimando no buzão, igual computador... tu tu tu tu...
- Vídeo
- Teclado
- Disco
- Usando a pilha (stack), nem que seja Duracell
- Montando um pequeno sistema operacional bolado (larga o seu *UNIX e vem em mim)
- Fazendo um programa externo e carregando ele pelo SO novo bolado
- There is a natural mystic blowing through the air...
O termo x86 pode ser referir tanto para um conjunto de instruções e a microprocessadores que implementam esse mesmo conjunto. O nome x86 é derivado a partir do fato que muitos processadores antigos da Intel tinham nomes terminados em 86.