Page 1 of 3

Рефакторинг ядра

Posted: Mon Feb 07, 2022 5:04 pm
by turbocat
Предлагаю в этой теме обсуждать вопросы, связанные с рефакторингом ядра.
Начну пожалуй с вопроса удаления mem_start из структур APPDATA и TASKDATA. Если я правильно понял, это какой то рудимент. Значение mem_start всегда равно 0, по этому я считаю что его можно удалить.
Патч:

Re: Рефакторинг ядра

Posted: Mon Feb 07, 2022 5:56 pm
by dunkaist
LGTM

Re: Рефакторинг ядра

Posted: Wed Feb 09, 2022 8:31 pm
by Doczom
Устаревшая структура TASKDATA полностью заменена структурой APPDATA в ревизии #9709.

Re: Рефакторинг ядра

Posted: Wed Feb 09, 2022 9:03 pm
by sober_dev
Doczom
А какой PROFIT был от данного изменения? Размеры, скорость, надежность?

Re: Рефакторинг ядра

Posted: Wed Feb 09, 2022 9:17 pm
by dunkaist

Re: Рефакторинг ядра

Posted: Wed Feb 09, 2022 9:29 pm
by turbocat
Отличная работа! Патч с удалением APPDATA.mem_start я так понимаю тоже был применён.

Re: Рефакторинг ядра

Posted: Wed Feb 09, 2022 9:32 pm
by Doczom
Удалено поле APPDATA.mem_start введу его бесполезности в ревизии #9710.

Re: Рефакторинг ядра

Posted: Fri Feb 18, 2022 9:13 pm
by Doczom
sober_dev
Удаление этой структуры было необходимо для обеспечения целостности данных потоков и уменьшения расходов(хоть и минимальных) при переключение потока выполнения в планировщике. Кроме этого избавление от этой структуры упростило некоторые другие части ядра(например основной цикл ос). Если есть возражения по поводу удаления этой структуры то говорите.

Re: Рефакторинг ядра

Posted: Sat Feb 19, 2022 12:13 am
by sober_dev
Doczom
Возражений нет.

Re: Рефакторинг ядра

Posted: Thu Feb 24, 2022 12:26 am
by turbocat
Предлагаю добавить в const.inc следующие константы.

Code: Select all

sizeof.byte  = 1
sizeof.word  = 2
sizeof.dword = 4
sizeof.qword = 8
И использовать их в качестве замены например в таких местах:

Code: Select all

-        jmp     dword [sys_posix_call + ebx*4]
+        jmp     dword [sys_posix_call + ebx * sizeof.dword]

Re: Рефакторинг ядра

Posted: Thu Feb 24, 2022 3:17 am
by sober_dev

Re: Рефакторинг ядра

Posted: Thu Feb 24, 2022 10:50 am
by Vaicheslav97
в данном случае константы нужны чтобы код стал более читаемым чтобы указать зачем нужно умножение и при этом не писать комментарий такой же длины что и сама стока.
Уже давно стоит на повестке дня читаемость ядра поскольку некоторые места слабо документированы и по смещениям не всегда всё поймёш ведь там магические цыфры откуда и по чему непонятно.
И я считаю что это необходимо и по сути на результат компилирования не влияет.

Re: Рефакторинг ядра

Posted: Thu Feb 24, 2022 8:06 pm
by z525
Vaicheslav97 wrote:в данном случае константы нужны чтобы код стал более читаемым чтобы указать зачем нужно умножение и при этом не писать комментарий такой же длины что и сама стока.
Уже давно стоит на повестке дня читаемость ядра поскольку некоторые места слабо документированы и по смещениям не всегда всё поймёш ведь там магические цыфры откуда и по чему непонятно.
И я считаю что это необходимо и по сути на результат компилирования не влияет.
А что там в целом происходит об этом как и прежде будут знать только посвященные?

Re: Рефакторинг ядра

Posted: Thu Feb 24, 2022 8:16 pm
by Vaicheslav97
Нам бы сперва просто почистить и документировать его а добавление такой константы как способ писать дальше код который более понятен.

Re: Рефакторинг ядра

Posted: Sat Feb 26, 2022 11:31 am
by art_zh
turbocat wrote:Предлагаю добавить в const.inc следующие константы.

Code: Select all

sizeof.byte  = 1
sizeof.word  = 2
sizeof.dword = 4
sizeof.qword = 8
И использовать их в качестве замены например в таких местах:

Code: Select all

-        jmp     dword [sys_posix_call + ebx*4]
+        jmp     dword [sys_posix_call + ebx * sizeof.dword]
аргументы индексации памяти [reg*4 + offset]
являются базовыми конструктами ассемблера х86.
шкала индексации *4, *8 и т.д. намертво прошита в железо и в кодировку инструкций.

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