Поле i_end в EXE-заголовке
Posted: Mon Jan 16, 2006 5:38 pm
В заголовке MENUET-программ есть не совсем понятное поле i_end. Что оно означает? В большинстве программ оно равно длине файла; с другой стороны, длину файла можно определить и независимо. Кроме того, есть прекрасно работающие программы, у которых это поле больше размера файла, а у eyes это поле даже меньше размера файла.
Я смотрел исходники ядра на эту тему. Функция разбора заголовка заносит значение этого поля в глобальную переменную [app_i_end]. При запуске приложения с ramdisk'а (fn 19) эта переменная вообще игнорируется и считывается файл целиком. При запуске через fn 58 считывается
min(filesize, ALIGN_UP(app_i_end,PAGE_SIZE)) байт, что не очень проясняет ситуацию.
Что все-таки это поле означает и для чего оно нужно?
Я смотрел исходники ядра на эту тему. Функция разбора заголовка заносит значение этого поля в глобальную переменную [app_i_end]. При запуске приложения с ramdisk'а (fn 19) эта переменная вообще игнорируется и считывается файл целиком. При запуске через fn 58 считывается
min(filesize, ALIGN_UP(app_i_end,PAGE_SIZE)) байт, что не очень проясняет ситуацию.
Что все-таки это поле означает и для чего оно нужно?