Vamos começar!
C linguagem e montagem x86
Obviamente, você só precisa de uma base de montagem simples. Quanto ao idioma C , você não precisa de muito conhecimento para entender o processo de arquivos de origem a arquivos executáveis.
Comandos básicos linux
Na compilação simples do kernel, usamos algumas ferramentas no linux , como nasm , e é claro que também existem no windows , incluindo gcc . Mas o processo de compilação é feito na máquina virtual linux .
Quais ferramentas vamos usar?
Notepad++ , sublime , etc., o bloco mais simples está ok.sublime em si pode ser exibida em forma 16 , e a máquina virtual também possui ferramentas para nos ajudar a analisar.linux Virtual Machine, estamos usando Ubuntu i386 aqui. Precisa instalar ferramentas nasm , vim , gcc , readelf , etc.Claro, você não precisa se preocupar. Ao usar essas ferramentas ou materiais, haverá hiperlinks no artigo, você pode baixar e revisá -lo. Ao mesmo tempo, também há muitas informações na Internet para você ler.
Qual é o resultado final?
Finalmente, é claro, não é um sistema operacional muito completo. Isso é mais como uma exploração de pesquisa e compreensão do OS , bem como a relação entre a linguagem C e a montagem e, finalmente, é uma compreensão de como o hardware e o software lidam com isso.
Em 7 partes, concluímos apenas a liga e a liga, carregando o setor de inicialização principal e, em seguida, carregamos mais informações na memória. Por fim, simplesmente implementamos a implementação do modo de proteção do modo real. Isso é tudo, mas o protótipo do sistema operacional é aproximadamente o mesmo.
Ao longo do processo, referenciamos alguns vídeos e livros eletrônicos
[1] "Sistema operacional caseiro 30 dias"
[2] "Implementação de um sistema operacional Oranges "
[3] 51CTO
etc.
A referência principal é o e-books [2] . O conteúdo em [1] é mais abrangente e o resultado final é mais completo.
Os arquivos e notas de origem são enviados para GitHub juntos. Se você tiver alguma dúvida, também pode entrar em contato comigo em [email protected] . Cada pasta é uma estrutura independente e os arquivos binários compilados não são carregados, mas o código -fonte e as ferramentas são carregados.