>Это как а где исполняемый код хранится на время исполнения или я Код BIOS находится в (Flash) ROM и при включении питания начинает оттуда выполняться.Ртфм про то как стартует x86.Если интересны подробности - топаете на сайт интеля или амд и там находите ответы на все подобные вопросы.Чесслово, даташиты у них весьма детально разжевывают как и что.
>чего-то недопонимаю?
Определенно.Представьте себе - вы включили питание.В оперативке при этом пусто (или мусор).А то она и вовсе процу без инициализации недоступна или не может достоверно читаться\писаться с дефолтными настройками.
На ранней фазе старта ROM BIOS вообще может не иметь доступа к оперативке пока не инициализироваy чипсет и т.п. корректно и кроме того, до того как RAM юзать - надо ее протестировать на сбойность(обычно традиционные биосы типа аварда или ами проверяют сперва небольшой кусок куда потом декомпрессуют основную часть а потом отрисовав POST скрин уже тестят RAM дальше и прочая).Посему до некоторого момента BIOS не может юзать RAM вообще и вынужден юзать сугубо регистры CPU.Кстати да, даже это обычно не так просто.Потому что проц тоже может быть сбойный и регистры тоже по идее надо проверить до их юзания.В итоге у биосов начальная последовательность стартовых команд как правило весьма хитрож*пая и что называется, carefully crafted.Видимо упомянутый компилер способен сгенерить подобный код на сях.Обычно GCC и прочие компилеры предполагают что RAM-есть.И при загрузке программы скажем инициализируют переменные и т.п..И разумеется что-то из этого неизбежно будет в RAM(технически, эту инициализацию делает стартап код но видимо только правкой стартапа достигнуть нужных результатов проблематично).