"Sistema operativo casero de 30 días" (escrito por Hikaru Kawasaki) Adaptación del código de apoyo. Debido a que el autor usó un conjunto de herramientas no estándar que él mismo escribió y no pudo ejecutarse en una plataforma no Windows, este proyecto usa NASM, GCC, QEMU y otras herramientas para compilar y ejecutar según el código original.
Este proyecto ha completado el contenido del día 0 al 28 (excluyendo la parte de exhibición japonesa en el día 28), y la implementación principal del proyecto se ha completado. Debido a que el contenido de los últimos dos capítulos del libro está más orientado a las aplicaciones, no se implementa en este proyecto. Los amigos interesados pueden continuar completándolo en función de la base anterior.
nasmgccbinutilsqemu-system-i386mtoolsgdb (uso de depuración)Las herramientas de línea de comandos XCode predeterminadas usan GCC como alias para Clang en MacOS. Clang no ha sido probado en este proyecto implementación, y puede haber problemas.
Se recomienda usar x86_64-elf-gcc para la compilación en Mac. Puede usar brew install x86_64-elf-gcc x86_64-elf-binutils x86_64-elf-gdb para instalar.
Ingrese la carpeta correspondiente y ejecute con el siguiente comando:
$ make qemu
# 若使用工具链包含前缀,如x86_64-elf-,可以使用GCCPREFIX
$ make qemu GCCPREFIX=x86_64-elf- Para depurar usando GDB, establezca DEBUG :
$ make qemu DEBUG=1app : código fuente de la aplicacióninclude : archivo de encabezado del kernel del sistemakernel : Código del núcleo del sistemalibc : implementación parcial de la biblioteca estándar C simple C C strcmpstrncmpConsulte la implementación de XV6:
vsprintfsprintfDel "lenguaje de programación c":
randEste proyecto no continuará agregando contenido desde el día 29 y el día 30. Los amigos interesados pueden continuar leyendo los capítulos posteriores.
io_sti en lugar de io_stihlt __alloca no es válida en el día 28, sosu2 no puede correr Los derechos de autor del código en el proyecto pertenecen principalmente al autor original. Solo hago modificaciones parciales al código para la parte que no se puede ejecutar directamente.