Я работаю над небольшим загрузчиком для обучения. Существует ли какая-либо спецификация/информация о размере (бесплатном) стека, который требуется для вызова прерывания BIOS?Размер стека, необходимый для вызова прерывания BIOS
ответ
От http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf («Соглашения о вызовах» на стр. 3), похоже, что вызов BIOS может использовать до 1024 байтов пространства стека. Мой googling не обнаружил никаких других источников.
перед вводом обработчика прерываний все регистры помещаются в стек вместе с адресом с большим возвратом, суммируют размеры регистров и добавляют пространство, необходимое для хранения обратного адреса, чтобы получить минимальный размер стека.
принять к сведению, что вам нужно больше места, если Вы выдвигаете больше данных в стек, а в обработчик прерываний
Я заметил, что если вы используете int 0x13 вы должны иметь стек, который по меньшей мере, 4096 байт. Современные BIOS часто имеют совместимый с AHCI обработчик int 0x13, и поскольку AHCI довольно сложный, BIOS int 0x13 требует много пространства стека.
В идеальном мире BIOS должен иметь свой собственный стек, но многие BIOS полагаются на стек, который вы предоставляете.
Простой ответ заключается в том, что стек, используемый BIOS для выполнения вызовов прерывания (включая int 13h для загрузки загрузочного сектора с флэш-накопителя usb) до загрузки загрузочного сектора, достаточен для использования загрузочного сектора.
Счастливое ответ, что прерывания BIOS (для новой раздутой PCI кроме) предназначены для выполнения в минимальном пространстве, так что нет необходимости в установке стека в загрузочном секторе.
- 1. Что означает «вызов прерывания BIOS»
- 2. BIOS Прерывания в защищенном режиме
- 3. C++: вызов BIOS прерывания 0x21
- 4. Максимальный размер стека, необходимый для программы C на MSP430
- 5. Как читать вторую дискету с BIOS прерывания
- 6. Минимальный размер стека для вызова клонирования Linux?
- 7. Прерывания BIOS и DOS (16H и 21H)
- 8. Расчет головки, цилиндра (трека) и сектора для прерывания BIOS 13h
- 9. Как я могу назвать прерывания BIOS
- 10. Прерывания Bios всегда сидят на баране?
- 11. Рассчитать необходимый размер для TLabel
- 12. Основная концепция стека и прерывания
- 13. Возможность прерывания асинхронного вызова
- 14. Код Perl, необходимый для прерывания цикла при нажатии клавиши
- 15. Рекурсивный размер стека
- 16. Как обрабатывать клавиатуру в реальном режиме через прерывания BIOS?
- 17. Необходимый метод для вызова при изменении атрибута
- 18. размер стека для звонка goroutine
- 19. Установите размер стека для SBT
- 20. Получение карты памяти с использованием прерывания BIOS 0x15 Функция 0xE820
- 21. Ошибка диска при попытке чтения диска с BIOS прерывания
- 22. MongoDB измеряет необходимый размер диска
- 23. Javascript стека максимального вызова
- 24. Функция вызова и прерывания другой
- 25. Проверка прерывания вызова - Android Lollipop
- 26. Как компилятор определяет необходимый размер стека для функции с генерируемыми временными циклами компилятора?
- 27. прерывания Ajax вызова на событие
- 28. Node.js - Максимальный размер стека вызова превышен, даже с process.nextTick()
- 29. Получение прерывания ловушки 6 после вызова malloc()
- 30. Получение "RangeError: Максимальный размер стека вызова превышена" ошибка