Difference between revisions of "Kernel code/ru"
Jump to navigation
Jump to search
Line 75: | Line 75: | ||
==== diff16 ==== | ==== diff16 ==== | ||
− | : | + | : Макрос, который вычисляет разность между вторым и первым аргументом и выводит ее на консоль в 16ичной системе счисления во время ассемблирования fasm'ом |
+ | : Первый аргумент - строка с сообщением | ||
+ | : Пример: | ||
+ | : diff16 "cur_saved_data (data32.inc) ", 0, $ | ||
+ | : cur_saved_data rb 4096 | ||
+ | : Во время ассемблирования данного участка кода, fasm выведет "cur_saved_data (data32.inc) 0xЧИСЛО", где 0xЧИСЛО будет адресом cur_saved_data | ||
==== diff10 ==== | ==== diff10 ==== | ||
− | : | + | : Аналог diff16, только в 10ичной системе. |
==== dbgstr ==== | ==== dbgstr ==== | ||
: Вывод строки на доску отладки. | : Вывод строки на доску отладки. | ||
Макросы для работы со связными списками: | Макросы для работы со связными списками: | ||
− | ==== | + | ==== list_init_head ==== |
+ | : Создание списка | ||
==== __list_add ==== | ==== __list_add ==== | ||
− | : | + | : Добавление в список (внутреннее использование) |
==== list_add ==== | ==== list_add ==== | ||
+ | : Вставка в начало списка | ||
==== list_add_tail ==== | ==== list_add_tail ==== | ||
+ | : Вставка в конец списка | ||
==== list_del ==== | ==== list_del ==== | ||
+ | : Удаление из списка | ||
---- | ---- | ||
Revision as of 12:01, 14 May 2021
Ветка trunk ядра KolibriOS. Путеводитель-справочник по исходному коду.
/
Файл init.inc
Содержит функции, необходимые для инициализации системы.
mem_test
- Тестирование памяти. Если bios имеет функцию 0xE820, то тестирование не производится и происходит выход из функции.
init_mem
- Инициализация системной таблицы страниц
init_page_map
- TODO
init_BIOS32
- TODO
test_cpu
- Получение информации о процессоре.
acpi_locate
- Поиск поиск структуры RSDP (Root System Description Pointer) которая используется в ACPI.
- Функция возвращает указатель на RSDP в регистре eax.
rsdt_find
- В ecx принимает адрес RSDT, в edx сигнатуру таблицы, которую нужно найти (например ACPI_FADT_SIGN)
- В eax возвращает адрес требуемой таблицы
check_acpi
- TODO
init_hpet
- Инициализация HPET (High Perfomance Event Timer)
Файл kernel32.inc
- Этот файл не содержит реализаций и является по сути заголовочным
- Здесь содержатся инклуды .inc файлов почти всех подсистем ядра
Файл proc32.inc
- Содержит макросы для определения и вызова процедур:
stdcall proc
- Directly call STDCALL procedure
invoke proc
- Indirectly call STDCALL procedure
ccall proc
- Directly call CDECL procedure
invoke proc
- Indirectly call CDECL procedure
proc
- ...
Файл macros.inc
- Содержит разные полезные макросы, в том числе для работы со связными списками
$Revision
- Клиент svn при работе с репозиторием после ключевого слова $Revision: подставляет текущую ревизию файла.
В macros.inc из исходников ядра, подключающемся первым, определён макрос fasm'а $Revision, который вычисляет максимум из всех мест, где он встретился (то есть во всех файлах, прямо или косвенно подключаемым к kernel.asm), каковой максимум и является номером самой свежей ревизии ядра (не драйверов).
В конце kernel.asm он присваивается переменной __REV__, ну а boot/bootstr.inc включает значение __REV__ в начальную выводимую строку.
diff16
- Макрос, который вычисляет разность между вторым и первым аргументом и выводит ее на консоль в 16ичной системе счисления во время ассемблирования fasm'ом
- Первый аргумент - строка с сообщением
- Пример:
- diff16 "cur_saved_data (data32.inc) ", 0, $
- cur_saved_data rb 4096
- Во время ассемблирования данного участка кода, fasm выведет "cur_saved_data (data32.inc) 0xЧИСЛО", где 0xЧИСЛО будет адресом cur_saved_data
diff10
- Аналог diff16, только в 10ичной системе.
dbgstr
- Вывод строки на доску отладки.
Макросы для работы со связными списками:
list_init_head
- Создание списка
__list_add
- Добавление в список (внутреннее использование)
list_add
- Вставка в начало списка
list_add_tail
- Вставка в конец списка
list_del
- Удаление из списка
Файл struct.inc
- Содержит макросы для объявления структур и работы с ними
struct
- Макрос для объявления структур
detect/
...