Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

компиляция программ на c++

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Новенький
Гость





СообщениеДобавлено: Ср Фев 11 2004 13:47    Заголовок сообщения: компиляция программ на c++ Ответить с цитатой

Добрый день!

начал изучать c++...
до этого немного писал на ассемблере...

асм копилировал и линковал при помощи TASM...
c++ сейчас компилирую и линкую при помощи Borland C++ Command Line Compiler или Borland C++ Builder...

так вот когда я писал на асме, то все проги получались маленькими по весу, даже меньше чем исходный код, счет шел буквально по байтам...

сейчас же создавая на c++, программы весят просто дико много...
например простая прога Hello World! на асме весит около 20 байт!
а на c++ если компилить через Borland C++ Builder получается 10 кило байт, а если через Borland C++ Command Line Compiler то вообще 120 кило байт...

как это понять, тупая прога вывода фразы на экран на c++ весит как гигантская прога написанная чисто на асме...

может я чего не так делаю?
Вернуться к началу
grayrat



Зарегистрирован: 30.06.2003
Сообщения: 189

СообщениеДобавлено: Ср Фев 11 2004 15:56    Заголовок сообщения: всё правильно Ответить с цитатой

Знаешь анекдот про программиста который ставит рядом с кроватью полную кружку если захочется пить и пустую если нет ? Это как раз на эту тему.

Каомпиляторы с языков высокого уровня помимо твоего собственного кода кладут в экзешник загрузчик (как я понял ты делал на асме com файлы, а там загрузчик не нужен т.к. всё помещается в один сегмент 64к, значит файл меньше чем exe) , инициализацию переменных, проверку на Windows (открой в нортоне через F3 любой виндовский экзешник и увидишь там: This program must be run under Win32) и прочую лабуду на все случаи жизни. Windows это как ни как ещё и графический интерфейс, поэтому размер файла возрастает значительно. Ещё учти что по умолчанию в экзешник включена отладочная информация, что позволяет связать код с исходным текстом что учень удобно для дебага. Если её отключить то размер упадёт раза в 3.

Чтобы оценить размер ТВОЕГО кода, сранивай размер экзешника твоей программы с размером экзешника пустой программы:
void main() {}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Новенький
Гость





СообщениеДобавлено: Ср Фев 11 2004 16:52    Заголовок сообщения: ... Ответить с цитатой

да я то все это понимаюSmile
но блин такой обьем, никогда бы не подумал...
а все таки почему тогда еще такая разница между 2 компиляторами, один выдает 120 килобайт, а другой всего 10 килобайт? все таки разница в 12 разSmile

кстати все что я говорю, это все только про консольные приложения!

и еще ну совсем тупой вопросSmile
на асме все возможно, захотел это, захотел то - видеорежимы, мышка и т.д. - всем можно управлять на самом низком уровне...
а вот на c++ это вообще возможно без асм вставок?
а то я так посмотрел, чего-то этого нигде нетSmile
а в чем тогда фишка то...

наверное дурацкий вопросSmile
Вернуться к началу
Naima



Зарегистрирован: 13.01.2004
Сообщения: 41
Откуда: Kiev

СообщениеДобавлено: Ср Фев 11 2004 18:40    Заголовок сообщения: Ответить с цитатой

вопрос совсем не тупой ! а очень даже дельный ... "обьектов специализированных на мышках" на с++ (то что под ДОСом) вроде как нет. Я когдато писал масенький модуль для поддержки мышки, так лепил вставки на ASM. Вернее мне показали на практическом примере как сделать. Если шибко хочешь - давай мыло - покажу Smile

А что касается размеров исполняемых модулей, то при компиляции под винду подключается масса всякой левой хренотени ! почему левой ? - а потому что в твоей программе по логике она совсем может быть и не нужна. короче как говорил GRAYRAT что там Win32 и тд, подключается куча своих модулей, они автоматически включаются в код , а значит размер растёт .
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Фев 11 2004 19:24    Заголовок сообщения: Ответить с цитатой

Можно сделать через регистры.

union REGS regs;

int msinit(int Xlo, int Xhi, int Ylo, int Yhi)//Инициализируем мышь
{int retcode;
regs.x.ax = 0;
int86(51, &regs, &regs);
retcode = regs.x.ax;
if (retcode == 0) return 0;
regs.x.ax = 7; regs.x.cx = Xlo; regs.x.dx = Xhi;
int86(51, &regs, &regs);
regs.x.ax = 8; regs.x.cx = Ylo; regs.x.dx = Yhi;
int86(51, &regs, &regs);
return retcode;
}


void msget(int *pX, int *pY, int *pbuttons)//Операции с мышью
{regs.x.ax = 3;
int86(51, &regs, &regs);
*pX = regs.x.cx; *pY = regs.x.dx;
*pbuttons = regs.x.bx;
}


int msread(int *pX, int *pY, int *pbuttons)//Операции с мышью
{static int X0=-1, Y0=-1, but0=-1;
do
{if (kbhit()) return getch();
msget(pX, pY, pbuttons);
}while (*pX == X0 && *pY == Y0 && *pbuttons == but0);
X0 = *pX; Y0 = *pY; but0 = *pbuttons;
return -1;
}

Хотя по своей внутренней реализации - очень похоже на обычный ассеблерский прием. (читай о int86 в хелпе)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
X-M@n
Гость





СообщениеДобавлено: Ср Фев 11 2004 20:44    Заголовок сообщения: Re Ответить с цитатой

http://www.uinc.ru/articles/28/index.shtml
Вернуться к началу
Новенький
Гость





СообщениеДобавлено: Чт Фев 12 2004 11:22    Заголовок сообщения: спасибо! Ответить с цитатой

Всем спасибо за ответы! очень нужная инфа!

2Naima:
да, если можно кинь плиз кодик, а то я тут начал делать асм вставки, да чего то они не работаютSmile чего то я видимо не так компилирую что лиSmile мыло: godfather@yandex.ru

а вообще c++ меня затягивать сильно начал, книжку аж перед сном читаю, да и асм тут тоже можно использовать!Smile
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...