Run with OpenDialog

Your KolibriOS applications go here
  • Pathoswithin, а что это ещё за

    Code: Select all

    data_:
    http://websvn.kolibrios.org/filedetails ... 5#line-579
    Мог бы и в example.asm посмотреть, если не знаешь

    Code: Select all

    ; I_END     - End of compiled image    
    http://websvn.kolibrios.org/filedetails ... 4#line-142
  • http://wiki.kolibrios.org/wiki/Writing_ ... The_header
    This is the total size of the program code in bytes, its easy to use a label which you place at the end of the code.
    А по факту не понятно, зачем этот параметр вообще нужен - он не используется.
  • >> wiki
    >> актуальная информация
    ну-ну
  • зачем этот параметр вообще нужен - он не используется
    А зачем же ты тогда его изменил-то :lol:
  • Pathoswithin wrote:http://wiki.kolibrios.org/wiki/Writing_ ... The_header
    This is the total size of the program code in bytes, its easy to use a label which you place at the end of the code.
    А по факту не понятно, зачем этот параметр вообще нужен - он не используется.
    Используется. Когда я неверно его (или м.б. соседний в заголовке) выставил - КОС отказалась запускать прогу с диагнозом "not an executable"

    А вообще, теоретически нужно разделять код и данные для защиты кода от несанкционированного изменения.

    Если я правильно подозреваю, в коде OD ошибка - program.end должно указывать как минимум за концом статических данных, т.е что грузить из файла в память ?!
  • Siemargl wrote: в коде OD ошибка - program.end должно указывать как минимум за концом статических данных, т.е что грузить из файла в память ?!
    Ну вот оно у меня так и было. Пока кое-то не решил, что он самый "умный" :lol:
  • Факт: программа работает. Посмотрел в kernel/core/taskman.inc - не используется.
  • Pathoswithin wrote:Факт: программа работает. Посмотрел в kernel/core/taskman.inc - не используется.
    Ну работать она может и по ошибке)

    Если смотрел загрузчик, можешь пояснить, почему 1 и не 2. Т.е как именно проверяется заголовок и что грузится в память.
    Мне это нужно на предмет в перспективе подлинкованных к программам ресурсов.
    1>Когда я неверно его (или м.б. соседний в заголовке) выставил - КОС отказалась запускать прогу с диагнозом "not an executable"

    2>Если я правильно подозреваю, в коде OD ошибка - program.end должно указывать как минимум за концом статических данных, т.е что грузить из файла в память ?!
  • 0CodErr
    Программа работает и это главное.
    Знаешь как сделать более правильно - правь код.
    Last edited by Leency on Fri Nov 11, 2016 3:50 pm, edited 1 time in total.
    Из хаоса в космос
  • Siemargl
    Сейчас вместо этого параметра просто размер самого файла, потому я и не понял его значения. А вот если следующий параметр (количество памяти) будет меньше размера файла, тогда ошибка.
  • Siemargl wrote:Используется. Когда я неверно его (или м.б. соседний в заголовке) выставил - КОС отказалась запускать прогу с диагнозом "not an executable"
    Не используется. Там есть проверка от diamond'а 10-летней давности

    Code: Select all

    ; \begin{diamond}[20.08.2006]
    ; sanity check (functions 19,58 load app_i_end bytes and that must
    ; fit in allocated memory to prevent kernel faults)
            cmp     edx, [APP_HEADER_01.i_end]
            jb      .fail
    ; \end{diamond}[20.08.2006]
    
    - в edx в этот момент равен mem_size - но это всё. Видимо, все остальные использования отмерли вместе с функциями 19 и 58.
    Siemargl wrote:А вообще, теоретически нужно разделять код и данные для защиты кода от несанкционированного изменения.
    Ядерный PE-загрузчик честно устанавливает права доступа к памяти по атрибутам секций. Отключаемо, естественно, - fasm по умолчанию создаёт одну секцию readable+writable+executable, с которой можно делать что угодно.
    Сделаем мир лучше!
  • Who is online

    Users browsing this forum: No registered users and 1 guest