2010-01-20 3 views

ответ

0

От http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf («Соглашения о вызовах» на стр. 3), похоже, что вызов BIOS может использовать до 1024 байтов пространства стека. Мой googling не обнаружил никаких других источников.

1

перед вводом обработчика прерываний все регистры помещаются в стек вместе с адресом с большим возвратом, суммируют размеры регистров и добавляют пространство, необходимое для хранения обратного адреса, чтобы получить минимальный размер стека.

принять к сведению, что вам нужно больше места, если Вы выдвигаете больше данных в стек, а в обработчик прерываний

0

Я заметил, что если вы используете int 0x13 вы должны иметь стек, который по меньшей мере, 4096 байт. Современные BIOS часто имеют совместимый с AHCI обработчик int 0x13, и поскольку AHCI довольно сложный, BIOS int 0x13 требует много пространства стека.

В идеальном мире BIOS должен иметь свой собственный стек, но многие BIOS полагаются на стек, который вы предоставляете.

0

Простой ответ заключается в том, что стек, используемый BIOS для выполнения вызовов прерывания (включая int 13h для загрузки загрузочного сектора с флэш-накопителя usb) до загрузки загрузочного сектора, достаточен для использования загрузочного сектора.

Счастливое ответ, что прерывания BIOS (для новой раздутой PCI кроме) предназначены для выполнения в минимальном пространстве, так что нет необходимости в установке стека в загрузочном секторе.

Смежные вопросы