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

Internal structure and you change requests/suggestions
  • LGTM
  • Устаревшая структура TASKDATA полностью заменена структурой APPDATA в ревизии #9709.
  • Doczom
    А какой 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:в данном случае константы нужны чтобы код стал более читаемым чтобы указать зачем нужно умножение и при этом не писать комментарий такой же длины что и сама стока.
    Уже давно стоит на повестке дня читаемость ядра поскольку некоторые места слабо документированы и по смещениям не всегда всё поймёш ведь там магические цыфры откуда и по чему непонятно.
    И я считаю что это необходимо и по сути на результат компилирования не влияет.
    А что там в целом происходит об этом как и прежде будут знать только посвященные?
  • Нам бы сперва просто почистить и документировать его а добавление такой константы как способ писать дальше код который более понятен.
  • 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 и т.д. намертво прошита в железо и в кодировку инструкций.

    если лично тебе стандартый синтаксис ассемблера кажется неудобочитаемым
    - тогда лучше не лезь в асм-программирование,
    работай на перле или в плюсах
    Last edited by art_zh on Sat Feb 26, 2022 12:21 pm, edited 1 time in total.
    Евангелие от Иоанна: стих 1

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • Who is online

    Users browsing this forum: No registered users and 2 guests