«30 -дневная домашняя операционная система» (написано Хикару Кавасаки), поддерживающая адаптацию кода. Поскольку автор использовал набор нестандартных инструментов, которые он сам написал и не мог работать на платформе, не являющихся Windows, в этом проекте используются NASM, GCC, QEMU и другие инструменты для компиляции и запуска на основе исходного кода.
Этот проект завершил содержимое 0 -го по 28 -й день (за исключением японской демонстрации на 28 -й день), и основная реализация проекта была завершена. Поскольку содержание последних двух глав книги более ориентировано на приложения, оно не реализовано в этом проекте. Заинтересованные друзья могут продолжать завершать его на основе предыдущей основы.
nasmgccbinutilsqemu-system-i386mtoolsgdb (использование отладки)Инструменты командной строки XCODE по умолчанию используют GCC в качестве псевдонима для Clang под MacOS. Clang не был проверен в этой реализации проекта, и могут возникнуть проблемы.
Рекомендуется использовать инструмент x86_64-elf-gcc для компиляции под Mac. Вы можете использовать brew install x86_64-elf-gcc x86_64-elf-binutils x86_64-elf-gdb для установки.
Введите соответствующую папку и запустите следующую команду:
$ make qemu
# 若使用工具链包含前缀,如x86_64-elf-,可以使用GCCPREFIX
$ make qemu GCCPREFIX=x86_64-elf- Чтобы отлаживать с помощью GDB, установить DEBUG :
$ make qemu DEBUG=1app : исходный код приложенияinclude : файл заголовка системы системного ядраkernel : код ядра системыlibc : Простая стандартная библиотека частичная реализация strcmpstrncmpОбратитесь к реализации XV6:
vsprintfsprintfИз "C -языка программирования":
randЭтот проект не будет продолжать добавлять контент с 29 и 30 -й день. Заинтересованные друзья могут продолжать читать последующие главы.
io_sti вместо io_stihlt __alloca недействительна в 28 -й день, sosu2 не может работать Авторское право кода в проекте в основном принадлежит первоначальному автору. Я вношу лишь частичные изменения в код для той части, которая не может быть напрямую запускать.