OSDev
http://osdev.su/

UEFI на ассемблере
http://osdev.su/viewtopic.php?f=6&t=791
Страница 2 из 2

Автор:  t0serg [ 11 окт 2013, 00:10 ]
Заголовок сообщения:  Re: UEFI на ассемблере

Пожалуй, пора поставить точку в этой теме.

Дисковые операции UEFI, как оказалось, обладают парой особенностей:
1. Адрес буфера в памяти и адрес строки имени файла усекается до 32 бит. Это тем более непонятно, что функции ввода и вывода на экран этим не страдают.
2. При обновлении файла с увеличением его размера наблюдается любопытный эффект: по смещению старого конца файла начинается повторная запись с начала буфера, в цикле. Единственный выход: указатель на начало, переписать старое содержимое, указатель на конец, записать остаток. Смешно, но работает железно.

Распределение памяти: первый гиг лучше не трогать - там таблицы UEFI, туда же грузятся драйверы, приложения (включая Ваше); первый мегабайт - святое, его даже UEFI стороной обходит; с начала четвёртого гигабайта - MMIO, середина - UEFI (16 Мб), конец - BIOS.

Для программирования под UEFI не нужны никакие монструозные тулкиты. Нужен любой компилятор Си или транслятор ассемблера x86-64. И всё. Берём флэшку с FAT32 (можно и с диска), неважно что там ещё. Кладём на неё файл /EFI/BOOT/BOOTx64.EFI. Перегружаемся.

Получаем псевдо-текстовой видеорежим 25x80, функции ввода/вывода - сплошной юникод, русские символы есть все. Функции - от ACPI до TCP/IP, работа с графикой, формы. Если Ваша ОС умеет больше, можно уйти в runtime, но вовсе не обязательно.

Надеюсь, эта информация кому-нибудь пригодится.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/