Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Кто такие асм-программеры?


Автор: mardok 12.7.2007, 20:03
     Сдал я курсач по асму и был рад как слон smile , но как понять людей занимающихся программированием на асме по своей же воле....по моему так лучше набить на Басике програмку с инклюдом Input32.dll и дело с концом....но нет же....народ не ищет лёгких путей...
     для меня это какой-то феномен....

Автор: JAPH 12.7.2007, 20:12
Мозахистов не существует smile
флейм?

Автор: W4FhLF 12.7.2007, 20:57
Цитата(Крис Касперски)

Компьютер уже давно перестал быть машиной для небольшой горстки Из-
бранных и с каждым днем он все стремительнее и стремительнее превра-
щается в пылесос. Современные программисты, абстрагировавшись от "железа"
и даже от самих вычислительных алгоритмов, видят перед собой мышь да визу-
альную панель с компонентами. Написать программу стало так же легко, как сварить
пакетный суп. Конечно, свои положительные моменты в этом есть, но… есть опре-
деленная категория людей, для которой жизнь – ни на секунду не прекращающий-
ся поиск и преодоление сложностей (ни слова про гамак и ласты!). Если задуматься:
какую практическую ценность несет в себе покорение горных вершин? Гораздо ком-
фортнее и с меньшим риском к ним можно добраться и на вертолете.
Увы! Чем легче достается, тем меньше удовлетворения оно приносит. Визу-
альное программирование слишком просто, чтобы быть по настоящему интерес
ным. С другой стороны, чем выше уровень языка, тем больше приходится соблю-
дать предписаний и тем меньше возможность для самовыражения. А Художники
отличаются от всех остальных тем, что в каждой работе передают свое видение ми-
ра, частицу своего "Я".
Интерес к ассемблеру, часто доходящий до фанатизма, как раз и объясняется
тем, что ассемблер – лучшее средство пощупать железо компьютера руками, это
превосходная арена для интеллектуальной борьбы, и, наконец, – великолепный
способ с пользой и интересом скоротать свободное от работы время.
Существует огромное множество ассемблерных головоломок – от "написать
программу на байт короче, чем у соседа", до "создать самообучающуюся шахмат-
ную игру, занимающую не более двух килобайт". На ассемблере пишутся многие
"демки", на нем же создаются "крякимы" (в дословном переводе "взломай меня")…
Никто не спорит, что все, перечисленное выше, можно реализовать и на языках вы-
сокого уровня, причем за несравнимо более короткое время при не сильно худшей
эффективности. Да! Можно! Но… неинтересно. Мы, комсомольцы, видите ли, без
ласт и гамака любить не можем…
Поэтому (и это очень важно!), если вы встретите человека, беззаветно предан-
ного ассемблеру и презирающего языки высокого уровня, не спешите ломать паль-
цы о клавиатуру, переубеждая его в обратном. Девять из десяти – ассемблер любит
он не за достоинства, а, напротив, за отсутствие таковых (если понимать под "до-
стоинствами" удобства цивилизации). Один из десяти – он просто выпендривается
и программирует на ассемблере, чтобы продемонстрировать окружающим свою
крутость. Тогда тем более не стоит его переубеждать – с возрастом само рассосется.

Автор: try_to_get 16.7.2007, 09:42
Спасибо, W4FhLF Классная цитата!

Автор: JackYF 16.7.2007, 12:55
mardok, для многих специализированных процессоров не существует компиляторов ЯВУ и можно писать только на ассемблере, их собственном.

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

Настоящие астматики (ассемблеристы) - это и мазохисты и гении одновременно.

Автор: try_to_get 16.7.2007, 20:44
JackYF  +(плюс)

Автор: setty 20.7.2007, 04:57
откуда берутся такие темы?

Автор: JackYF 20.7.2007, 05:49
Цитата(setty @  20.7.2007,  04:57 Найти цитируемый пост)
откуда берутся такие темы? 

люди создают.

Автор: morfus 8.8.2007, 06:02
Цитата
Настоящие астматики (ассемблеристы) - это и мазохисты и гении одновременно.

+1
Для примера я писал как-то код для Z80 так ни один компилятор не смог мне дать нужного быстродействия. (на таких процах каждый такт на вес золота)

Автор: somewhere 8.8.2007, 09:14
Цитата(morfus @  8.8.2007,  06:02 Найти цитируемый пост)
Для примера я писал как-то код для Z80 так ни один компилятор не смог мне дать нужного быстродействия. (на таких процах каждый такт на вес золота) 

Не только такт, но и байт. До сих пор не верю, что 13 лет назад писал по него в машинном коде smile

Автор: morfus 8.8.2007, 09:23
Я и сейчас иногда пишу, только раньше (в 89-93 годах) писал для дела, а теперь изредка для удовольствия... (в основном коротенькие "фишки" байт на 100-200)

Автор: leshiysoft 8.8.2007, 16:31
Цитата

Не только такт, но и байт. До сих пор не верю, что 13 лет назад писал по него в машинном коде 

Полностью согласен... Писать в машинном коде это и ужас и полет мысли одновременно. Сейчас правда пишу максимум на асме, но уж никак не в машинных кодах. (-:

Автор: try_to_get 8.8.2007, 18:44
Цитата

Полностью согласен... Писать в машинном коде это и ужас и полет мысли одновременно. Сейчас правда пишу максимум на асме, но уж никак не в машинных кодах. (-:


Ну... можно и попробовать  smile В жизни нужно все пробовать!!!

Автор: morfus 9.8.2007, 05:21
try_to_get, если решишься сначала попробуй что нибудь простенькое.
Я например когда начинал знакомство с машинными кодами на х86 то делал "slidesow" на загрузочной дискете.
Честно скажу, практического применения этой программе я не нашёл, а вот удовлетворение получил.

(сейчас даже не вспомню какой это год был, но явно более 15-ти лет назад, это была моя первая программа в кодах для x86 совместимых компах, до этого писал в основном для Z80)

Вся программа была в первом бут-секторе, она читала по 8 секторов в область экрана и ждала нажатия кнопки
(режим 320х200/4цвета а в соответствующих секторах были картинки) затем читала следующие 8 секторов...

Автор: try_to_get 9.8.2007, 09:55
morfus , прикольно!  smile 

Автор: somewhere 9.8.2007, 14:48
У меня в машинных кодах под Z80 был редактор растровых изображений с поддержкой анимации. Весил он около 6 кило. В машинных кодах это было ого-го. С учетом того, что видел только 20 байт (1 байт - одна строка, слева адрес, посредине содержимое) вычислять относительные переходы было самым тяжелым. Еще были наработки для записи и воспроизведения звука с магнитофона. Правда на оставшиеся в распоряжении 35К вмещалось всего 5-6 секунд звука. Но зато прикольно было что-то записать, а потом воспроизводить на внутреннем динамике шипящий и покореженный звук. Ведь где-то это все лежит на кассете, а может и выкинул давно - все равно от тех дней остались самые приятные воспоминания. Уже потом, когда появился у меня 486 DX4 100 с жестким на 425 (!) мегабайт я никак не мог понять ПОЧЕМУ свободно только 300. Что могло занять целых 125 с лишним МИЛЛИОНОВ байт. Привыкать к этому было тяжело, а к современным ОС на 6 гигов еще тяжелее... :-(

Автор: morfus 10.8.2007, 07:52
Цитата
Еще были наработки для записи и воспроизведения звука с магнитофона.

Делал такое, потом с ужасом обнаружил что есть уже готовая прога 82-го года Speak Easy называется (занимает около 100 байт)

Цитата
Привыкать к этому было тяжело, а к современным ОС на 6 гигов еще тяжелее

Меня это не особо удивляет, скорее просто раздражает. ИМХО создатели современных ОС забыли что такое ОС и начали просто клепать DE (DesktopEnvironment) для "эникейщиков". Причём 99% кода написано на языках очень высокого уровня, что ставит крест даже на надежде получить хоть какое нибудь быстродействие.

Я не призываю писать ОС на асм, просто говорю что если так дело пойдёт дальше то в будующем ОС будут писать на JavaScript а для её запуска в оперативу будет загружаться 20-гиговый браузер, имхо всё к этому идёт.

Автор: somewhere 10.8.2007, 08:23
Цитата(morfus @  10.8.2007,  07:52 Найти цитируемый пост)
в будующем ОС будут писать на JavaScript а для её запуска в оперативу будет загружаться 20-гиговый браузер, имхо всё к этому идёт.

А так все хорошо начиналось. Кто-нить пробовал ставить 95 OSR2 на современный комп? Работает быстрее мысли... будем надеется, что технологии все же достигнут своего теоретического предела (на ЖД например нельзя записать больше бит, чем число молекул, из которого он состоит). Человеческая лень дошла даже до своего собственного творения - высоких технологий. Интересно, помимо разработчиков драйверов и моб. прошивок кто-нить еще пишет на асм? Молодое поколение знает вообще о нем?

Автор: W4FhLF 10.8.2007, 08:36
Цитата(morfus @  10.8.2007,  07:52 Найти цитируемый пост)
 Причём 99% кода написано на языках очень высокого уровня, что ставит крест даже на надежде получить хоть какое нибудь быстродействие.


Это ты про какую ОС говоришь и что значит "язык очень высокого уровня"? 

Автор: try_to_get 10.8.2007, 09:07
наверное он имел введу винду, а язык наверное обычный, слово очень добавил наверное от души?!  smile 

Автор: morfus 10.8.2007, 09:07
Цитата
кто-нить еще пишет на асм? Молодое поколение знает вообще о нем?

Молодое поколение ограничивается знанием того что он есть.

Автор: try_to_get 10.8.2007, 09:09
Мне как то интересно стало изучасть АСМ я почти понял как все работает  smile 

Автор: morfus 10.8.2007, 09:12
Цитата
слово очень добавил наверное от души

Ты прав, я часто приувеличиваю.

Говоря более разумным языком сейчас в винде очень много "избыточного кода" крутится вокруг каждого действия. Рано или поздно дойдёт до того что чтоб узнать размер файла на диске винда будет связываться со спутником а он будет сканировать ваш диск из космоса чтоб определить сколько занимает файл.

Но что-то мы в офтоп спустились, давайте ближе к асму вернёмся.

Автор: try_to_get 10.8.2007, 09:19
morfus   smile 

Автор: W4FhLF 10.8.2007, 09:40
Цитата(morfus @  10.8.2007,  07:52 Найти цитируемый пост)
Ты прав, я часто приувеличиваю.


От незнания или лишь бы сказануть? Скачай исходники и посмотри на чём написана Windows. 

Цитата(morfus @  10.8.2007,  07:52 Найти цитируемый пост)
Говоря более разумным языком сейчас в винде очень много "избыточного кода" крутится вокруг каждого действия.


Зато в DOS'e у нас не было "избыточного кода", как было здорово... Знаешь, я тоже могу кучу гадостей наговорить, обвинить в чём-то, но со стороны это смотрится как обычный трёп. 

Автор: somewhere 10.8.2007, 09:56
Так все же пытаясь подвести итог кто такие асматики... Когда у нас болят почки или сердце мы идем к врачу. Он выписывает нам лекарство, и если оно не помогает он говорит, что нужна операция. Но если хирург тоже ничем не может помочь - что тогда? А теперь представьте себе "лекаря", который вылечит вашу болезнь на молекулярном уровне, сам создаст все химические соединения, которые были утеряны или взаимодействуют не так.
Так вот, вся система - это организм. Доктор - это программист высокого уровня. Хирург - это WinAPI программист, "лекарь" - это программист на ассемблере, тот по вине которого собственно и произошло начало развития информационных систем. 

Автор: morfus 10.8.2007, 10:48
Цитата(W4FhLF @  10.8.2007,  09:40 Найти цитируемый пост)
Зато в DOS'e у нас не было "избыточного кода"

Был и не мало, однако скажите мне, почему перед тем как открыть папку и вывести мне список 3-х файлов их размер и дату  (что в DOS делается за сотую секунды даже на 286-м) я в Vista должен ждать пока он посчитает с помощью школьной линейки расстояние до марса, потом исходя из количества звёзд на небе определит настроение беременного волка в техасе, после чего выдаст мне простой список который ничем толком не отличается от того что в DOS ?

Цитата(W4FhLF @  10.8.2007,  09:40 Найти цитируемый пост)
Скачай исходники и посмотри на чём написана Windows.

Видел, (Win2000) написана в основном на С++ но front-end на VBScript т.е открыв окно винда сразу получает список файлов, а вы пол часа ждёте пока куча парсеров распарсит кучу файлов чтоб прочитать их

(в Win98 решили интегрировать WindowsExplorer в IE придумав девиз "интернет на рабочем столе", в XP пошли ещё дальше и 99% оформления винды перенесли на интероператоры того чтоб каждый ламер который знает основы бейсика мог писать скины для винды)

Цитата(W4FhLF @  10.8.2007,  09:40 Найти цитируемый пост)
или лишь бы сказануть?

А вы это лишь бы придраться ?

Автор: somewhere 10.8.2007, 11:02
Все это плавно переходит в другую тему. Можно добавить лишь одно...
Всем наверное известна "оптимизационная" лазейка при установке винды XP, когда давишь на F5 и сам выбираешь процессор, для которого нужно установить файлы ядра... При этом скорость работы действительно возрастает от 5 и выше процентов. Так значит могут хорошо писать. Так, чтобы быстро работало... Просто невыгодно это никому. Кто тогда купит Pentium Core2Duo если и на Pentium III у него все замечательно и быстро работает... Ежу понятно, что есть в мелкософте хорошие прораммеры, способные писать хорошо структурированный и быстрый код... Только дяде билли мало его миллиардов зелени... Прошу прощения за Off-topic

Автор: dumb 10.8.2007, 11:08
Цитата(somewhere @  10.8.2007,  09:56 Найти цитируемый пост)
представьте себе "лекаря"
беда в том, что многие "лекари" до сих пор пользуются "пусканием крови", и не обращают внимания на достижения тех.прогресса - такие как микророботы, прецизионные манипуляторы итд.

Цитата(morfus @  10.8.2007,  10:48 Найти цитируемый пост)
Видел, (Win2000) написана в основном на С++
плохо "видел": ++'ами там и не пахнет.

Цитата(morfus @  10.8.2007,  10:48 Найти цитируемый пост)
но front-end на VBScript
совсем плохо "видел". ерунду, мягко сказать, говоришь.

Цитата(somewhere @  10.8.2007,  11:02 Найти цитируемый пост)
Всем наверное известна "оптимизационная" лазейка при установке винды XP, когда давишь на F5 и сам выбираешь процессор, для которого нужно установить файлы ядра... При этом скорость работы действительно возрастает от 5 и выше процентов. Так значит могут хорошо писать. Так, чтобы быстро работало...
omg smile вы бы хоть попытались немного разобраться в о(б)суждаемом вами предмете...

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

Автор: try_to_get 10.8.2007, 11:09
Ну хватит, сейчас еще подеремся... 
 smile 

Автор: morfus 10.8.2007, 11:46
Цитата(somewhere @  10.8.2007,  11:02 Найти цитируемый пост)
Всем наверное известна "оптимизационная" лазейка

Мне известно что чуть ли не в прошлом веке один из сайтов запостил это на первое апреля (только написал не прирост 5% а то что будет летать даже на 386-м) видимо не все смотрели на календарь и приняли за чистую монету.

Автор: Lazin 10.8.2007, 12:04
asm используют в основном для контроллеров, и то лишь частично, так как С компиляторы генерят довольно качественный код. Для RISC процессоров довольно трудно кодить на асме, там компилятор соптимизирует лучше, представьте что у вас десятки регистров общего назначения, в которых могут оставаться промежуточные результаты вычислений.
Цитата

Был и не мало, однако скажите мне, почему перед тем как открыть папку и вывести мне список 3-х файлов их размер и дату  (что в DOS делается за сотую секунды даже на 286-м) я в Vista должен ждать пока он посчитает с помощью школьной линейки расстояние до марса, потом исходя из количества звёзд на небе определит настроение беременного волка в техасе, после чего выдаст мне простой список который ничем толком не отличается от того что в DOS ?

В висте выводятся не только атрибуты ф-а, а информация зависящая от типа файла - например тэги для mp3 разрешение для изображений и тд. И работает это довольно шустро. Не стоит так-же забывать что виста может в это время в фоне что-нибудь делать.

Автор: somewhere 10.8.2007, 12:20
Цитата(morfus @  10.8.2007,  11:46 Найти цитируемый пост)
Мне известно что чуть ли не в прошлом веке один из сайтов запостил это на первое апреля (только написал не прирост 5% а то что будет летать даже на 386-м) видимо не все смотрели на календарь и приняли за чистую монету. 

Не знаю, как в прошлом веке, но год назад лично ставил винду через F5 - освободилось 16 метров памяти + прирост скорости.
Цитата(Lazin @  10.8.2007,  12:04 Найти цитируемый пост)
В висте выводятся не только атрибуты ф-а, а информация зависящая от типа файла - например тэги для mp3 разрешение для изображений и тд. И работает это довольно шустро. Не стоит так-же забывать что виста может в это время в фоне что-нибудь делать. 

Не только в висте, но в XP то же самое. Только опрос около 500-сот песен занимает секунд 10. Много ли времени надо, чтобы прочитать с конца файла 288 байт тэга, даже с учетом Track-To-Track HDD около 50 мс. выходит просто запредельное время. Он там наверное интегралы считает, когда выводит длительность звучания песни?

Автор: morfus 10.8.2007, 12:51
Мдя, начали за здравие ....

Автор: try_to_get 10.8.2007, 14:59
Надо закрывать тему, срочно...

 smile  smile  smile 

T O P I C   I S   C L O S E D

Автор: mardok 10.8.2007, 20:19
ну что же....сделал я выводы: 
Асм-программеры - это психи, которых беспокоит нечто вроде "Слайдшоу на 4 цветах" или процессор Z80 (ходят слухи, что его юзали еще при царской России)  smile  

В общем я так предпологаю, что большенство из людей останеться Win-зомби как и я в том числе....и лишь тень черных магов - асматиков( smile ) будет порекать этот псевдо-идеальный мир Windows...чем доводя некоронованого царя всей компьютерной и форточной Вселенной до сказа....

Вкстати, гредёт Великая Осевая Война (ВОВ)!!! между армиями полководца Пингвиниуса(Linux) и его свирепого противника Билигейца Форточкосозедателя....К рядам чьей армии примкнут клинки(клавы) черных магов - асматиков???

Автор: try_to_get 10.8.2007, 21:36
 smile 

Автор: morfus 11.8.2007, 00:26
Цитата(mardok @  10.8.2007,  20:19 Найти цитируемый пост)
Асм-программеры - это психи, которых беспокоит нечто вроде "Слайдшоу на 4 цветах"

Поставь себе памятник, ты всех нас раскрыл smile (мы все одинаковые и всех нас беспокоит "Слайдшоу") можешь свою теорию запатентовать, все кто думает так же будут тебе бабки платить...

Автор: MAKCim 12.8.2007, 23:23
во-первых, всем привет, я вернулся  smile 
теперь по теме
сегодня я вижу использование ассемблера в следующих ситуациях
1. Архитектурные особенности конкретного CPU, которые прямо не выражаются посредством ЯВУ (системные инструкции и  доступ к пространству I/O)
2. Оптимизация в любом виде
    a) MMX, SSE, ...
    b) Оптимизация операций с использованием специальных инструкций CPU (которые компилятор не сможет сгенерировать в общем случае (к примеру bt, btr, bts))
в ядерном API практически любой ОС (Window$ и Linux 2.6.* точно) есть т. н. HAL, который определяет неизменные интерфейсы на ЯВУ (С) к различным архитектурным вещам
поэтому тут ассемблер даже вредит (теряется переносимость на уровне исходников)
значит остается пункт 2, в особенности подпункт а)

Автор: Severyanin 13.8.2007, 10:54
Иногда просто бывает нужно в контролере написать некие часто вызываемые функции более оптимально. Тогда асм и необходим. Не всегда компилятор помогает smile 

Автор: try_to_get 13.8.2007, 15:51
Драйверы тоже пишут на асме.

Автор: somewhere 13.8.2007, 16:03
Не только драйверы, но и всякие кодеки, декодеры аудио и звука, миксеры и т.д. , потому что на языках высокого уровня даже MPEG декодер будет медленнее в несколько раз.

Автор: MAKCim 13.8.2007, 16:43
Цитата(try_to_get @  13.8.2007,  15:51 Найти цитируемый пост)
Драйверы тоже пишут на асме. 

кто вам такое сказал?
нет, я не спорю, написать-то можно, но пишут ли?
посмотрите тот же Linux, все модули (aka драйверы) написаны на С

Автор: try_to_get 13.8.2007, 17:28
Цитата

кто вам такое сказал?
нет, я не спорю, написать-то можно, но пишут ли?
посмотрите тот же Linux, все модули (aka драйверы) написаны на С

ё*** снова за свое...   smile 

Автор: MAKCim 13.8.2007, 17:40
try_to_get
не знаю, что вы имеете в виду
но я не вижу в своем посте ничего ужасного
все - чистая правда

Автор: try_to_get 13.8.2007, 18:25
MAKCim 

Это я про вечную войну Windows(W) и Lunix(L).
Чуть ли не на каждом сайте спорят что круче W. или L.??!
Или в реале, людей встречаю которые об этом говорят. Наример один начал мне про Винду расказывать, хорошо что он про нее говорил, но зачем надо было упомянуть L. . Или наоборот говорят про Lunix и начинают обс**** Windows. 
Зачем ну вот зачем это, нравится Lunix или Windows пользуйтесь ну не надо закидывать другое творение...  smile

Добавлено через 2 минуты и 21 секунду
Извините, от темы ушел!

Автор: MAKCim 13.8.2007, 18:41
try_to_get
н-да  
в моем посте не вижу никакой войны, вы бы по-лучше прочли для начала
а то увидели слово Linux...и сделали поспешный вывод
Linux привел лишь как пример
по большому счету в Window$ должно быть тоже самое
никто драйвера на ассемблере писать не станет
 smile 
по поводу L. vs W.
все познается в сравнении

Автор: dumb 13.8.2007, 18:42
try_to_get, тебе про фому, а ты про ерему: причем тут вообще этот холи-вар?! тебе сказали, что драйвера практически не пишутся на асме и привели пример. в винде, кстати, абсолютно такая же ситуация.

Цитата(somewhere @  13.8.2007,  16:03 Найти цитируемый пост)
потому что на языках высокого уровня даже MPEG декодер будет медленнее в несколько раз.
и к Вам, уважаемый, взываю: прекратите уже наконец пороть чушь - она маленькая и слабая, и не заслужила такого жестокого с ней обращения!

Автор: Lazin 13.8.2007, 20:46
try_to_get в программировании контроллеров та-же ситуация, всё на С, изредка на асм.
В visual studio можно использовать SIMD расширения без ассемблера. 
зы
Мне кажется знание асма необходимо для понимания архитектура процессора.

Автор: morfus 15.8.2007, 19:17
Цитата(MAKCim @  13.8.2007,  18:41 Найти цитируемый пост)
по поводу L. vs W.
все познается в сравнении

По этому поводу вообще не нужно ничего говорить (это история из другой оперы)

А по теме топика ASM нужен там где
1 - компилятора не существует
2.1 - проц слишком медленный чтоб компилятор мог "обогнать" человеческий мозг в вопросах оптимизации
2.2 - надо написать процедуру которая будет выполняться в цикле миллиарды раз и по этому каждый такт на счету

(причём вариант 2.2 это редкость, обычно он избегается грамотным планированием приложения)

Автор: RodeGO 18.8.2007, 17:47
По топику...

АСМисты, не владеющие машкой - 50% - проф. програмеры (т.е. разновидность психов smile ), 50% - ламеры пытающийся запонтаваться и не владеющие даже 10-ю операторами.

Любители МАШКИ - дикий коктейль из мазохистов и экстрималов с легким привкусом камикадз. Ну, это правда мое мнение, а поскольку я в реале не видел еще никого, кто реально проги писал-бы на машке (кроме того небритого и заплывшего холостяка в зеркале), сужу по себе.

Автор: MAKCim 18.8.2007, 17:59
RodeGO
машка = машинный код?
если да
то не вижу никаких сложностей в его использовании
опкоды всех инструкций запомнить, имхо, никто не в состоянии
а с описанием...ничего сложного, только долго

Автор: LamerTM 15.9.2007, 08:19
Раньше писал на асме под Z80. Скорости были космические. Естественно в сравнении с BASIC. Всё летало. Даже свой ассемблер (компилятор то есть) стал писать. smile Но не дописал, т.к. время этого компа уже безнадежно ушло.

Потом стал писать на Delphi на своём AMD Duron (к какому типу процов он относится как-то не в курсах). Однажды решил я переделать один блок на асм. Переделал, и скорость ни фига не возрасла! Я был в шоке. По-моему даже слегка упала, правда в пределах погрешности оценки. При анализе причин такого странного поведения я обнаружил, что компилятор Delphi формирует готовый машинный код, совсем не так как это было на Sinclair. На Sinclair (проц. Z80) прога на BASIC фактически была текстом, который исполнялся интерпретатором. Именно из-за этого было то фантастическое торможение. Проги на асме в первую очередь писались чтобы обойти этот чертов интерпретатор. Он был главным тормозом и ограничителем на использование ресурсов компа. Все остальные примочки, как то приемы направленные на выигрыш нескольких тактов, были лишь бонусом. Разница между работой через интерпретатор и напрямую на асме была не просто ощутимой, - это было небо и земля. Тогда на меня (да и не только на меня smile) снизошло озарение: асм это суперкруто, всё остальное - ахтунг.
Сейчас языки высокого уровня не имеют интерпретаторов (что было для меня открытием) и сразу компилируются в машинный код. Иногда бывают лишние команды, конечно, но в основном всё тип-топ. Я сам проверял. smile Так что с точки зрения эффективности писать, скажем, на Delphi, это по большому счету почти то же самое что на асме.

Автор: somewhere 18.9.2007, 11:40
Цитата(LamerTM @  15.9.2007,  08:19 Найти цитируемый пост)
Так что с точки зрения эффективности писать, скажем, на Delphi, это по большому счету почти то же самое что на асме. 

Ну хорошо, напиши преобразование Фурье на Дельфи - то самое, которое идет в MP3 - посмотрим во сколько раз на ASM быстрее. Не спорю, в ООП выигрыша нет почти никакого, но вот в реализации математических алгоритмов - тут я в корне не согласен.

Автор: W4FhLF 18.9.2007, 12:18
Цитата(somewhere @  18.9.2007,  11:40 Найти цитируемый пост)
Ну хорошо, напиши преобразование Фурье на Дельфи - то самое, которое идет в MP3 - посмотрим во сколько раз на ASM быстрее.


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

Автор: somewhere 21.9.2007, 12:38
Ну хотябы вот-такой конверт из моей проги, кто обгонит на Дельфе, тому +1 smile
Код

procedure TWaveLet.LoadBuffer16(src : pointer);
begin
asm
mov esi, src
mov eax, self
mov edi, [eax + WorkBuffer]
mov ecx, [eax + fBufferSize]
mov ax, [eax + CPUExtensionsEnabled]
test ax, 8                    // Is SSE enabled
jnz @Int16toSingle_SSE
                    // FPU version
    @k1:
    fild word ptr [esi + ecx*2 - 2]
    fstp dword ptr [edi + ecx*4 - 4]
    dec ecx
    jnz @k1
jmp @ret

    @Int16toSingle_SSE:     // SSE version
xor eax, eax
    @s1:
    movsx eax, word ptr [esi + ecx*2 - 2]
    cvtsi2ss xmm0, eax
    movss [edi + ecx*4 - 4], xmm0
    dec ecx
    jnz @s1

    @ret:
end;
end;

Автор: W4FhLF 21.9.2007, 15:03
Цитата(somewhere @  21.9.2007,  12:38 Найти цитируемый пост)
Ну хотябы вот-такой конверт из моей проги, кто обгонит на Дельфе, тому +1


А программа на чём написана? Запомни, dasm - это полноправная часть языка Delphi и компилируется она компилятором Delphi и разделять их неккоректно. 

Автор: W4FhLF 22.9.2007, 17:35
somewhere, кстати, посмотрел сегодня внимательней и посмеялся. А что там обгонять-то, две процессорные инструкции?smile В чём конкретно заключается твоя оптимизация функции?smile

Автор: somewhere 25.9.2007, 09:47
fild word ptr [esi + ecx*2 - 2]

Это что, Дельфи? Процессорные инструкции - это Дельфи? Вот

Цитата(W4FhLF @  22.9.2007,  17:35 Найти цитируемый пост)
В чём конкретно заключается твоя оптимизация функции?

В том, что на Дельфях, не на асме, выйдет гораздо медленнее. Кто нибудь видел код, который генерит Дельфи? Есть там SSE или хотябы MMX? Вот в том и дело, что кроме асматиков эти возможности никто не использует... Вот к чему я...

Автор: W4FhLF 25.9.2007, 12:49
Цитата(somewhere @  25.9.2007,  09:47 Найти цитируемый пост)
Это что, Дельфи? Процессорные инструкции - это Дельфи?


А что такое Делфи? Процессорные инструкции кто компилирует, святой дух чтоли? В твоём случае - это dasm - delphi assembler. Он часть языка Delphi и часть компилятора Delphi. 

Цитата(somewhere @  25.9.2007,  09:47 Найти цитируемый пост)
Кто нибудь видел код, который генерит Дельфи?


Дай определение всех переменных, я перепишу и погляжу. 

Автор: somewhere 26.9.2007, 10:07
Цитата(W4FhLF @  25.9.2007,  12:49 Найти цитируемый пост)
А что такое Делфи?

Я имел ввиду, что если писать ту процедуру на Паскале, типа
For i := 1 to fBufferSize do Buffer[i] := ....
выйдет очень тормозно, я не грешу на dasm, но в рамках возможностей языка Дельфи(Паскаль) быстрее сделать этот конверт не получится, т.к. механизм оптимизации кода компилятора не обладает такими возможностями, нежели сам асматик
Цитата(W4FhLF @  25.9.2007,  12:49 Найти цитируемый пост)
Дай определение всех переменных, я перепишу и погляжу.

Это все ни к чему, код процедуры TWaveLet.LoadBuffer16 будет таким же, как я и написал. А вот код, который генерится компилятором Паскаля для строк вида
For i := a to b do floatmem32[i] := integermem16[i]
ужасен и требует доработки компилятора. Чуть позже скину то, что он генерит, но наверное от этой темы это уже далеко...

Автор: morfus 27.9.2007, 00:56
Цитата(LamerTM @  15.9.2007,  08:19 Найти цитируемый пост)
На Sinclair (проц. Z80) прога на BASIC фактически была текстом, который исполнялся интерпретатором. Именно из-за этого было то фантастическое торможение. Проги на асме в первую очередь писались чтобы обойти этот чертов интерпретатор. Он был главным тормозом и ограничителем на использование ресурсов компа. Все остальные примочки, как то приемы направленные на выигрыш нескольких тактов, были лишь бонусом.

"чтобы обойти этот чертов интерпретатор" были компиляторы (HiSoft, Blast, Mcoder, и.т.д.) и они давали ощутимый прирост, но "приемы направленные на выигрыш нескольких тактов" в свою очередь выигрывали ещё больше. (а при частоте проца в 3.5Mhz в прямом смысле каждый так на счету)

Раньше (во времена когда ещё не было процев даже в 50MHz) ASM позволял СИЛЬНО уделать по скорости любые откомпилированные программы, сейчас само собой преимущество в скорости (в большей степени благодаря кешу в процессорах) сократилось и уже практически незаметно (по этому даже лучше писать на том-же Паскале или Си)

Однако есть ряд процедур (некоторые фрагменты "брут-форсеров", "кодеков", архиваторов) требующих экономии каждого такта, и для них ASM пока ещё имеет свои плюсы...

Автор: somewhere 27.9.2007, 08:34
Цитата(morfus @  27.9.2007,  00:56 Найти цитируемый пост)
Однако есть ряд процедур (некоторые фрагменты "брут-форсеров", "кодеков", архиваторов) требующих экономии каждого такта, и для них ASM пока ещё имеет свои плюсы...

Вот он глас народа, вот об этом и был разговор...

Автор: morfus 30.9.2007, 03:44
Опять-же многое зависит от бюджета. Например (суммы шуточные) если планируется продать 10 экземпляров программы по $10 при том что программисту будет заплачено $50 а вам достанется что осталось, то вкладывать в неё $100 (для того чтоб нанять не одного Си программиста а одного Си и одного ASM) было бы не разумно, даже если с точки зрения быстродействия это могло бы помочь.

Автор: Pragma 16.10.2007, 22:53
Цитата(morfus @ 10.8.2007,  09:07)
Цитата
кто-нить еще пишет на асм? Молодое поколение знает вообще о нем?


Черт, как же в точку то...а некоторые и вобще думают что кодить можно только на паскале)
Мне лично 16 лет, изучая ассемблер на протяжении 2ух лет нашол крайне мало собутыльников единомышленников, в школе информатика выше МС Офиса не уходила вообще, есть лиш парочка знакомых студентов да и те учат асм для галочки в универе...
Как же жаль что так мало людей знакомы с этим удивительным миром низкоуровневого программирования...
Цитата

Ассемблер жив, ассемблер живет, и ассемблер будет жить! (с) Крис Касперски

ЗЫ Ап темке)

Автор: Lonley 17.10.2007, 08:09
ASSEMBLER -- он будет всегда... как это не пафосно звучит
 smile  smile 

Автор: morfus 17.10.2007, 16:00
Lonley, Вашу подпись да во все FAQ-и по программированию smile

Автор: Lonley 18.10.2007, 07:39
morfus
запросто  smile 

Автор: morfus 3.11.2007, 15:47
Кстати есть и такое мнение.
Цитата
Как программист, благодаря копеечным ценам на память и удвоению скорости процессоров каждые два года, вы можете выбирать. Можете потратить шесть месяцев, переписывая внутренние циклы на Ассемблере, или потратить шесть месяцев играя барабанщиком в рок группе, и в обоих случаях ваша программа будет работать быстрее.

(с) http://joelonsoftware.com/items/2007/09/18.html

Автор: JackYF 3.11.2007, 16:25
morfus, это словоблудие.


Цитата(morfus @  3.11.2007,  15:47 Найти цитируемый пост)
и в обоих случаях ваша программа будет работать быстрее.

да, но только во втором случае ощутимо быстрее, чем в первом.

Цитата(morfus @  3.11.2007,  15:47 Найти цитируемый пост)
благодаря копеечным ценам на память и удвоению скорости процессоров каждые два года

опять надеемся на экстенсивное развитие? ну-ну. Тут многие уже понадеялись... И получили тучу тормозных программ.

Автор: sgi1981 3.11.2007, 20:35
Сколько насчитывается разных архитектур процессоров, кроме процессоров персональных компьютеров ?

Автор: JackYF 3.11.2007, 22:32
Цитата(sgi1981 @  3.11.2007,  20:35 Найти цитируемый пост)
Сколько насчитывается разных архитектур процессоров

Код

SELECT count(*) FROM architectures.

Итого - много smile

Автор: morfus 4.11.2007, 22:20
Microsoft в 80-х понядеялась, и где она теперь ?

(только у неё вся фишка была что они практически одни понадеялись, а теперь надеются минимум 99%)

Автор: Neox_GeForce 15.11.2007, 23:55
Мне ассемблер очень нравится, на нём можна сделать то что на других языках очень сложно, и вообще он прост, но для не очень больших програм а то можна "заблудится" в коде. Ассемблер для вирусов ну и драйверов! smile

Добавлено через 3 минуты и 42 секунды
Цитата

ASSEMBLER -- он будет всегда... как это не пафосно звучит


ASSEMBLER Должен бить всегда! smile  smile  smile 

Автор: newinfo2008 5.1.2008, 00:07
Читать не стал, т.к. многа слишком, согласен полностью.
Сам изучил в 9-ом классе ассемблер, архитектуру x86, когда программировал радовался как ребенок, причем именно на асме и ни на каком ином языке программирования я так не радовался

Автор: SABROG 5.1.2008, 13:25
Асм первый язык программирования который я освоил. Он помог мне понять архитектуру процессора, понять как он работает, что такое программа для него. Узнать что существуют инструкции, которые могут его "повесить". Показал мне что одна задача может решаться несколькими способами, популярный пример умножения на 2. Ассемблер дал мне свободу творчества, свободу выбора, я сам себе оптимизатор по скорости и по размеру. Ассемблер научил меня понимать чужой код, влиять на ход событий другой программы. В итоге это привело к написанию нескольких кряков к программам и тренеров к играм. Писались они тоже на ассемблере, посему размер тех же тренеров был по 4кб, в отличае от существующих на сегодняшний день по 200-500кб. Не понятно что они в них пихают, когда задача программы поменять пару байт по нескольким адресам.

А эта ужасная типизация ЯВУ, такое количество типов как С++ приводит в ужас, а собственные типы в виде классов с перегруженными операторами. Пока не изучишь весь класс - не поймешь что же дает перегруженный оператор, скажем сложения. Для этого пишут документации. В ассемблере есть только 2 типа данных - бит и байт. Остальное все производное от них. Изучая C++ я долго не мог понять почему он настолько сложнее ассемблера, до такой степени сложный, что я с ужасом представляю себе момент, когда мне придется изучать паттерны проектирования.

Как бы там нибыло, я думаю, никто не будет спорить, что прежде чем написать любую программу - для нее заготавливается каркас. Прописываются инклюды, пишется int main () {} и т.д. В ассемблере тоже есть каркасы, поэтому для того кто пишет на нем активно не занимает большого времени внедрить ту или иную заготовку.
Причем эти заготовки, как правило, уже оптимизированы по самое не хочу и компилятору уже не надо ничего самому оптимизировать, программа компилиться за считанные секунды или доли секунд. А внутри своих программ вы никогда не увидите спама в виде надписей "Borland C++ - Copyright 2002 Borland Corporation" или "Microsoft Visual C++ Runtime Library", вы можете контролировать каждый байт и это только ваша программа в которой не будет ничего лишнего, ничего того, что вы не используете.

Автор: JackYF 5.1.2008, 13:39
SABROG, это всё хорошо и правильно. Пока программа маленьких размеров. Ты представляешь себе, сколько будет на ассемблере занимать обычная такая программа, которая на С++ имела размер в несколько тысяч строк? А насколько просто в ней будет разбираться? А когда проект пишет не один человек, а 10? а 100?

Автор: SABROG 5.1.2008, 14:11
Для каждой задачи свой инструмент. Я не асматик, асм для меня не религия.
Понятно, что можно воспользоваться одной единственной функцией WinApi, чтобы скачать файл, а можно написать клиента на сокетах, который реализует протокол http, а можно скачать готовый класс или библиотеку и т.д.

Асм должен быть стартовой площадкой для понимания работы программ, а не средством, которое будет использоваться повсеместно. Лично для моих программ мощностей асма вполне хватало, порой доходило до того, что тупо использовались подряд одни вызовы winapi и ничего большего. Или из последних программ, это бот информер для сети DirectConnect. Причем на асме была реализована только работа с сокетами, типа подключение, отключение, слушание порта, принятие данных, отправка данных. А к самой программе я подключил дллку скриптового движка Lua, и на скрипте луа реализовал уже сам протокол соединения. Задача бота была простая - в заданном интервале повторять новость в главный чат. Программа весила 8кб, dllка Lua около 500кб. Такой же эксперимент проводил с парсингом XML'я, программа 4кб, дллки libxml2 - 2 мегабайта. Ну и с COM баловался, экспорт данных в Word, Excel из проги на асме.

Т.е. я ни в коем случае не призываю все на нем писать, но действительно нет смысла стрелять из пушки по воробьям. Хоть я и понимаю, что мы настолько ленивые порой бываем, что нам хватает функциональности .bat или .js файлов.

Автор: MAKCim 5.1.2008, 16:05
Цитата(SABROG @  5.1.2008,  14:11 Найти цитируемый пост)
Лично для моих программ мощностей асма вполне хватало, порой доходило до того, что тупо использовались подряд одни вызовы winapi и ничего большего. 

вот это уже глупость, имхо
ассемблер должен использоваться в 2-ух случаях
1. оптимизация с использованием "недоступных" компилятору фишек типа SIMD
2. использование архитектурных особенностей конкретной машины
использование в остальных случаях, имхо, фанатизм

Автор: morfus 6.1.2008, 19:07
SABROG, полностью поддерживаю, до последней буквы... (только у меня это второй язык который я освоил, первый был тупо "барсик" причём оксфордский его диалект)

Цитата(MAKCim @  5.1.2008,  16:05 Найти цитируемый пост)
ассемблер должен использоваться в 2-ух случаях
1. оптимизация с использованием "недоступных" компилятору фишек типа SIMD
2. использование архитектурных особенностей конкретной машины
использование в остальных случаях, имхо, фанатизм

Т.е для того чтоб написать "Hello World" надо отказаться от уже известного АСМа и дополнительно начать изучать какой нибудь другой язык ?
(ИМХО маразм)

Автор: MAKCim 6.1.2008, 21:27
Цитата(morfus @  6.1.2008,  19:07 Найти цитируемый пост)
Т.е для того чтоб написать "Hello World" надо отказаться от уже известного АСМа и дополнительно начать изучать какой нибудь другой язык ?
(ИМХО маразм)

Код

print "Hello, World!"

а зачем это писать?  smile 
для написания сложных программ ассемблер не лучшее решение по всем парамерам кроме скорости работы конечной программы (и то не всегда)
я не имею в виду 2 вышеназванных пункта

Автор: barin_Student 9.1.2008, 07:20
На ассемблере что полезное можно сделать?Какой приличный проект smile , максимально выгодно.. и т.п.? Если вам дали заказ на реализацию протокола SMPP в качестве клиента, на асемлере это можно решить? Если да то за скока лет 1 человек это сделает? На яве клиент SMPP с готовой библиотекой реализутеся за неделю со всеми тестингами и т.п.? 
Ассемблер - это как порно журнал, ускоряет , но не впечатляет..Не впечатляет , ограничением того что написанный код проекта будет как албанский язык написанный китайцем.. Потом кто с этим проектом разберется? Неспорю есть те вещи где без асм. не обойтись(практически), но категорически заявлять , что без него никуда - это ,как его там.. пора завязывать журналы смотреть, и старую порно касету смотреть ...)) Когда есть красивые девушки..хоть с ними и медленей, порой дороже, порой они по 2 часа спамят, но живой проект ,который не байты в регистрах с места на место ложит , а еще что то делает намного приятней. ИМХО smile 

Автор: SABROG 9.1.2008, 09:51
Во всем надом смотреть в корень. SMPP - протокол работащий на основе TCP/IP или X.25, с этими протоколами работается без проблем на ассемблере. Все остальное зависит от твоих наработок, если ты много пишешь, то у тебя остается много кода и множество готовых решений. Исходники обычно комментируют, если не будешь этого делать, то с твоим кодом на C++ или Java тоже мало кто быстро разберется. Oracle начинали писать на ассемблере. Серьезные проекты - MenuetOS, RadAsm. Кстати тот же компилятор fasm не назвать серьезным проектом язык не поворачивается, да написан на ассемблере для ассемблера, но чем он не серьезен ?

Кстати еще один факт почему на ЯВУ пишется легче - Open Source. Сейчас все у друг друга передирают, сначала решения передирали с unix'a. Теперь все просто пишут на C++ и другие передирают у них. На ассемблере такого не увидишь, т.к. людей желающих писать на ассемблере мало. Короче community у ЯВУ больше, и поддержка соотвественно больше. Вот только начинающие программисты того же Php или Java не понимают как работает их программа, не умеют работать с отладчиком, анализировать дампы, крэши.

Скажу на своем примере. Я знаю ассемблер, но сейчас не пишу на нем серьезных или не серьезных программ.
Какое-то время писал на Borland Builder C++. Сейчас переместился в сторону Qt. Я не зацикливаюсь на чем-то одном, я изучаю все что мне интересно, я также отдаю себе отчет в том, что в ассемблере для меня осталось очень много не познанного и не изученного. Если человек хочет углубляться и испытывать себя это его право, хочет всю жизнь посвятить ассемблеру - пожалуйста, он станет великим специалистом в своей области и узнает гораздо больше чем знает программист на Jave. Ведь не смотря на то что северный и южные полюса покорили уже не однократно, туда все еще идут и идут исследователи. Можно спросить их: "зачем ?", у каждого свой ответ на этот вопрос. Считать таких людей фанатами ? Они исследователи ! Кто-то изучает литературу в школе и этого ему достаточно, кто-то идет дальше и становится литератором. Знания формируют свое мировозрение, в каждой области есть что-то свое - ценное, чего нет в других областях.

Автор: morfus 10.1.2008, 00:47
Цитата(barin_Student @  9.1.2008,  07:20 Найти цитируемый пост)
На ассемблере что полезное можно сделать?Какой приличный проект, максимально выгодно.. и т.п.?

Тыщу раз уже писали, никто не говорит что выгоднее и быстрее писать всё на ASM но мелкие функции очень даже можно (и местами нужно)

Что касается меня лично так я вообще не только за деньги пишу, но и для себя (хобби моё такое программирование называется) а в этом случае можно смело плевать на трудности, сроки, деньги, и прочую чепуху...

Автор: sgi1981 22.1.2008, 01:05
Пример программы на асме.
Реализация алгоритма перекодировки видео или аудио информации из одного формата в другой формат (кодек). Требуется по возможности максимальное быстродействие. Решений задачи тут бесчисленно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)