Page 4 of 5

Posted: Wed Sep 27, 2006 4:06 pm
by Serge
bambus
Если есть желание написать мессенджер, то лучше сразу писать на С. сэкономишь кучу времени. На асме лучше писать низкоуровневые функции, которые можно вставить в ядро.

Posted: Wed Sep 27, 2006 4:18 pm
by andrew_programmer
Если где-то нужно использовать :mmx,sse,3dNOW ,то без ассемблера тут не обойтись.
Или если необходимо оптимизировать код по скорости,то нужно снова использовать ассемблер.

C можно использовать только для организации логики программы,а скоростные части нужно писать на Ассемблере.
Если программа не критична к скорости,то можно её писать и на C(как миранду).

Posted: Wed Sep 27, 2006 4:52 pm
by Veliant
Идея портирования ICQ в meos у меня витала уже давно, но я не знаю как работать с сетью(( На тему создания клона аськи нашел несколько тем, в том числе "ICQ2000 сделай сам" на Delphi.... Если кого заинтерисует, то они лежат тут:
http://delphiworld.narod.ru/base/icq2000_1.html - http://delphiworld.narod.ru/base/icq2000_10.html

В них разобраны пакеты аси

Posted: Wed Sep 27, 2006 7:11 pm
by Serge
andrew_programmer
Хорошие компиляторы Си делаю очень хорошо оптимизированный код. MSVC оптимизирует mmx и sse лучше чем получается вручную. Я это выяснил когда компилировал библиотеку fftw.
А время разработки на Си на много меньше.

Posted: Wed Sep 27, 2006 9:38 pm
by andrew_programmer
Незнаю как MSVC,но GCC действительно выдаёт хорошо оптимизированный код(в большинстве случаев).Но это GCC,а не простенький metcc,который не производит даже элементарной оптимизации типа:

mov ecx,0

а правильнее и быстрее будет
xor ecx,ecx
(и дело совсем не в флагах).

И еще одно ВАЖНЕЙШЕЕ замечание.

Когда алгоритм пишет человек,то он использует все регистры.А как изестно регистровая память самая быстрая.Компилятор C хоть и подменяет некоторые переменные регистрами,но он не использует все регистры и не может организовать использование регистров самым оптимальным образом(это под силу только человеку).
В этом я убедился,когда сравнил скорость рисования геометрических примитивов в C и скорость рисования ЭТИМ ЖЕ алгоритмом,но после МАКСИМАЛЬНОЙ оптимизации на ассемблере(подмена переменных регистрами).

Если бы компиляторы C выдавали такой же быстрый код,как и код написанный профессиональным ассемблерщиком,то неимелобы смысла создавать Колибри - ведь есть Линукс.


А что касается разработки,так для меня не составляет оссобой трудности думать на ассемблере.Да и разрабатывю я на нём довольно быстро.

P.S.
Я согласен,что ИНОГДА код,выдаваемый сишным компилятором очень оптимален,но это бывает только иногда.
А в Ассемблере - ВСЕГДА(если пишет опытный ассемблерщик).
Да и мусора в ассемблерном коде нет.

Это не пустое утверждение.Сравните скорость работы Колибри со скорость ОС написанных на С и поймётё,что я прав.

Posted: Wed Sep 27, 2006 10:33 pm
by vectoroc
Если бы компиляторы C выдавали такой же быстрый код,как и код написанный профессиональным ассемблерщиком,то неимелобы смысла создавать Колибри - ведь есть Линукс.
Мечты, мечты.. Иногда они сбываются ;)
Компилятор C хоть и подменяет некоторые переменные регистрами,но он не использует все регистры и не может организовать использование регистров самым оптимальным образом(это под силу только человеку).
Интересно было бы попробовать оптимизацию такого рода сообразить :)
Для таких целей вроде и есть асм вставки

Да, и MSVC имхо компактнее код даёт.

Posted: Wed Sep 27, 2006 10:55 pm
by Serge
andrew_programmer
В этом я убедился,когда сравнил скорость рисования геометрических примитивов в C и скорость рисования ЭТИМ ЖЕ алгоритмом,но после МАКСИМАЛЬНОЙ оптимизации на ассемблере(подмена переменных регистрами).
Конечно качество оптимизации зависит от алгоритма и от того как он реализован. Часто небольшие участки кода человек может написать лучше, но не всегда. В плеере есть функция test_wave() разбирающая заголовок wav файла и переводящая его в константу PCM_каналы_разрядность_частота. asm версия содержала кучу ветвлений. В Си версии компилятор сумел заменить часть ветвлений логическими и арифметическими операциями, я не разбирал детально как она теперь работает, но она работает быстрее. Если бы она вызывалась в цикле миллион раз разница была бы весьма заметна.
Если говорить об оптимизации ещё, то в коммерческом программировании важнее время разработки программы, возможность портирования и модифицирования кода, чем скорость его работы. Тот же mp3 плеер я сделал за три дня от поисков подходящего декодера до первого проигранного файла. Ещё три дня я исправлял странную ошибку. Всего разработка заняла меньше недели. Win прототип заработал через два часа. Asm плеер собирались сделать ещё год назад и наверное делают до сих пор. Отсутствие достаточного числа различных программ - главный тормоз в развитии системы.
И ещё.
Сравнивать Колибри с "тяжёлыми" системами некорректно. Многопользовательское многопроцессорное ядро с виртуальной памятью, и кучей сервисов не помещается на дискету. Стоило бы сравнить с QNX демо дискетой, к сожалению они её убрали.

Posted: Thu Sep 28, 2006 12:46 pm
by Ghost
Если желаете портировать аську, то я думаю лучше начать с CenterICQ http://thekonst.net/centericq, особенно первой версии, там минимум сорцов, что ускоряет их понимание.
Описание протокола можно взять в пакете micq или здесь : http://iam.gorodok.net/icq091.txt
По поводу компиляторов могу предложить Intel C Compliller, очень хорошая оптимизация, правда он платный...

Posted: Thu Sep 28, 2006 3:17 pm
by Heavyiron
Открою один секрет: Hex уже выходил в асю из колибри! За основу он взял ym из дистрибутива. Правда глючит это дело пока, да и сам Hex последний месяц пропал куда-то (заработался/заучился совсем).

Posted: Fri Jan 26, 2007 7:26 pm
by CEHO
Ребят, не парьтесь с протоколом аськи, все это уже сделано и делается... Главное что нужно сделать - jabber клиент, а с его протоколом можно выйти в другие(icq, msn, yahoo, mail agent)

Posted: Fri Jan 26, 2007 9:35 pm
by Serial
FAIM - Flat Assembler Instant Messenger
Многие инстант мессанджинговые пейджеры-монстры меряются всем, включая эквиваленты человеческих репродуктивных органов. Цвет, свет, размер, окрас, прочие прелести - вс¸ это вложено в основу для гордости у любого icq-клиента. И быть может этот клиент и не составит даже на гинетическом уровне конкуренцию монстрам, зато он реально маленький (~30кб) и с открытыми искодниками на ассемблере.

Скачать сам клиент + исходники можно тут: http://roticv.rantx.com/faim/download.html

Posted: Mon Jan 29, 2007 5:01 pm
by Wildwest
Serial, эта прога обсуждалась раньше. Проблема в строке import winsock,\
Прога заточена на использование виндового сетевого стека, а не нашего.

Posted: Tue Jun 12, 2007 1:07 am
by Gagarin
ЛЮДИ!!!!!!!!!!!
ЗАЧЕМ???
МЫ уходим от "ОКОН" icq создавалась для винды зачем нам копировать её+подключаться к её каналу???
Мне кажеться что будет лучьше если мы запустим свою программу для обмена сообщениями!
кто за?

Posted: Tue Jun 12, 2007 1:25 am
by Leency
Gagarin
Эхэхэ... Тут кто-то уже говорил: "Флаг в руки".

Posted: Tue Jun 12, 2007 1:30 am
by Gagarin
ну ты же сам понимаешь что одному это не осилить