HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра

Masm32 и Delphi - битва за размер...
  #1  
Старый 19.09.2007, 13:28
execom
Познающий
Регистрация: 05.06.2007
Сообщений: 50
С нами: 9964628

Репутация: 259
Lightbulb 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..
 

  #2  
Старый 19.09.2007, 13:34
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
С нами: 9894190

Репутация: 215
По умолчанию

Это все очевидно. На делфи просто неудобно, потому что это плохой язык.
 

  #3  
Старый 19.09.2007, 13:37
execom
Познающий
Регистрация: 05.06.2007
Сообщений: 50
С нами: 9964628

Репутация: 259
По умолчанию

Цитата:
Это все очевидно. На делфи просто неудобно, потому что это плохой язык.
Делфи это язык на основе паскаль, а он считается наиболее удобным и доступным... и вообще неудобно спать на потолке... а на счёт очевидности... я такого размера хелоу ворлда на делфи в сети не видел....
 

  #4  
Старый 19.09.2007, 13:47
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
С нами: 9894190

Репутация: 215
По умолчанию

Все описанное документировано, а тот кто собирает программу так или иначе с этой документацией столкнется, т.к. он просто обязан знать что и как умеет делать линкер и компилятор. Вообщем "статья" ни о чем.
Делфи/пасаль - очень неудобные языки. Кроме того, в отличие, например, от С, при написании программы в некоторых местах будет затруднительно сходу представить себе то, как это будет смотреться в машинных командах, а на С практически всегда это очевидно и дает волю программисту самому оптимизировать свой код по размеру или по скорости. Говорят, для обучения всякой простенькой алгоритмизации (циклы/условные переходы/структуры всякие вроде деревьев - вобщем основ программирования) паскаль - самое то. Ну разве что так, и то. Мне так не кажется например.

Последний раз редактировалось DWORD; 19.09.2007 в 13:53..
 

  #5  
Старый 19.09.2007, 14:01
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами: 10531106

Репутация: 1338


По умолчанию

execom Тут ещё дело в оптимизации кода, кодогенератор у делфи не очень! Поэтому когда начнешь писать, даже и на чистом winAPI, то все равно бинарник очень поползет вверх, попробуй пример с более обширным кодом
Как всегда вечный спор. Все хорошо для своих целей. Делфи для одного, асм для другого!

// P.S. ASM - это для понта больше! А так оптимально Си. Си - хороший язык
 

  #6  
Старый 19.09.2007, 15:40
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

Автор, ну ктоже так сравнивает? Причем тут язык? Начнем с того, что дельфи как язык не виноват в размере, виноват убогий компилятор у которого качество кодогенерации, как говорили выше, оставляет желать лучшего. Несмотря на то, что я не люблю дельфи, нельзя путать разные вещи.
 

  #7  
Старый 19.09.2007, 20:56
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

Цитата:
потому что это плохой язык.
Цитата:
а он считается наиболее удобным и доступным...
ахуенная аргументация, смотрю...
кто будет срать в теме подобным тоном - буду по -10 ставить ))
 

  #8  
Старый 19.09.2007, 21:00
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
С нами: 10346786

Репутация: 925


По умолчанию

эээээээээ,не дЭлфи негоните я писал на нем проги в 460 байт!

Да кстати combat или как там тебя execom ,личирить стотьи вобще нехорошо,нечего нового не увидел,я тоже пользуюсь подобным методом но я ни читал никаких статей от мс рема я все познал сам,для меня полезность статьи = 0.

Последний раз редактировалось zl0y; 19.09.2007 в 21:03..
 

  #9  
Старый 19.09.2007, 21:20
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

Цитата:
эээээээээ,не дЭлфи негоните я писал на нем проги в 460 байт!
Ну сколько раз говорить, причем тут сам язык? Говорить, что один язык лучше другово из-за размера выходного файла некорректно, так как вина здесь не языка, а компилятора. Все что вы этим добъетесь - это очередной холивар среди людей, которые вообще не сообржают по теме. Еще надо заметить, что кроме борландского компилятора дельфи на рынке нет вообще ничего насколько я знаю.
 

  #10  
Старый 19.09.2007, 21:25
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
С нами: 9894190

Репутация: 215
По умолчанию

Цитата:
Еще надо заметить, что кроме борландского компилятора дельфи на рынке нет вообще ничего насколько я знаю.
Именно поэтому в данном случае рассуждать о делфи как едином целом язык-ide-компилятор-линкер допустимо. Хотя я вообще не считаю что компактность кода есть какой-то аргумент. Производительность кода - аргумент. Компактный код нужен вредителям. Пускай пишут свои погани на ассемблере.
 
Закрытая тема



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глоссарий криптографии 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...