Предлагаю в этой теме обсуждать вопросы, связанные с рефакторингом ядра.
Начну пожалуй с вопроса удаления mem_start из структур APPDATA и TASKDATA. Если я правильно понял, это какой то рудимент. Значение mem_start всегда равно 0, по этому я считаю что его можно удалить.
Патч:
Рефакторинг ядра
-
- Attachments
-
-
rm_mem_start.diff (2.39 KiB)Downloaded 171 times
-
Изобретайте колёса каждый раз, когда хотите написать новую программу.
LGTM
Устаревшая структура TASKDATA полностью заменена структурой APPDATA в ревизии #9709.
Doczom
А какой PROFIT был от данного изменения? Размеры, скорость, надежность?
А какой PROFIT был от данного изменения? Размеры, скорость, надежность?
Отличная работа! Патч с удалением APPDATA.mem_start я так понимаю тоже был применён.
Изобретайте колёса каждый раз, когда хотите написать новую программу.
Удалено поле APPDATA.mem_start введу его бесполезности в ревизии #9710.
sober_dev
Удаление этой структуры было необходимо для обеспечения целостности данных потоков и уменьшения расходов(хоть и минимальных) при переключение потока выполнения в планировщике. Кроме этого избавление от этой структуры упростило некоторые другие части ядра(например основной цикл ос). Если есть возражения по поводу удаления этой структуры то говорите.
Удаление этой структуры было необходимо для обеспечения целостности данных потоков и уменьшения расходов(хоть и минимальных) при переключение потока выполнения в планировщике. Кроме этого избавление от этой структуры упростило некоторые другие части ядра(например основной цикл ос). Если есть возражения по поводу удаления этой структуры то говорите.
Doczom
Возражений нет.
Возражений нет.
Предлагаю добавить в 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]
Изобретайте колёса каждый раз, когда хотите написать новую программу.
в данном случае константы нужны чтобы код стал более читаемым чтобы указать зачем нужно умножение и при этом не писать комментарий такой же длины что и сама стока.
Уже давно стоит на повестке дня читаемость ядра поскольку некоторые места слабо документированы и по смещениям не всегда всё поймёш ведь там магические цыфры откуда и по чему непонятно.
И я считаю что это необходимо и по сути на результат компилирования не влияет.
Уже давно стоит на повестке дня читаемость ядра поскольку некоторые места слабо документированы и по смещениям не всегда всё поймёш ведь там магические цыфры откуда и по чему непонятно.
И я считаю что это необходимо и по сути на результат компилирования не влияет.
А что там в целом происходит об этом как и прежде будут знать только посвященные?Vaicheslav97 wrote:в данном случае константы нужны чтобы код стал более читаемым чтобы указать зачем нужно умножение и при этом не писать комментарий такой же длины что и сама стока.
Уже давно стоит на повестке дня читаемость ядра поскольку некоторые места слабо документированы и по смещениям не всегда всё поймёш ведь там магические цыфры откуда и по чему непонятно.
И я считаю что это необходимо и по сути на результат компилирования не влияет.
Нам бы сперва просто почистить и документировать его а добавление такой константы как способ писать дальше код который более понятен.
аргументы индексации памяти [reg*4 + offset]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]
являются базовыми конструктами ассемблера х86.
шкала индексации *4, *8 и т.д. намертво прошита в железо и в кодировку инструкций.
если лично тебе стандартый синтаксис ассемблера кажется неудобочитаемым
- тогда лучше не лезь в асм-программирование,
работай на перле или в плюсах
Last edited by art_zh on Sat Feb 26, 2022 12:21 pm, edited 1 time in total.
Евангелие от Иоанна: стих 1[/size]
Code: Select all
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os
Who is online
Users browsing this forum: No registered users and 1 guest