Masm32 и Delphi - битва за размер... |

19.09.2007, 13:28
|
|
Познающий
Регистрация: 05.06.2007
Сообщений: 50
С нами:
9964628
Репутация:
259
|
|
Masm32 и Delphi - битва за размер...
Часто говорят о потребностях в оптимизации проекта с целью уменьшения размера программы... Delphi является аутсайдером по этому показателю среди основных языков для разработки системных приложений... Действительно у ламеров есть очень сильный (как им кажется) аргумент - Делфи создаёт пустой проект весом почти 400 кб)).. Напротив асемблер считается передовиком направления создания компактных приложений и по мнению ламеров разница в размерах огромна по сравнению с делфи... Да это так.. но всё же давайте попробуем написать программу хеллоу ворлд... выводящую просто окошко с заголовком Hallo и строкой Hallo World!!! напишим мы эти проги на Delphi и Asm... и посмотрим какая будет разница в размере...
Asm:
Код:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
MsgCaption db "Hello World!!!",0
MsgBoxText db "Hello",0
.code
start:
invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
invoke ExitProcess,NULL
end start
Компиляция:
из MASM32 + окороченный стаб весом 64 байта..
Сохраняем код и кидаем его в файл: asm.asm...
Создаём ВАТ-ник с текстом:
Код:
@ml /c /coff /nologo asm.asm
@Link /ALIGN:4 /FORCE:UNRESOLVED /SUBSYSTEM:WINDOWS /MERGE:.data=.text /MERGE:.rdata=.text /stub:stub.bin asm.obj
Имеем ехе-шник весом 624 байта... Нормально... Теперь давай тоже самое на делфи...
DeLpHi:
Код:
unit H;
interface
Procedure Start;
implementation
function MessageBoxA(hWnd: cardinal; lpText, lpCaption: PChar; uType: Cardinal): Integer; stdcall; external 'user32.dll' name '_MessageBoxA@16';
Procedure Start;
begin
MessageBoxA(0,'Hello World!!!','Hello',0);
end;
end.
Компиляция:
dcc32.exe (от делфи3), Link.ExE, MSPDB50.DLL,(SYSINIT.DCU,SYSTEM.DCU - c урезанным RTL),USER32.LIB.....+ стаб 64 байт. Сохраняем код в файл: pas.pas... Создаем ВАТ-ник c текстом:
Код:
@dcc32.exe -JP pas.pas
@link.exe /ALIGN:4 /FORCE:UNRESOLVED /SUBSYSTEM:WINDOWS /MERGE:.data=.text /MERGE:.rdata=.text /ENTRY:Start$qqrv /STUB:stub.bin user32.lib pas.obj
Кидаем в одну папку получаем размер ехе - 668 байта...
Итог: ни вижу ни малейшего повода поводя считать делфи громозким языком))))
ПС: Большая просьба не искать аналогий со статьёй МС-РЕМа из августского номера 2005г Хакера... Там размер 832 байта... Статья не опирается на ту... просто действительно это апсолютно очевидный хеллоу ворлд, главная цель моего исследования получить минимальный вес прог на делфи...
Последний раз редактировалось execom; 19.09.2007 в 13:39..
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Глоссарий криптографии
|
Liar |
Windows |
11 |
10.09.2007 23:15 |
|
Pandora Delphi Pack v1.3
|
PandoraBox |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
0 |
30.07.2007 23:26 |
|
Создание простейшего калькулятора (на Delphi) - проблема с полем ввода
|
ozhjog |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
22 |
31.05.2007 17:39 |
|
БИТВА ТИТАНОВ!!!
|
DRON-ANARCHY |
Болталка |
28 |
07.09.2005 11:10 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|