Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: актуальность применения языка ассемблера в современном мире

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> RE: актуальность применения языка ассемблера в современном мире
Имя
Сообщение << Старые топики   Новые топики >>
RE: актуальность применения языка ассемблера в современном мире - 2008-11-16 20:54:04.866666   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: il0dbg

Приводи.
Только очень бы хотелось увидеть код.

Ну так именно без кода, а так, кто-то что-то не мог написать, а потом пришёл другой, взял и написал. Точно такие же примеры, как redsh привёл. Их куча.
Post #: 121
RE: актуальность применения языка ассемблера в современном мире - 2008-11-16 21:40:52.760000   
il0dbg

Сообщений: 66
Оценки: 0
Присоединился: 2007-10-30 01:32:31.366666
quote:


Ну так именно без кода, а так, кто-то что-то не мог написать, а потом пришёл другой, взял и написал. Точно такие же примеры, как redsh привёл. Их куча.

Я понял, что ты имеешь ввиду.

Товарищ Denaturat, вопрос к тебе:
А ты знаешь ассемблер?
Потому что многие люди, не знающие какой-либо области, пытаются доказать, что эта область не нужна.
Потому что учить не хочется.
Хороший программист должен знать внутренности среды, под которую он пишет.
Я не отрицаю, что языки высокого уровня более удобны и более продуктивны,  но без знаний Ассемблера мне было бы очень сложно.
Post #: 122
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 06:56:32.783333   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
вот тебе сорц (на этот раз - мой), выдрал из одного недавнего проекта)

//-------------------------------------------------------------------- #include "lpt.h" //-------------------------------------------------------------------- DWORD lpt_send_spi_cmd (DWORD cmd) { __asm { push ebx push esi push edi mov esi,cmd rol esi,3 #ifdef INVERTED_MOSI_PIN not esi #endif /* INVERTED_MOSI_PIN */ xor edi,edi mov bh,32 mov dx,378h __next_bit: mov eax,esi rol esi,1 and al,4 #ifdef INVERTED_SCK_PIN or al,3 #else or al,1 #endif /* INVERTED_SCK_PIN */ out dx,al xchg al,bl mov ecx,10000 loop $ inc dx in al,dx shr al,7 movzx eax,al or edi,eax rol edi,1 xchg al,bl xor al,2 dec dx out dx,al mov ecx,10000 loop $ dec bh or bh,bh jne __next_bit mov eax,edi #ifdef INVERTED_MISO_PIN not eax #endif /* INVERTED_MISO_PIN */ ror eax,1 pop edi pop esi pop ebx } } //-------------------------------------------------------------------- void lpt_power_on (void) { __asm { mov dx,378h mov al,1 #ifdef INVERTED_SCK_PIN xor al,2 #endif /* INVERTED_SCK_PIN */ #ifdef INVERTED_MOSI_PIN xor al,4 #endif /* INVERTED_MOSI_PIN */ out dx,al push 150 call dword ptr [Sleep] } } //-------------------------------------------------------------------- void lpt_power_off (void) { __asm { mov dx,378h mov al,1 #ifdef INVERTED_SCK_PIN xor al,2 #endif /* INVERTED_SCK_PIN */ #ifdef INVERTED_MOSI_PIN xor al,4 #endif /* INVERTED_MOSI_PIN */ out dx,al push eax push 150 call dword ptr [Sleep] pop eax mov dx,378h xor al,1 out dx,al } } //---------------------------------------------------------- int lpt_giveio(char *path) { return GiveIo(path); } //----------------------------------------------------------
Post #: 123
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 07:12:40.353333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
Блин, ну и что мне с этим сорцом делать? Я тебя о чём просил? Я тебя просил привести мне код твоего знакомого и показать, что именно в нём может придумать только человек с прокуренными Ассемблером мозгами, а прикладники не могут. А ты мне что приводишь? Кусок своего кода, который вообще здесь не при чём. Или ты думаешь, что я ассемблерных вставок не видел?
Ещё раз говорю: приведи мне хоть один аргумент в пользу того, что люди, привыкшие писать на языках ВУ не могут нормально написать программу на низком уровне. Или хотя бы не аргумент, а пример того, как это было. А то твой пример с несколькими чуваками, которые облажались, и одним, который не облажался, как-то не очень показателен, знаешь ли.
Post #: 124
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 07:33:39.986666   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
ну что я тебе могу сказать? сорца у мя нету, случай был не со мной. я только знаю, что мой знакомый чувак плюёт на все языки и поэтому с лёгкостью пишет подобные проги. а те, кто слишком увлёкся языками высокого уровня, считая, что они облегчат их работу, получают диаметрально противоположный результат.

а свой сорц я тебе привёл, потому что он работает эффективнее аналога на языке ВУ, а это сабж всего топика.

кстати, вот ещё один сорц:
http://www.wasm.ru/baixado.php?mode=src&id=300
Post #: 125
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 15:10:33.523333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: redsh

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

У тебя с логикой вообще как? Причинно-следственная связь и всё такое знакомо? Ты не видишь некоторого разрыва между тем, что твой знакомый забивает на все языки и тем, что он с лёгкостью пишет подобные проги? Это как в Саус Парке:
 - мы распяли христа и поэтому символ рождества - пасхальный кролик? 0_о
 - да, сынок, именно так

quote:

ORIGINAL: redsh

а свой сорц я тебе привёл, потому что он работает эффективнее аналога на языке ВУ, а это сабж всего топика.

Вопрос был не в эффективности, а в актуальности применения, насколько я понял из темы. И если твой код даёт выйгрыш в скорости, думаю, он минимален.
Post #: 126
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 16:03:54.793333   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
с логикой у меня всё в порядке. посмотри на простейший пример: нужно сложить два целых числа, ограничив результат границами выбраного типа данных, например, для char это:

2 + 3 = 5
(-120) + (-10) = -128
100 + 50 = 127

классическая реализация на ЯВУ будет выглядеть криво даже для char, не говоря уже о long. а на асме - очень естественно:

add eax,edx jno __1 mov eax,7FFFFFFFh adc eax,0 __1: заметь, что пример взят из реального проекта (IMA ADPCM кодека)

данный пример можно перенести на Си, эмулировав (или считав) флаги OF, CF. вот например, реализация для AVR (код взят из критичного места, где приходилось бороться за каждый сэкономленый такт):

signed char a, b, c; //... c = a + b; if(SREG & 0x08) // V { c = 127; if(SREG & 0x01) // C { c++; } } после оптимизации компилятором получается тоже самое, что я написал бы на Асме. но человек, мыслящий в терминах ЯВУ так не напишет и его код будет работать в 10 раз дольше.
Post #: 127
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 16:25:28.616666   
JTG

Сообщений: 1189
Оценки: 0
Присоединился: 2007-03-05 11:56:01.993333
Прочёл всё (!) с трудом :)
Denaturat кажись помешан на переносимости, этим и обьясняется его асмо-ненависть :D Рекомендую почитать wasm (оптимизация для процессоров семейства Pentium) ну и "Техника оптимизации программ" Мыщьх`а
Post #: 128
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 18:27:29.163333   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
quote:

ORIGINAL: kreol

Вопрос был не в эффективности, а в актуальности применения, насколько я понял из темы. И если твой код даёт выйгрыш в скорости, думаю, он минимален.


выигрыш в скорости 60-100%. в моём проекте это было актуально




а вот ещё кусочек кода на Асме, который очень сложно повторить на ЯВУ, не потеряв в производительности.

__asm { mov eax,a mov ecx,b xor edx,edx mov cLo,edx mov cHi,edx __1: jecxz __3 shr ecx,1 jnc __2 add cLo,eax adc cHi,edx __2: shl eax,1 rcl edx,1 jmp __1 __3: }
зы. не забудь ещё прочитать пост 127))
Post #: 129
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 18:29:50.320000   
il0dbg

Сообщений: 66
Оценки: 0
Присоединился: 2007-10-30 01:32:31.366666
Да, Крис хороший автор.
Очень его уважаю.
Человек - компьютер.
Post #: 130
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 18:34:36.913333   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000

quote:

ORIGINAL: il0dbg

Да, Крис хороший автор.
Очень его уважаю.
Человек - компьютер.


+4))
Post #: 131
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 23:33:22.266666   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: redsh

нужно сложить два целых числа, ограничив результат границами выбраного типа данных, например, для char это:

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

quote:

но человек, мыслящий в терминах ЯВУ так не напишет и его код будет работать в 10 раз дольше.

Китайский повор не сможет правильно пожарить мясо, потому что готовит рис, и его мясо будет в 10 раз жёстче. По твоей логике так получается?
Может быть у тебя есть статистика, или ты проводил исследования, общался с психологами и спрашивал, что могут и что не могут люди, пишущие на ЯВУ? Твоя исходная фраза была:
quote:

для программиста, мыслящего математическими терминами считается чем-то невероятным грамотно распределить код, рассчитать сколько наносекунд будет выполняться каждый из операторов…

Я пока так и не увидел аргументов, подтверждающих это. Твоё голое мнение об ущербности мышления прикладных программистов. Я не спорю, что некоторые конкретные вещи на Ассемблере можно соптимизировать лучше, чем на любом другом языке, и что люди, постоянно пишущие на асме скорее всего смогут сделать это быстрее и лучше, но это не значит, что привыкшие писать на ЯВУ программисты сломаются перед задачей оптимизации, или что они не смогут посчитать время выполнения операций. И тем более нельзя говорить в такой ситуации о превосходстве Ассемблера (ты сам привёл код на Си, который скомпилируется точно в то же самое, что написано на асме).
А насчёт оптимизации показательна одна история. В одной конторе работал парень, писал на С++ некоторый функционал. Ну и поручили ему написать отдельный модуль. Он его написал, принёс и стал показывать. Начальник, увидев, что в коде нет ни одной inline-функции тут же накричал на него и снял премию. Парень расстроился и пошёл домой. Решив хоть как-то оправдаться он переписал код, сделав всё через inline-функции. И как ты думаешь, на сколько он повысил производительность системы? Да ни на сколько. Производительность его модуля с инлайнами упала в 1.5 раза. То есть обычные функции работали в 1.5 раза быстрее, чем инлайн? Он показал это своему начальнику, начальник был в шоке, весь отдел был в шоке. Несколько дней никто не мог объяснить этот феномен, ведь на вызов функции уходит порядка 15 тактов процессора, а код в результате работает быстрее.
Но в конце концов они всё-таки додумались до ответа. Оказалось, что несколько функций вызывалось так часто, что процессор просто закешировал их. В результате 15 тактов вызова этих функций с головой покрывались разницей во времени обращения в память и в кеш. Предсказать такое развитие событий было невозможно. Даже зная такой случай, ты никогда не сможешь расчитывать на него при оптимизации программы. Поэтому и говорить об оптимизации отдельных кусочков без проверки всей системы почти всегда некорректно (конечно, если вся твоя программа не умещается в 50 строчках).

И, да, ещё раз повторяю, вопрос темы был не в том, как написать наиболее быструю программу, а в том, насколько актуально применение Ассемблера. Даже если ты точно знаешь, что на Асме твоя программа будет работать быстрее, то всё равно на аналог, например, на Си, ты наверняка потратишь меньше времени, сил и денег. Так вот вопрос в том, где скорость работы программы перевешивает скорость и удобство разработки.
Post #: 132
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 04:40:52.040000   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000

quote:


ты сам привёл код на Си, который скомпилируется точно в то же самое, что написано на асме


это абсолютно беспрецендентный хак, доступный только чуваку с прокуреными Асмом мозгами, как ты говоришь

quote:


И, да, ещё раз повторяю, вопрос темы был не в том, как написать наиболее быструю программу, а в том, насколько актуально применение Ассемблера. Даже если ты точно знаешь, что на Асме твоя программа будет работать быстрее, то всё равно на аналог, например, на Си, ты наверняка потратишь меньше времени, сил и денег. Так вот вопрос в том, где скорость работы программы перевешивает скорость и удобство разработки.


а ты так и не понял…))) я привёл тебе три куска кода, которые исключительно легко пишутся на Асме (сложение я написал за 5 мин, умножение - за 15, не потратил никаких усилий и получил эстетическое удовольствие). а на ЯВУ ты будешь ковыряться несколько часов, причём в основном будешь воевать с компилятором… и получишь результат если не в 10, то в 3 раза хуже - это точно. а в моём случае это было недопустимо (может опишу тебе потом задачу, сейчас нету времени)




а вот ещё кусок кода на Асме (деление uint128/uint32). этот кусок написан плохо, ибо выдран из лабы, писавшейся на паре, в кошмарных условиях. но в принципе, ничего сложного в коде нету, написан он где-то за 40-60 мин.

/* * деление 128/32 -&gt; 128 * C = A/B * возвр: остаток */ int __div128(void *c, void *a, unsigned int b) { char t [32]; char k [32]; int i; __asm { lea esi,t lea ebx,k //скопируем T &lt;- A mov edi,a mov ecx,4 xor edx,edx __div128_1: mov eax,[edi+edx*4] mov [esi+edx*4],eax inc edx loop __div128_1 mov edi,c //очистим C, Hi(T) (128) и K (256) mov ecx,4 xor eax,eax xor edx,edx __div128_0: mov [edi+edx*4],eax mov [ebx+edx*4],eax mov [ebx+edx*4+16],eax mov [esi+edx*4+16],eax inc edx loop __div128_0 //скопируем HI(K) &lt;- B mov eax,b mov [ebx+16],eax //цикл 127..0 xor eax,eax mov i,127 __div128_2: //сдвинем K направо mov ecx,8 mov edx,7 clc __div128_3: rcr dword ptr [ebx+edx*4],1 dec edx loop __div128_3 //сравним T и K mov ecx,8 mov edx,7 __div128_4: mov eax,[esi+edx*4] cmp eax,[ebx+edx*4] jb __div128_7 jne __div128_5 dec edx loop __div128_4 __div128_5: //вычтем T &lt;- T-K mov ecx,8 xor edx,edx clc __div128_6: mov eax,[ebx+edx*4] sbb [esi+edx*4],eax inc edx loop __div128_6 //установим бит в C mov eax,i mov ecx,eax shr eax,3 and ecx,7 bts byte ptr [edi+eax],ecx __div128_7: dec i cmp i,0 jge __div128_2 mov eax,[esi] } }
прикол этого кода в том, что хотя он реализован плохо, на ЯВУ как бы ты не старался, ты сделаешь ещё хуже и потратишь гораздо больше времени.

з.ы. кстати, не всегда усилия на разработку чего либо прямо пропорциональны потраченому времени
Post #: 133
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 18:49:35.653333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: JTG

Прочёл всё (!) с трудом :)
Denaturat кажись помешан на переносимости, этим и обьясняется его асмо-ненависть :D Рекомендую почитать wasm (оптимизация для процессоров семейства Pentium) ну и "Техника оптимизации программ" Мыщьх`а


да, прочитать четыре страницы - это очень сложно. где ты, кстати, мою "асмо-ненависть" нашёл?
Post #: 134
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 18:54:09.983333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: il0dbg

Цель - уменьшение времени на выделение памяти
Простая арифметика - посчитай, сколько здесь ассемблерных команд, и дизассемблируй malloc - уже, даже не считая внутренностей HeapAlloc,&nbsp;кода получается гораздо больше, нежели чем здесь,а если считать иерархию дальнейших вызовов - получится в разы больше.


сильно сомневаюсь, что именно это место было bottleneck'ом в исходной задаче. дай ТЗ полностью - разомнём кости :) ставлю пиво что напишу более эффективный по времени вариант даже на C++, дай только задачу полностью - откуда берётся размер матрицы и для чего она используется
Post #: 135
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 18:57:20   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: il0dbg

Товарищ Denaturat, вопрос к тебе:
А ты знаешь ассемблер?
Потому что многие люди, не знающие какой-либо области, пытаются доказать, что эта область не нужна.
Потому что учить не хочется.
Хороший программист должен знать внутренности среды, под которую он пишет.
Я не отрицаю, что языки высокого уровня более удобны и более продуктивны,&nbsp; но без знаний Ассемблера мне было бы очень сложно.


да я вообще начинающий, так - всего по мелочам :) да, обращаю ещё раз внимание на то, что о пользе знания ассемблера целевой архитектуры я вообще ничего не писал. мой вопрос - о применении ассемблера в разработке. разница понятна?
Post #: 136
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 19:33:35.826666   
SmanxX1

Сообщений: 208
Оценки: 0
Присоединился: 2007-07-31 14:33:56.650000
Мне вообщем-то уже плевать на эту тему, т.к. пошел бессмысленный треп, но…
Denaturat
Ты не в чате!! Это форум, и не нужно здесь писать по 4 сообщения подряд, для этого есть кнопочка
Post #: 137
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 19:40:00   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: SmanxX1

Мне вообщем-то уже плевать на эту тему, т.к. пошел бессмысленный треп, но…
Denaturat
Ты не в чате!! Это форум, и не нужно здесь писать по 4 сообщения подряд, для этого есть кнопочка


и что? я отвечаю на разные сообщения, по мере их прочтения мной. все ответы (более-менее) по существу - не флуд, не спам, не копипаста. зато и собеседники имеют возможность отвечать именно на те реплики, которые к ним были адресованы

вот твоё сообщение про "бессмысленный трёп" - это как раз флуд, ибо смысловая нагрузка для всех, кроме тебя - нулевая
Post #: 138
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 19:46:04.880000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: redsh

это абсолютно беспрецендентный хак, доступный только чуваку с прокуреными Асмом мозгами, как ты говоришь

Беспрецедентный, ах какое слово. Ты бросаешься такими словами, а подтвердить их чем-нибудь кроме своего мнения не можешь. Я не спорю, что человек, пишущий в основном на Асме лучше понимает все эти трюки и хаки, но утверждать, что человек из другой группы не сможет решить задачу, специфическую для данной группы, само по себе глупо. Если человек пишет на C#, это ещё не значит, что он не знает Ассемблер и не понимает, как работает машина. Железная которая, не виртуальная. Если ещё раз напишешь, что только кодер на Асме может что-то сделать, а других "простым смертным" это недоступно без аргументов (лучше всего психологических, это всё таки дело психологии - мочь и не мочь), я просто проигнорирую твоё выражение.Ибо надоело.

quote:

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

А я тебе могу привести десяток кусков кода, который исключительно легко (и даже эффективно) реализуется на языках ВУ (хочешь увидеть быструю сортировку в двух строчках?). Ну и что с этого? Мы говорим про задачи, а не про куски кода. И сложить два числа, ограничив их по рамкам значения типа - это не задача, это одна из частей решения какой-то задачи. А уж какой именно, будь добр, раскажи. И если она действительно не может быть решена на ЯВУ, то я соглашусь, что в этом конкретном случае Ассемблер незаменим. А если ты ещё и выделишь класс таких задач, то может мы наконец увидим сферу применения Асма. А то как-то на микроконтроллерах и остановились (да и они, по большому счёту, не приговорены программироваться на Ассемблере, даже тот же высокоуровневый и абстрактный Оберон уже существует для нескольких популярных моделей микроконтроллеров).
Так что жду задачи. Такой, которая формулируется техническим заданием, а не кусками кода.

Пы.Сы. Почему-то все фанаты Асма в этой теме воспринимают её как наезд на этот язык, вызов всем программистам на низкоуровневых языках, в то время как был поставлен исследовательский вопрос о том, где сегодня Ассемблер всё ещё занимает лидирующее место (по крайней мере, я так понял вопрос автора). То есть на какое ТЗ программист сможет с уверенностью сказать: да, лучше всего будет написать этот проект на Асме.
Post #: 139
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 20:20:07.720000   
SmanxX1

Сообщений: 208
Оценки: 0
Присоединился: 2007-07-31 14:33:56.650000
quote:

собеседники имеют возможность отвечать именно на те реплики, которые к ним были адресованы

Да? Фантастика! :D:D:D
quote:

вот твоё сообщение про "бессмысленный трёп" - это как раз флуд

Это не флуд. Это оффтоп. xDDD
quote:

ибо смысловая нагрузка для всех, кроме тебя - нулевая

Может наоборот?
Post #: 140
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 20:30:45.320000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: SmanxX1

Да? Фантастика! :D:D:D


честное слово! сам видел!

quote:

ORIGINAL: SmanxX1

Это не флуд. Это оффтоп. xDDD


пока было одно сообщение - может и оффтоп. сейчас уже флуд

quote:

ORIGINAL: SmanxX1

Может наоборот?


то есть ты сам не понимаешь что говоришь? ну тогда тебе не сюда, а в дом с решётками на окнах и добрыми медсёстрами с печальными глазами

по существу есть что сказать?
Post #: 141
RE: актуальность применения языка ассемблера в современном мире - 2008-11-19 13:52:07.026666   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
quote:


Если человек пишет на C#, это ещё не значит, что он не знает Ассемблер и не понимает, как работает машина. Железная которая, не виртуальная.


не спорю, если человек - сишарпер, это ещё не говорит со 100% вероятностью о том, что он не ничего не понимает в работе процессора, но с вероятностью в 99% это можно утверждать наверняка.

quote:


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


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

quote:


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


алгоритм
формат данных

задача - реализация кодека под ATmega16, дополнительная цель - максимальное быстродействие (40-60 тактов на сэмпл).
Post #: 142
RE: актуальность применения языка ассемблера в современном мире - 2008-11-19 17:30:37.983333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: redsh

не спорю, если человек - сишарпер, это ещё не говорит со 100% вероятностью о том, что он не ничего не понимает в работе процессора, но с вероятностью в 99% это можно утверждать наверняка.

Твои догадки, я пол часа назад спорил о правильности уравниловки базовых типов и классов в С# с человеком, который превосходно знает С++ и может с точностью до инструкции рассказать, во что транслируется, например, добавление числа в список int'ов.

quote:


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

Если у человека что-то хорошо получается, то оно ему, как правило, нравится. Или даже не так. Если тебе что-то не нравится, делай это больше, и оно тебе понравится. Вопрос только в том, что будет, если ты одинаково хорошо пишешь и на Ассемблере, и на С#?

quote:


алгоритм
формат данных

Вооот, это уже ближе к делу. Не конкретно этот кодек или этот алгоритм, а вообще мультимедиа. Не скажу, что Асм там однозначно рулит, но применить его наверняка есть где. Однако, ты сам сказал, что максимальное быстродействие - это всего лишь дополнительная цель, а значит можно было то же самое сделать и на других языках. Не так ли?
Post #: 143
RE: актуальность применения языка ассемблера в современном мире - 2008-11-19 21:31:13.356666   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
quote:


Если у человека что-то хорошо получается, то оно ему, как правило, нравится. Или даже не так. Если тебе что-то не нравится, делай это больше, и оно тебе понравится. Вопрос только в том, что будет, если ты одинаково хорошо пишешь и на Ассемблере, и на С#?


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

quote:


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


конечно, даже ОС можно написать хоть на бейсике.

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

ззы. и ещё раз скажу, что одно дело - просто решить задачу, а другое - решить задачу хорошо. для кого-то может быть, это и не столь важно, но как я уже говорил, я не профессиональный быдлокодер, а любитель и потому для меня всё ещё есть разница.
Post #: 144
RE: актуальность применения языка ассемблера в современном мире - 2008-11-19 22:45:42.850000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: redsh

ты думаешь, я очень много пишу на Асме, поэтому он мне так нравится? не угадал.

Таки подучи логику. Круги Эйлера. Утверждение, что если ты будешь много заниматься каким-то делом, то рано или поздно оно тебе понравится не равносильно утверждению, что если тебе что-то нравится, то ты этим много занимаешься.

quote:

хотя глупо писать на Асме то, для чего предназначен паскаль, ещё более глупо писать на паскале то, для чего предназначен Асм.

И к чему это было?

quote:


конечно, даже ОС можно написать хоть на бейсике.

То есть Колибри, по твоему, всё-таки самая крутая Ось?

quote:


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

Плохое сравнение, очень плохое. Тем более в контексте последнего предложения. Если ты не заметил, все 4 страницы топика мы и пытаемся выяснить, какие гвозди лучше всего забивать таким "молотком".


quote:

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

О, какое интересное словосочетания - "профессиональный быдлокодер". Это как вообще?

Post #: 145
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 00:01:03.366666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: kreol

Плохое сравнение, очень плохое. Тем более в контексте последнего предложения. Если ты не заметил, все 4 страницы топика мы и пытаемся выяснить, какие гвозди лучше всего забивать таким "молотком".


или какие альтернативы у него могут быть. я приводил в треде nesC (для TinyOS), Forth (для микроконтроллеров), могу привести ещё несколько. сравнений в эффективности не было. может кто-то хочет поговорить на эту тему?

кстати, что там с выделением памяти на стеке с помощью ассемблерной вставки? про меня забыли или просто пива жалко? ;)
Post #: 146
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 07:31:50.966666   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000

quote:


Плохое сравнение, очень плохое. Тем более в контексте последнего предложения. Если ты не заметил, все 4 страницы топика мы и пытаемся выяснить, какие гвозди лучше всего забивать таким "молотком".


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

зы. надеюсь, ты разберёшься в этом сравнении и не будешь опять обсирать мою логику.

ззы. и ещё одно: когда были разработаны компы, все поняли, что 10-чная система счисления не рулит и придумали двоичный код. для двоичного кода определили набор нужных операций - сдвиги, бинарные и арифметические операции и т.п. и всем стало хорошо, задачки решались легко. но потом до компов добрались теоретики и всё как всегда скатилось в жопу. ибо математик в силу своей тупости не способен понять, что операция может возвращать сразу несколько результатов, что операции бывают не только бинарные и унарные, а с тремя и более аргументами, что что комп работает не с числами, а с данными, что память - не счёты, а просто куча байт, ну и множество других вещей. отсюда и кривизна всех "классических" ЯВУ (кроме Си). кроме того, многие очень удобные и важные особенности архитектуры компа оказались забытыми и частично используются только компилятором для собственных нужд, а программисту на ЯВУ приходится сочинять всевозможные извращения, чтобы получить то, что у него отобрала логика языка. в общем, даже нарисовал тебе твои любимые диаграммы Эйлера.

Post #: 147
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 16:06:52.913333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: redsh

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

Такую чушь сейчас спорол. Что для тебя обычные гвозди современного программирования? Сложить два числа, ограничив их по рамкам типа? Обычные проблемы для программирования сейчас - это, например, написать XML-парсер, веб-сервер, сайт, программы автоматизации систем на производстве, системные утилиты, базы данных… И для чего из этих задач ты будешь использовать Ассемблер? Я же тебя специально спросил, какие гвозди ты будешь забивать таким  асмовским молотком? А ты говоришь, обычные.
И если ты не заметил, то замечание про логику относилось не к молотку. Научись в конце концов читать мои ответы, мне надоело по 100 раз повторять одно и то же.

quote:


ззы. и ещё одно: когда были разработаны компы, все поняли, что 10-чная система счисления не рулит и придумали двоичный код. для двоичного кода определили набор нужных операций - сдвиги, бинарные и арифметические операции и т.п. и всем стало хорошо, задачки решались легко. но потом до компов добрались теоретики и всё как всегда скатилось в жопу. ибо математик в силу своей тупости не способен понять, что операция может возвращать сразу несколько результатов, что операции бывают не только бинарные и унарные, а с тремя и более аргументами, что что комп работает не с числами, а с данными, что память - не счёты, а просто куча байт, ну и множество других вещей. отсюда и кривизна всех "классических" ЯВУ (кроме Си). кроме того, многие очень удобные и важные особенности архитектуры компа оказались забытыми и частично используются только компилятором для собственных нужд, а программисту на ЯВУ приходится сочинять всевозможные извращения, чтобы получить то, что у него отобрала логика языка. в общем, даже нарисовал тебе твои любимые диаграммы Эйлера.

Когда появились компы, появилась двоичная логика. Была ещё троичная, но её сочли экономически невыгодной, и отказались. Эффективно реализовать десятичную логику не представлялось возможным (да и сейчас как ты ячейке памяти задашь 10 возможных значений, чтобы их можно было достаточно эффективно различать). А 10-ую систему счисления просто построили поверх двочиной, построили её для человека, чтобы человеку было удобно, а не компьютеру. И в таком направлении люди двигались всю историю развития компьютерной техники - они хотели приспособить компьютер для человека, а не человека для компьютера. А ты упорно стремишься в обратном направлении, считая, что на первом месте должен быть компьютер, а не человек. Если так, то нахрена он вообще нужен?
И если ты забыл, то процедуры в ЯВУ могут возвращать сколько угодно результатов, а Лисп может их возвращать и как результат выполнения функции. Те же математические функции зачастую возвращают сразу несколько результатов, например, результат деления и остаток от него. И Лисп, и С++, позволяют принимать на вход несколько операндов, например, функця "+" на Лиспе по определению принимает сколько угодно операндов: (+ 3 5 7 9) ==> 24.
И круги Эйлера ты нарисовал исходя из своих неверных понятий, о который я тебе уже столько времени говорю. Так что перестань пороть чушь и определись наконец, ты используешь компьютер, или он тебя.
Post #: 148
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 17:11:54.986666   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
во-первых, мы с компом в симбиозе)) во-вторых, троичная логика, big endian, и прочая фигня - темы для отдельных holywar'ов, тебе лучше бы их и не упоминать.

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

зы.

quote:


И если ты забыл, то процедуры в ЯВУ могут возвращать сколько угодно результатов, а Лисп может их возвращать и как результат выполнения функции. Те же математические функции зачастую возвращают сразу несколько результатов, например, результат деления и остаток от него. И Лисп, и С++, позволяют принимать на вход несколько операндов, например, функця "+" на Лиспе по определению принимает сколько угодно операндов: (+ 3 5 7 9) ==&gt; 24.

ты меня не понял. я говорю о том, что как бы ты ни оптимизировал программу на ЯВУ, всё равно большая часть возможностей процессора не будет использована, поскольку ЯВУ исключает всё, что не вписывается в так называемую "математическую нотацию", что я и показал на диаграммах. попробуй, например, переписать на Си пример из 129-го поста.
Post #: 149
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 17:25:18.896666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: redsh

ззы. и ещё одно: когда были разработаны компы, все поняли, что 10-чная система счисления не рулит и придумали двоичный код. для двоичного кода определили набор нужных операций - сдвиги, бинарные и арифметические операции и т.п. и всем стало хорошо, задачки решались легко. но потом до компов добрались теоретики и всё как всегда скатилось в жопу. ибо математик в силу своей тупости не способен понять, что операция может возвращать сразу несколько результатов, что операции бывают не только бинарные и унарные, а с тремя и более аргументами, что что комп работает не с числами, а с данными, что память - не счёты, а просто куча байт, ну и множество других вещей. отсюда и кривизна всех "классических" ЯВУ (кроме Си). кроме того, многие очень удобные и важные особенности архитектуры компа оказались забытыми и частично используются только компилятором для собственных нужд, а программисту на ЯВУ приходится сочинять всевозможные извращения, чтобы получить то, что у него отобрала логика языка. в общем, даже нарисовал тебе твои любимые диаграммы Эйлера.


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

строчная обработка на Perl - это извращение, надо было на ассемблере. событийно-ориентированная система на Tcl - извращение, надо было на ассемблере. криптографические системы на Haskell - опять же извращение, надо было на ассемблере. ну или хотя бы прошивку для марсохода надо было писать не на LISP, а на C. вот тогда-то уж точно настало бы вселенское счастье!

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

по поводу выпада в сторону математиков, почитай хотя бы Шеннона, не позорься:

http://en.wikipedia.org/wiki/Entropy_(information_theory)
Post #: 150
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 17:46:03.873333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: redsh

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


вот это, собственно, и есть главная твоя ошибка. и CERNLib не просто так написан не на ассемблере, и ZeroC ICE, и GAMESS - и прочие системы, в которых проектное требование "получить не просто хороший, но лучший результат". ты этого не понимаешь, потому что у тебя очень большой пробел как раз в математических знаниях

мой тебе совет - почитай на досуге Кнута, почитай Дийкстру, Кормена в конце-концов. почитай SICP, оцени подход к оптимизации там. и только после этого делай подобные заявления. если ещё будет желание
Post #: 151
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 17:48:15.093333   
Fenrisulfr

Сообщений: 10
Оценки: 0
Присоединился: 2008-11-20 17:43:14.200000
Луше сделать просто, а не по-умному.
Выводы делайте сами.
Post #: 152
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 18:09:50.383333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Fenrisulfr

Луше сделать просто, а не по-умному.
Выводы делайте сами.


вывод - ты идиот. доволен?
Post #: 153
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 18:19:06.793333   
Fenrisulfr

Сообщений: 10
Оценки: 0
Присоединился: 2008-11-20 17:43:14.200000
quote:

ORIGINAL: Denaturat

вывод - ты идиот. доволен?


Нет. Идиот - ты, раз не понимаешь таких простых слов. Ты ущербен.
Да и почти все в этой теме ущербны. Метаются туда-сюда, определится не могут. Сами себе не верят.
Здесь буквально 2-3 человека труЪ. Остальные Denaturat-like, обычные ущербные балаболы.
Виндусятники!


А смысл моего сообщения - делать задачу теми средствами, которыми проще, а не понтовее.
Есть еще одна мудрая поговорка: Хочешь что-то написать - пиши на C. Нельзя на C - пиши на ассемблере.
Post #: 154
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 18:59:48.730000   
linuxoid

Сообщений: 87
Оценки: 0
Присоединился: 2007-04-15 11:11:15.030000
quote:



зы.

quote:


И если ты забыл, то процедуры в ЯВУ могут возвращать сколько угодно результатов, а Лисп может их возвращать и как результат выполнения функции. Те же математические функции зачастую возвращают сразу несколько результатов, например, результат деления и остаток от него. И Лисп, и С++, позволяют принимать на вход несколько операндов, например, функця "+" на Лиспе по определению принимает сколько угодно операндов: (+ 3 5 7 9) ==&gt; 24.

ты меня не понял. я говорю о том, что как бы ты ни оптимизировал программу на ЯВУ, всё равно большая часть возможностей процессора не будет использована, поскольку ЯВУ исключает всё, что не вписывается в так называемую "математическую нотацию", что я и показал на диаграммах. попробуй, например, переписать на Си пример из 129-го поста.


Использовать возможности процессора - задача компилятора, при условии, конечно, что конструкции языка поддерживают хорошую кодогенерацию. Посмотри на досуге, во что компилируются модули оберона (особенно XDS-компилятором ;)).

P. S. Ну и нафлудили! :)
Post #: 155
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 19:01:02.980000   
linuxoid

Сообщений: 87
Оценки: 0
Присоединился: 2007-04-15 11:11:15.030000

quote:

ORIGINAL: Fenrisulfr

quote:

ORIGINAL: Denaturat

вывод - ты идиот. доволен?


Нет. Идиот - ты, раз не понимаешь таких простых слов. Ты ущербен.
Да и почти все в этой теме ущербны. Метаются туда-сюда, определится не могут. Сами себе не верят.
Здесь буквально 2-3 человека труЪ. Остальные Denaturat-like, обычные ущербные балаболы.
Виндусятники!


А смысл моего сообщения - делать задачу теми средствами, которыми проще, а не понтовее.
Есть еще одна мудрая поговорка: Хочешь что-то написать - пиши на C. Нельзя на C - пиши на ассемблере.


Здоров ли ты, друг?
Post #: 156
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 19:06:41.530000   
Fenrisulfr

Сообщений: 10
Оценки: 0
Присоединился: 2008-11-20 17:43:14.200000

quote:

ORIGINAL: linuxoid

Здоров ли ты, друг?


Блин. Какие же вы все недальновидные.
Post #: 157
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 19:43:31.200000   
linuxoid

Сообщений: 87
Оценки: 0
Присоединился: 2007-04-15 11:11:15.030000
Поясни. Не понял, в чем недальновидность?
Post #: 158
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 20:39:40.316666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
да-да, мне тоже интересно
Post #: 159
RE: актуальность применения языка ассемблера в современном мире - 2008-11-21 04:50:58.830000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
Ее уже закрепили.. фигасе.
А ведь я дал в ответ в самом начале топа, а прочий флуд вообще к теме не относится.

quote:

ORIGINAL: kolPeeX

2денатурат

Архитектурно-зависимый код пишется на ассемблере (ну-ка, напиши мне переход в защищенный режим на си).
Редактировать приложения можно в большинсте случаев только зная ассемблер.

Вот и почти вся область применения ныне.
А ЯВУ - это абстракция над ассемблером. ЯВУ не используют многие низкоуровневые команды.
Да если б ЯВУ могла ПОЛНОСТЬЮ заменить ассемблер, то в них не был бы предусмотрен inline-ассемблер.
Post #: 160
Страниц:  1 2 3 [4] 5 6 7 8 9
Все форумы >> [Прочее] >> RE: актуальность применения языка ассемблера в современном мире







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.