Я не новичок в загрузчике и системном ПО, но я не знаю причины, по которой общая программа запускается в 0x8000
.Я уже знаю, что адрес 0x8000
использовался в качестве начального адреса в обычной программе C / C ++.
Минимальный размер загрузчика для обычной программы составляет до 0x8000
?Или минимальный размер блока ПЗУ, который должен быть выделен для загрузчика 32 КБ?Или есть другая причина?
Я хотел бы знать об этом, исторически или логически, и с точки зрения виртуального адреса.
Я ценю все, ваше время ипомогите с этим.Чтобы прояснить вопрос, вопрос связан с виртуальным адресом, а не с физическим.
Я в основном согласен с мнением Р. с точки зрения адреса физической памяти.
Не говоря уже о конкретной системе, котораяРазнообразные, например, Linux (даже в Android), общая ОСРВ (ядро и другие, особенно раздел компоновщика ARM), все они используют адрес 0x8000 в качестве начальной программы общей программы.такие области, как crt_begin.o, crt.o и т. д., расположенные в 0x0 с загрузчиком, существуют в этой области.
Поэтому я предполагаю, что минимальный размер загрузчика для обычной программы составляет 32 КБ, учитывая размер блока, если он будет расположенв BootROM во время загрузки (холодная загрузка).
Ммм, но я не уверен ...