Чим

Чи можна у 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. При запуску все одно формат вінда перевіряє та стартує його належним чином.