Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Projeto: Bootloader + Kernel em C com Jogo Interativo

Descrição do Projeto

Este projeto implementa um bootloader simples em Assembly que carrega um kernel escrito em C. O kernel é executado em protected mode e possui as seguintes funcionalidades:

  • Exibe caracteres na tela via acesso direto à memória de vídeo (0xB8000).
  • Lê inputs do teclado via interrupções da CPU (funções get_char() e get_string()).
  • Implementa um jogo interativo simples (uma versão do jogo "Termo") dentro do kernel, sem depender de funções da stdlib ou stdio da linguagem C.
  • Evita o uso da biblioteca padrão (std) para permitir execução freestanding em ambiente bare-metal.

O projeto é composto por três partes principais:

  1. Bootloader (bootloader.asm)

    • É responsável por inicializar o sistema, carregar o kernel na memória e entrar em protected mode.
  2. Kernel Entry (kernel_entry.asm)

    • Configura a GDT (Global Descriptor Table) e realiza o jump para o kernel em C.
    • Implementa o stack em memória alta (0x9FC00) e mantém o processador em loop após execução do kernel.
  3. Kernel (kernel.c)

    • Contém a função kernel_main() que inicia o jogo.

    • Possui funções auxiliares para:

      • Exibição de texto (putchar, print_string, printk).
      • Entrada de dados (get_char, get_string).
      • Comparação e manipulação de strings (strcmp, strcpy, strlen).
    • Implementa a lógica do jogo "Termo", incluindo verificação de letras corretas e posicionamento.


Link para o vídeo

Meu vídeo


Estrutura de Arquivos

/projeto
├── bootloader.asm      # Código do bootloader em Assembly
├── kernel_entry.asm    # Inicialização do kernel, entrada em protected mode
├── kernel.c            # Kernel em C com o jogo Termo
└── README.md           # Este arquivo

Como Compilar e Rodar

1. Requisitos

  • Linux (Ubuntu/Debian recomendado)
  • NASM (≥ 2.14)
  • GCC com suporte a -m32 (gcc-multilib)
  • LD (linker para ELF 32-bit)
  • QEMU para emulação x86

Instalação das ferramentas necessárias:

sudo apt update
sudo apt install nasm gcc-multilib qemu-system-x86

2. Compilação

2.1 Compile o bootloader e kernel_entry

nasm -f bin bootloader.asm -o bootloader.bin
nasm -f elf32 kernel_entry.asm -o kernel_entry.o

2.2 Compile o kernel em C

gcc -m32 -ffreestanding -c kernel.c -o kernel.o

2.3 Linkar o kernel

ld -m elf_i386 -Ttext 0x10000 kernel_entry.o kernel.o -o kernel.bin

2.4 Criar a imagem final

cat bootloader.bin kernel.bin > os-image.bin

3. Executar no QEMU

qemu-system-i386 -fda os-image.bin
  • A tela do QEMU exibirá as mensagens do kernel e iniciará o jogo.
  • Você poderá digitar as palavras diretamente no teclado do emulador.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages