Привет всем, этот учебник предназначен для обновленного расширения существующих учебных пособий, которые больше фокусируются на 64-разрядной архитектуре x86_64. Это не предназначено для введения в C или сборку, поэтому вы можете сначала изучить их в другом месте. Мы сделали все возможное, чтобы правильно документировать все, поэтому, если есть что -то, что вы не понимаете, вам, возможно, придется вернуть несколько глав.
Это еще не завершено, но это дошло до того, что мы чувствовали, что это может быть полезно.
Этот урок предназначен для людей, которые имеют общее понимание C и сборки, но не обязательно являются компьютерными экспертами. Он предназначен для того, чтобы быть максимально доступным, так что он может почувствовать, как мы переоцениваем некоторые концепции (и это нормально). Однако, если вы обнаружите, что безнадежно проиграли , дайте нам знать. Мы создали этот проект, потому что нам не понравилось привратник, который можно увидеть в разработке ОС, и мы будем рады внести поправки в наши объяснения или указать вам на другой ресурс, который может быть более полезным.
Если вы хотите внести свой вклад в этот проект или добавить что -то собственное, отправьте запрос на вытяжение. Я постараюсь добраться до них как можно скорее :)
В этом учебнике используется компилятор LLVM, в том числе clang и ld.lld . Если у вас нет установленных, вам нужно это сделать и добавить их на свой путь. Мы также используем nasm для нашего ассемблера и qemu-system-x86_64 в качестве нашего эмулятора. Необязательно, gdb может использоваться для отладки кода ядра. Хотя это не требуется, этот урок использует сценарии Shell для облегчения строительства и отладки. Мы настоятельно рекомендуем, чтобы у вас был установлен bash AT /bin/bash (или, по крайней мере, сочувствует там). Если нет, вы можете запустить сценарии, используя команду bash .
Вы должны быть в состоянии запустить все вышеперечисленные команды в окне терминала, не указав полный путь. Если вы не можете, вам, вероятно, нужно их установить и добавить на свой путь. Этот урок был протестирован на MacOS (Catalina и Big Sur), а также в Ubuntu (20.04). Никакие другие операционные системы не поддерживаются официально, хотя они должны работать нормально на большинстве *Nix Machines.
Примечание: MacOS
gdbиспытывает трудности с символами отладки из ядра (ELF64). Возможно, вам потребуется изменить уровень вывода отладки на -Glldb в Makefiles и вместо этого использовать его или создать новыйgdbиз источника.
Вот и все! Нет необходимости устанавливать какие -либо кросскомпилеры или другие инструменты, поскольку Clang уже покрыта большей частью. Удачи, и если у вас есть проблемы, не стесняйтесь сообщить нам об этом!