"30 jours Système d'exploitation fait maison" (écrit par Hikaru Kawasaki) Adaptation du code de support. Étant donné que l'auteur a utilisé un ensemble d'outils non standard qu'il a écrit lui-même et n'a pas pu fonctionner sur une plate-forme non Windows, ce projet utilise le NASM, le GCC, le Qemu et d'autres outils pour compiler et exécuter en fonction du code d'origine.
Ce projet a achevé le contenu du 0e au 28e jour (à l'exclusion de la partie d'affichage japonaise le 28e jour), et la principale mise en œuvre du projet a été achevée. Parce que le contenu des deux derniers chapitres du livre est plus orienté vers l'application, il n'est pas mis en œuvre dans ce projet. Les amis intéressés peuvent continuer à le terminer en fonction de la base précédente.
nasmgccbinutilsqemu-system-i386mtoolsgdb (utilisation de débogage)Les outils de ligne de commande xcode par défaut utilisent GCC comme alias pour Clang sous macOS. Clang n'a pas été testé dans cette mise en œuvre du projet, et il peut y avoir des problèmes.
Il est recommandé d'utiliser x86_64-elf-gcc pour la compilation sous Mac. Vous pouvez utiliser brew install x86_64-elf-gcc x86_64-elf-binutils x86_64-elf-gdb à installer.
Entrez le dossier correspondant et exécutez avec la commande suivante:
$ make qemu
# 若使用工具链包含前缀,如x86_64-elf-,可以使用GCCPREFIX
$ make qemu GCCPREFIX=x86_64-elf- Pour déboguer à l'aide de GDB, définissez DEBUG :
$ make qemu DEBUG=1app : code source d'applicationinclude : fichier d'en-tête du noyau systèmekernel : code du noyau systèmelibc : Implémentation partielle de la bibliothèque standard simple C Simple C strcmpstrncmpReportez-vous à la mise en œuvre de XV6:
vsprintfsprintfDe "CHANGEMENT C" C ":
randCe projet ne continuera pas à ajouter du contenu des jours 29 et du jour 30. Les amis intéressés peuvent continuer à lire les chapitres suivants.
io_sti au lieu de io_stihlt __alloca n'est pas valide au jour 28, sosu2 ne peut pas fonctionner Le droit d'auteur du code dans le projet appartient principalement à l'auteur d'origine. Je ne fais que des modifications partielles du code pour la pièce qui ne peut pas être directement exécutée.