RE: актуальность применения языка ассемблера в современном мире
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-16 20:54:04.866666
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
quote:
ORIGINAL: il0dbg Приводи. Только очень бы хотелось увидеть код. Ну так именно без кода, а так, кто-то что-то не мог написать, а потом пришёл другой, взял и написал. Точно такие же примеры, как redsh привёл. Их куча.
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-16 21:40:52.760000
|
|
|
il0dbg
Сообщений: 66
Оценки: 0
Присоединился: 2007-10-30 01:32:31.366666
|
quote:
Ну так именно без кода, а так, кто-то что-то не мог написать, а потом пришёл другой, взял и написал. Точно такие же примеры, как redsh привёл. Их куча. Я понял, что ты имеешь ввиду. Товарищ Denaturat, вопрос к тебе: А ты знаешь ассемблер? Потому что многие люди, не знающие какой-либо области, пытаются доказать, что эта область не нужна. Потому что учить не хочется. Хороший программист должен знать внутренности среды, под которую он пишет. Я не отрицаю, что языки высокого уровня более удобны и более продуктивны, но без знаний Ассемблера мне было бы очень сложно.
|
|
|
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);
}
//----------------------------------------------------------
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 07:12:40.353333
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
Блин, ну и что мне с этим сорцом делать? Я тебя о чём просил? Я тебя просил привести мне код твоего знакомого и показать, что именно в нём может придумать только человек с прокуренными Ассемблером мозгами, а прикладники не могут. А ты мне что приводишь? Кусок своего кода, который вообще здесь не при чём. Или ты думаешь, что я ассемблерных вставок не видел? Ещё раз говорю: приведи мне хоть один аргумент в пользу того, что люди, привыкшие писать на языках ВУ не могут нормально написать программу на низком уровне. Или хотя бы не аргумент, а пример того, как это было. А то твой пример с несколькими чуваками, которые облажались, и одним, который не облажался, как-то не очень показателен, знаешь ли.
|
|
|
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
|
|
|
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 а свой сорц я тебе привёл, потому что он работает эффективнее аналога на языке ВУ, а это сабж всего топика. Вопрос был не в эффективности, а в актуальности применения, насколько я понял из темы. И если твой код даёт выйгрыш в скорости, думаю, он минимален.
|
|
|
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 раз дольше.
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 16:25:28.616666
|
|
|
JTG
Сообщений: 1189
Оценки: 0
Присоединился: 2007-03-05 11:56:01.993333
|
Прочёл всё (!) с трудом :) Denaturat кажись помешан на переносимости, этим и обьясняется его асмо-ненависть :D Рекомендую почитать wasm (оптимизация для процессоров семейства Pentium) ну и "Техника оптимизации программ" Мыщьх`а
|
|
|
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))
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 18:29:50.320000
|
|
|
il0dbg
Сообщений: 66
Оценки: 0
Присоединился: 2007-10-30 01:32:31.366666
|
Да, Крис хороший автор. Очень его уважаю. Человек - компьютер.
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-17 18:34:36.913333
|
|
|
redsh
Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
|
quote:
ORIGINAL: il0dbg Да, Крис хороший автор. Очень его уважаю. Человек - компьютер. +4))
|
|
|
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 строчках). И, да, ещё раз повторяю, вопрос темы был не в том, как написать наиболее быструю программу, а в том, насколько актуально применение Ассемблера. Даже если ты точно знаешь, что на Асме твоя программа будет работать быстрее, то всё равно на аналог, например, на Си, ты наверняка потратишь меньше времени, сил и денег. Так вот вопрос в том, где скорость работы программы перевешивает скорость и удобство разработки.
|
|
|
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 -> 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 <- 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) <- 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 <- 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]
}
}
прикол этого кода в том, что хотя он реализован плохо, на ЯВУ как бы ты не старался, ты сделаешь ещё хуже и потратишь гораздо больше времени. з.ы. кстати, не всегда усилия на разработку чего либо прямо пропорциональны потраченому времени
|
|
|
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) ну и "Техника оптимизации программ" Мыщьх`а да, прочитать четыре страницы - это очень сложно. где ты, кстати, мою "асмо-ненависть" нашёл?
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 18:54:09.983333
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: il0dbg Цель - уменьшение времени на выделение памяти Простая арифметика - посчитай, сколько здесь ассемблерных команд, и дизассемблируй malloc - уже, даже не считая внутренностей HeapAlloc, кода получается гораздо больше, нежели чем здесь,а если считать иерархию дальнейших вызовов - получится в разы больше. сильно сомневаюсь, что именно это место было bottleneck'ом в исходной задаче. дай ТЗ полностью - разомнём кости :) ставлю пиво что напишу более эффективный по времени вариант даже на C++, дай только задачу полностью - откуда берётся размер матрицы и для чего она используется
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 18:57:20
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: il0dbg Товарищ Denaturat, вопрос к тебе: А ты знаешь ассемблер? Потому что многие люди, не знающие какой-либо области, пытаются доказать, что эта область не нужна. Потому что учить не хочется. Хороший программист должен знать внутренности среды, под которую он пишет. Я не отрицаю, что языки высокого уровня более удобны и более продуктивны, но без знаний Ассемблера мне было бы очень сложно. да я вообще начинающий, так - всего по мелочам :) да, обращаю ещё раз внимание на то, что о пользе знания ассемблера целевой архитектуры я вообще ничего не писал. мой вопрос - о применении ассемблера в разработке. разница понятна?
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-18 19:40:00
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: SmanxX1 Мне вообщем-то уже плевать на эту тему, т.к. пошел бессмысленный треп, но… Denaturat Ты не в чате!! Это форум, и не нужно здесь писать по 4 сообщения подряд, для этого есть кнопочка и что? я отвечаю на разные сообщения, по мере их прочтения мной. все ответы (более-менее) по существу - не флуд, не спам, не копипаста. зато и собеседники имеют возможность отвечать именно на те реплики, которые к ним были адресованы вот твоё сообщение про "бессмысленный трёп" - это как раз флуд, ибо смысловая нагрузка для всех, кроме тебя - нулевая
|
|
|
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, не потратил никаких усилий и получил эстетическое удовольствие). А я тебе могу привести десяток кусков кода, который исключительно легко (и даже эффективно) реализуется на языках ВУ (хочешь увидеть быструю сортировку в двух строчках?). Ну и что с этого? Мы говорим про задачи, а не про куски кода. И сложить два числа, ограничив их по рамкам значения типа - это не задача, это одна из частей решения какой-то задачи. А уж какой именно, будь добр, раскажи. И если она действительно не может быть решена на ЯВУ, то я соглашусь, что в этом конкретном случае Ассемблер незаменим. А если ты ещё и выделишь класс таких задач, то может мы наконец увидим сферу применения Асма. А то как-то на микроконтроллерах и остановились (да и они, по большому счёту, не приговорены программироваться на Ассемблере, даже тот же высокоуровневый и абстрактный Оберон уже существует для нескольких популярных моделей микроконтроллеров). Так что жду задачи. Такой, которая формулируется техническим заданием, а не кусками кода. Пы.Сы. Почему-то все фанаты Асма в этой теме воспринимают её как наезд на этот язык, вызов всем программистам на низкоуровневых языках, в то время как был поставлен исследовательский вопрос о том, где сегодня Ассемблер всё ещё занимает лидирующее место (по крайней мере, я так понял вопрос автора). То есть на какое ТЗ программист сможет с уверенностью сказать: да, лучше всего будет написать этот проект на Асме.
|
|
|
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:
ибо смысловая нагрузка для всех, кроме тебя - нулевая Может наоборот?
|
|
|
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 Может наоборот? то есть ты сам не понимаешь что говоришь? ну тогда тебе не сюда, а в дом с решётками на окнах и добрыми медсёстрами с печальными глазами по существу есть что сказать?
|
|
|
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 тактов на сэмпл).
|
|
|
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:
алгоритм формат данных Вооот, это уже ближе к делу. Не конкретно этот кодек или этот алгоритм, а вообще мультимедиа. Не скажу, что Асм там однозначно рулит, но применить его наверняка есть где. Однако, ты сам сказал, что максимальное быстродействие - это всего лишь дополнительная цель, а значит можно было то же самое сделать и на других языках. Не так ли?
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-19 21:31:13.356666
|
|
|
redsh
Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
|
quote:
Если у человека что-то хорошо получается, то оно ему, как правило, нравится. Или даже не так. Если тебе что-то не нравится, делай это больше, и оно тебе понравится. Вопрос только в том, что будет, если ты одинаково хорошо пишешь и на Ассемблере, и на С#? ты думаешь, я очень много пишу на Асме, поэтому он мне так нравится? не угадал. хотя я и написал на нём несколько больших проектов, в основном я использую ассемблерные вставки, а это совсем немного кода. возможно, по объёму кода, я даже на паскале написал больше, чем на Асме)) но это ни на что не влияет. ибо хотя глупо писать на Асме то, для чего предназначен паскаль, ещё более глупо писать на паскале то, для чего предназначен Асм. quote:
ты сам сказал, что максимальное быстродействие - это всего лишь дополнительная цель, а значит можно было то же самое сделать и на других языках конечно, даже ОС можно написать хоть на бейсике. зы. в общем, Асм можно сравнить с молотком: хотя одни кричат, что, что молоток не моден, ибо это прошлый век, другие, что никто уже не занимается забиванием гвоздей и молоток пора выкинуть на помойку, третьи, что забивание гвоздей - не задача, а только её часть и требовать показать задачу, которую нельзя было бы решить, не забив ни одного гвоздя, четвёртые - утверждать, что всё, что можно прибить гвоздями можно с таким же успехам приклеить на сопли… всегда найдутся упрямые люди, которые вопреки мнению толпы обывателей будут пользоваться тем, что лучше всего подходит для решения поставленой задачи. ззы. и ещё раз скажу, что одно дело - просто решить задачу, а другое - решить задачу хорошо. для кого-то может быть, это и не столь важно, но как я уже говорил, я не профессиональный быдлокодер, а любитель и потому для меня всё ещё есть разница.
|
|
|
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:
ззы. и ещё раз скажу, что одно дело - просто решить задачу, а другое - решить задачу хорошо. для кого-то может быть, это и не столь важно, но как я уже говорил, я не профессиональный быдлокодер, а любитель и потому для меня всё ещё есть разница. О, какое интересное словосочетания - "профессиональный быдлокодер". Это как вообще?
|
|
|
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 (для микроконтроллеров), могу привести ещё несколько. сравнений в эффективности не было. может кто-то хочет поговорить на эту тему? кстати, что там с выделением памяти на стеке с помощью ассемблерной вставки? про меня забыли или просто пива жалко? ;)
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 07:31:50.966666
|
|
|
redsh
Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000
|
quote:
Плохое сравнение, очень плохое. Тем более в контексте последнего предложения. Если ты не заметил, все 4 страницы топика мы и пытаемся выяснить, какие гвозди лучше всего забивать таким "молотком". обычные гвозди: железные, острые, с шляпкой. и их лучше забивать молотком, а не наручными часами (даже несмотря на то, что носить часы "круче", чем носить молоток) зы. надеюсь, ты разберёшься в этом сравнении и не будешь опять обсирать мою логику. ззы. и ещё одно: когда были разработаны компы, все поняли, что 10-чная система счисления не рулит и придумали двоичный код. для двоичного кода определили набор нужных операций - сдвиги, бинарные и арифметические операции и т.п. и всем стало хорошо, задачки решались легко. но потом до компов добрались теоретики и всё как всегда скатилось в жопу. ибо математик в силу своей тупости не способен понять, что операция может возвращать сразу несколько результатов, что операции бывают не только бинарные и унарные, а с тремя и более аргументами, что что комп работает не с числами, а с данными, что память - не счёты, а просто куча байт, ну и множество других вещей. отсюда и кривизна всех "классических" ЯВУ (кроме Си). кроме того, многие очень удобные и важные особенности архитектуры компа оказались забытыми и частично используются только компилятором для собственных нужд, а программисту на ЯВУ приходится сочинять всевозможные извращения, чтобы получить то, что у него отобрала логика языка. в общем, даже нарисовал тебе твои любимые диаграммы Эйлера.
|
|
|
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. И круги Эйлера ты нарисовал исходя из своих неверных понятий, о который я тебе уже столько времени говорю. Так что перестань пороть чушь и определись наконец, ты используешь компьютер, или он тебя.
|
|
|
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) ==> 24. ты меня не понял. я говорю о том, что как бы ты ни оптимизировал программу на ЯВУ, всё равно большая часть возможностей процессора не будет использована, поскольку ЯВУ исключает всё, что не вписывается в так называемую "математическую нотацию", что я и показал на диаграммах. попробуй, например, переписать на Си пример из 129-го поста.
|
|
|
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)
|
|
|
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, оцени подход к оптимизации там. и только после этого делай подобные заявления. если ещё будет желание
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 17:48:15.093333
|
|
|
Fenrisulfr
Сообщений: 10
Оценки: 0
Присоединился: 2008-11-20 17:43:14.200000
|
Луше сделать просто, а не по-умному. Выводы делайте сами.
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 18:09:50.383333
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: Fenrisulfr Луше сделать просто, а не по-умному. Выводы делайте сами. вывод - ты идиот. доволен?
|
|
|
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 - пиши на ассемблере.
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 18:59:48.730000
|
|
|
linuxoid
Сообщений: 87
Оценки: 0
Присоединился: 2007-04-15 11:11:15.030000
|
quote:
зы. quote:
И если ты забыл, то процедуры в ЯВУ могут возвращать сколько угодно результатов, а Лисп может их возвращать и как результат выполнения функции. Те же математические функции зачастую возвращают сразу несколько результатов, например, результат деления и остаток от него. И Лисп, и С++, позволяют принимать на вход несколько операндов, например, функця "+" на Лиспе по определению принимает сколько угодно операндов: (+ 3 5 7 9) ==> 24. ты меня не понял. я говорю о том, что как бы ты ни оптимизировал программу на ЯВУ, всё равно большая часть возможностей процессора не будет использована, поскольку ЯВУ исключает всё, что не вписывается в так называемую "математическую нотацию", что я и показал на диаграммах. попробуй, например, переписать на Си пример из 129-го поста. Использовать возможности процессора - задача компилятора, при условии, конечно, что конструкции языка поддерживают хорошую кодогенерацию. Посмотри на досуге, во что компилируются модули оберона (особенно XDS-компилятором ;)). P. S. Ну и нафлудили! :)
|
|
|
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 - пиши на ассемблере. Здоров ли ты, друг?
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 19:06:41.530000
|
|
|
Fenrisulfr
Сообщений: 10
Оценки: 0
Присоединился: 2008-11-20 17:43:14.200000
|
quote:
ORIGINAL: linuxoid Здоров ли ты, друг? Блин. Какие же вы все недальновидные.
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 19:43:31.200000
|
|
|
linuxoid
Сообщений: 87
Оценки: 0
Присоединился: 2007-04-15 11:11:15.030000
|
Поясни. Не понял, в чем недальновидность?
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-20 20:39:40.316666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
да-да, мне тоже интересно
|
|
|
RE: актуальность применения языка ассемблера в современном мире - 2008-11-21 04:50:58.830000
|
|
|
kolPeeX
Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
|
Ее уже закрепили.. фигасе. А ведь я дал в ответ в самом начале топа, а прочий флуд вообще к теме не относится. quote:
ORIGINAL: kolPeeX 2денатурат Архитектурно-зависимый код пишется на ассемблере (ну-ка, напиши мне переход в защищенный режим на си). Редактировать приложения можно в большинсте случаев только зная ассемблер. Вот и почти вся область применения ныне. А ЯВУ - это абстракция над ассемблером. ЯВУ не используют многие низкоуровневые команды. Да если б ЯВУ могла ПОЛНОСТЬЮ заменить ассемблер, то в них не был бы предусмотрен inline-ассемблер.
|
|
|
|
|