Преимущество для выполнения этого, то, что возможно вытянуть только ответвление документов, если это - все, чем Вы интересуетесь. Как сказанный jrockway, можно сделать это использование другого репозитория и submoduling при необходимости, но с этой способностью создать 'явное' ответвление, у Вас есть опция не к.
Лично, я нахожусь все еще на заборе об этом. Я понимаю, почему это могло быть выгодно, но я не полностью убежден, что это - лучший способ пойти.
Из статьи по ссылке:
На практике MBR обычно содержит загрузчик, предназначенный для загрузки другого загрузчика, который находится в начале одного из разделов. Часто это очень простая программа, которая находит первый раздел, помеченный как активный, загружает его первый сектор в ОЗУ и начинает его выполнение. Поскольку по соглашению новый загрузчик также загружается по адресу 7C00h, старому загрузчику, возможно, потребуется перед этим полностью или частично переместить себя в другое место. Кроме того, ожидается, что ES: SI будет содержать адрес в ОЗУ таблицы разделов, а DL - номер загрузочного диска. Нарушение таких соглашений может сделать загрузчик несовместимым с другими загрузчиками.
Иногда загрузчик находится в ПЗУ, и его необходимо скопировать в ОЗУ в какой-то момент.
CookieOfFortune, по сути, верен (потому что он хотел переместить что-то на место, где был начальный загрузчик), но это было не для второго загрузчика, а для самого ядра.
Из его комментариев:
] Затем он загружает систему по адресу 0x10000, с помощью прерываний BIOS. После этого отключает все прерывания, перемещает система до 0x0000, изменяется на защищенный режим, и вызывает начало система. Тогда система должна Выполните повторную инициализацию защищенного режима в это собственные таблицы и включить прерывает по мере необходимости.
Он хочет, чтобы ядро располагалось по адресу 0x0000 ... 0xKERNEL_SIZE-1, однако начальный загрузчик в настоящее время находится на 0x7C00, поэтому, если размер ядра превышает ~ 32 КБ, он перезаписывает загрузчик при перемещении Это. Тот факт, что ядро находится по адресу 0x0000, также объясняет этот комментарий:
«ПРИМЕЧАНИЕ! В настоящее время система не более 8 * 65536 байт ».
Если бы он был длиннее 512 КБ, начиная с 0, это могло бы привести к попаданию в зарезервированную область адресного пространства x86.
Я считаю, что этот раздел кода содержит фактический переход в ядро
mov ax,#0x0001 | protected mode (PE) bit
lmsw ax | This is it!
jmpi 0,8 | jmp offset 0 of segment 8 (cs)