(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

MASM32 и DELPHI - битва за размер…

Источник: pblog

Часто говорят о потребностях в оптимизации проекта с целью уменьшения размера программы… 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 "Hallo World!!!",0
MsgBoxText db "Hallo",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,'Hallo World!!!','Hallo',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

Кидаем в одну папку получаем размер ехе - 672 байта…

Итог: ни вижу ни малейшего повода поводя считать делфи громозким языком))))

Коментарии на тему что это из журнала хакер не принимаются… В статье МС-РЕМа размер 832 байта… И вообще РЕМ не первый писал об этом ведь не он написал компилятор делфи и линкер))… Да цель статьи получить минимум на делфи… с чем в общем-то и справились…

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 08.07.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Enterprise Connectors (1 Year term)
Delphi Professional Named User
Quest Software. Toad for SQL Server Development Suite
SAP® Crystal Presentation Design 2016 WIN INTL NUL
SAP® Crystal Reports 2016 WIN INTL NUL
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Вопросы и ответы по MS SQL Server
Windows и Office: новости и советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100