Чим
Чи можна у Delphi зробити *.com?
Так я й думав, що перша відповідь буде такою.
формат com це образ програми, пам'яті формат exe можеш подивитися на http://wasm.ru, відшукай статтю
А можна у Delphi зробити *.com?
Виконувані файли com-формату можуть містити лише одну секцію розміром до 64 Кб і мають відмінний від PE-формату заголовок. AFAIK.
com під Win32 – це взагалі нонсенс. Але навіть на TurboPascal для DOS таке було не зробити. Пригадую, що це, здається, було з розміщенням коду та даних у різних сегментах. І, треба сказати, не така вже ця неможливість і заважала. Умільці робили в EXE-форматі надмініатюрні TSR і навіть драйвери для config.sys.
com під Win32 – це взагалі нонсенс. Але навіть на TurboPascal для DOS таке було не зробити. Пригадую, що це, здається, було з розміщенням коду та даних у різних сегментах. І, треба сказати, не така вже ця неможливість і заважала. Умільці робили в EXE-форматі надмініатюрні TSR і навіть драйвери для config.sys.
перше весь "com" розташовується весь(повинен) в одному сегменті, на відміну від "exe". і друге першою командою в ньому завжди йде ORG 100H (зсув на розмір заголовка. це в asm. команда в машинну не транслюється)
на мою все, більше принципових відмінностей немає;). і навіть як один сегмент не заважав робити "com"-и більше 64kb, т.к. це тільки при старті es,ds,cs,ss отримували одне значення, нічого після не заважало змінити їх і наприклад призначити ds(дані) за кордон 64kb (а завантажувався файл на згадку повністю завжди) і "побачити" приписані понад 64kb дані.
> Я так розумію, чи можна прописати дії будь-якої складності, > чи ні?Людина - не може. Машина може, для того й вигадані компілятори.
Якщо ти справді "старий", то вже принаймні "не один такий". Нас тут багато! :-) А в іншому ти маєш рацію. TP версій 3.х і самі працювали в моделі 64К та компілювали програми саме в ній. Починаючи з версії ТР 4.0 і сам ТурбоПаскаль та програми скомпільовані в ньому перейшли на "EXE-формат". Але, імхо, утилітою EXE2BIN можна було перетворити далеко не будь-який файл.
До речі, з подивом щойно виявив, що утиліта exe2bin входить у дистрибутив WinXP :^)
> Чи можна в Delphi зробити *.com? Можна. Створити EXE і перейменувати COM. При запуску все одно формат вінда перевіряє та стартує його належним чином.