"Sistema operacional caseiro de 30 dias" (escrito por Hikaru Kawasaki) de apoio à adaptação do código. Como o autor usou um conjunto de ferramentas não padrão que ele escreveu e não conseguiu executar em uma plataforma que não seja de janelas, este projeto usa NASM, GCC, QEMU e outras ferramentas para compilar e executar com base no código original.
Este projeto concluiu o conteúdo do dia 0 a 28 (excluindo a peça de exibição japonesa no 28º dia) e a principal implementação do projeto foi concluída. Como o conteúdo dos dois últimos capítulos do livro é mais orientado para os aplicativos, ele não é implementado neste projeto. Amigos interessados podem continuar a concluí -lo com base na base anterior.
nasmgccbinutilsqemu-system-i386mtoolsgdb (uso de depuração)As ferramentas padrão da linha de comando Xcode usam o GCC como um alias para Clang no MacOS. Clang não foi testado nesta implementação do projeto e pode haver problemas.
Recomenda-se usar x86_64-elf-gcc para compilação no MAC. Você pode usar brew install x86_64-elf-gcc x86_64-elf-binutils x86_64-elf-gdb para instalar.
Digite a pasta correspondente e corra com o seguinte comando:
$ make qemu
# 若使用工具链包含前缀,如x86_64-elf-,可以使用GCCPREFIX
$ make qemu GCCPREFIX=x86_64-elf- Para depurar usando o GDB, set DEBUG :
$ make qemu DEBUG=1app : Código fonte do aplicativoinclude : arquivo de cabeçalho do kernel do sistemakernel : código do kernel do sistemalibc : implementação parcial da biblioteca padrão c simples strcmpstrncmpConsulte a implementação XV6:
vsprintfsprintfDe "C Linguagem de Programação":
randEste projeto não continuará adicionando conteúdo desde o dia 29 e o dia 30. Amigos interessados podem continuar lendo os capítulos subsequentes.
io_sti em vez de io_stihlt __alloca é inválida no dia 28, sosu2 não pode correr Os direitos autorais do código no projeto pertencem principalmente ao autor original. Eu só faço modificações parciais no código da peça que não pode ser executada diretamente.