"30 Tage hausgemachtes Betriebssystem" (geschrieben von Hikaru Kawasaki), um die Codeanpassung zu unterstützen. Da der Autor eine Reihe von nicht standardmäßigen Tools verwendete, die er selbst geschrieben hat und auf einer Nicht-Windows-Plattform nicht ausgeführt werden konnte, verwendet dieses Projekt NASM, GCC, QEMU und andere Tools, um basierend auf dem Originalcode zu kompilieren und auszuführen.
Dieses Projekt hat den Inhalt des 0. bis 28. Tags abgeschlossen (ohne den japanischen Display -Teil am 28. Tag), und die Hauptimplementierung des Projekts wurde abgeschlossen. Da der Inhalt der letzten beiden Kapitel des Buches anwendungsorientierter ist, wird er in diesem Projekt nicht implementiert. Interessierte Freunde können es weiterhin auf der vorherigen Basis vervollständigen.
nasmgccbinutilsqemu-system-i386mtoolsgdb (Debug -Verwendung)Die Standard -Befehlszeilen -Tools von Standard Xcode verwenden GCC als Alias für Clang unter MacOS. Clang wurde in dieser Projektimplementierung nicht getestet, und es kann Probleme geben.
Es wird empfohlen x86_64-elf-gcc Toolchain zur Kompilierung unter Mac zu verwenden. Sie können brew install x86_64-elf-gcc x86_64-elf-binutils x86_64-elf-gdb zu installieren.
Geben Sie den entsprechenden Ordner ein und führen Sie mit dem folgenden Befehl aus:
$ make qemu
# 若使用工具链包含前缀,如x86_64-elf-,可以使用GCCPREFIX
$ make qemu GCCPREFIX=x86_64-elf- Um mit GDB zu debuggen, setzen Sie DEBUG :
$ make qemu DEBUG=1app : Anwendungsquellcodeinclude : Systemkernel -Header -Datei einkernel : System Kernelcodelibc : Einfache C -Standardbibliothek Partielle Implementierung strcmpstrncmpSiehe XV6 -Implementierung:
vsprintfsprintfAus "C -Programmiersprache":
randDieses Projekt wird am 29. Tag und am 30. Tag nicht weiterhin Inhalte hinzufügen. Interessierte Freunde können weiterhin die folgenden Kapitel lesen.
io_sti anstelle von io_stihlt verwendet wird __alloca ist in Tag 28 ungültig, sosu2 kann nicht laufen Das Urheberrecht des Code im Projekt gehört hauptsächlich dem ursprünglichen Autor. Ich mache nur teilweise Änderungen am Code für den Teil, der nicht direkt ausgeführt werden kann.