Поле i_end в EXE-заголовке

Internal structure and you change requests/suggestions
  • Насколько я помню, поле это оставлено для совместимости (видимо, когда-то оно было нужно). Сейчас от него толку нет.
  • Я считаю, что i_end означает сколько байтов должен загрузить загрузчик. Но он может загрузить больше. В соотвествии с этим я и писал процедуры запуска процесса.
    Не очень понял, почему ты считаешь, что 19 функция считывает файл целиком. Она сводится к new_start_application_fl как и 58 функция.
  • halyavin
    Посмотри в core\newproce.inc: там есть три очень похожие, но различные процедуры new_start_application_fl,new_start_application_floppy,new_start_application_hd, причем единственное концептуальное различие (как мне кажется) в том, какую функцию они вызывают для чтения файла: есть три различные процедуры fileread,floppy_fileread и еще какая-то для жесткого диска. При этом код проверки условия конца чтения слегка различается в разных версиях. Посмотри также fs\fs.inc - обработчик 58-й функции: в зависимости от того, передали ему что-нибудь типа /rd/1/*, /floppy/1/*, /hd/1/* он вызывает различные процедуры new_start_application_*
  • diamond
    Хех парень да ты понимаешь, кому ты это рассказываешь? :-)
    Да он же сам эти процедуры писал, когда внедрял менеджер памяти в ядро.
    А я его пытал... ;-)
  • Черт, действительно весь файл целиком считывается. Надо будет поправить как-нибудь...
  • Who is online

    Users browsing this forum: No registered users and 17 guests