akorop |
|
Темы:
111
Сообщения:
1755
Участник с: 29 февраля 2012
|
farwayerА сколько будет стоить падение такой программы? Или задержка внедрения новой фичи? Вот уж где ассемблером и не пахнет, я думаю, так это в подобных областях. Интересно было бы узнать реальное положение, а не имхами мериться.akorop vasekАбсолютно фантастическая ситуация. Во-первых, выбран очень уж специальный момент: партию уже изготовили, но ещё не продали. Потому что если раньше, то таки надо перепроектировать, а если позже, то уже поздно менять программу (а предложить пользователям самим перешить контроллер - это антиреклама). Во-вторых, в серьёзном производстве замена программы подразумевает такую кучу затрат, что на этом фоне цена выпущенной партии может и не быть заметной. В общем, если уж посчастливилось заметить такую плюху до того, как пользователи взвыли, то надо или или тихо выкинуть эту партию нафиг, или как-то иначе промаркировать и продавать как "младшую модель". А в основной серии поставить адекватный контроллер. vasekНет, не лежит. Вернее, может и лежать (в смысле, C транслирует не прямо в объектный файл, а в ассемблер), но это недостаток компилятора, и программисту об этом знать совершенно не нужно. vasekЕсли уж на то пошло, то программа для современного x86 процессора - это фактически байт-код, только интерпретируется он не программно, а аппаратно. И ручная оптимизация, по-хорошему, должна учитывать тонкие свойства именно этого интерпретатора (прежде всего, что с чем он может параллелить). А свойства эти, к тому же, постоянно меняются от модели к модели. Поэтому если нужна оптимизация под что-то очень конкретное, то надо не дурью маяться с ассесблером, а указать целевой процессор оптимизирующему компилятору. Вообще, вычислительная эффективность ассемблерных программ - это сказочка для маленьких детей и больших начальников. В реальности даже хорошему программисту при программировании на ассемблере приходится столько времени тратить на мелочи, что серьёзной оптимизацией заниматься уже некогда. А уж программистам пожиже и вовсе не до оптмизации, им бы добиться, чтобы программа не падала. Повторюсь. Единственное осмысленное использование ассемблера - это крохотные вставки в программе на ЯВУ. И цель этих вставок - не повышение вычислительной эффективности самой вставки, а реализация чего-то такого, что в языке выразить нечем. Следствием может стать и вычислительная эффектиыность, но не за счёт этих команд, а за счёт появившейся возможности упростить программу в целом или использовать более эффективный алгоритм. А что касается спроса, то я погуглил маленько, и первые же ссылки (например, тут и тут) показали, вполне ожидаемо, что спроса на ассемблер-программистов нет вообще. Понятно, что где-то кто-то и на ассемблере пишет, и ему, наверно, нехило платят, но целиться стать ассемблер-программистом - это примерно как готовиться в космонавты. В общем, ассемлер - зло. Иногда это наименьшее из зол, но очень-очень редко. |
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
akorop - приписал мне высказывания, которые я не делал, нужно быть внимательнее.
Ошибки не исчезают с опытом - они просто умнеют
|
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
akoropНу надо было так сразу и писать, зачем тянуть кота за хвост? :)) P.S. Заглянем в код хороших оптимизированных кодеков. x264 : $ grep -irl asm extras/gas-preprocessor.pl common/cpu.c common/sparc/pixel.asm common/x86/dct-64.asm common/x86/predict-c.c common/x86/mc-a.asm common/x86/pixel-32.asm common/x86/bitstream-a.asm common/x86/sad-a.asm common/x86/pixel-a.asm common/x86/sad16-a.asm common/x86/x86util.asm common/x86/util.h common/x86/quant-a.asm common/x86/predict-a.asm common/x86/deblock-a.asm common/x86/const-a.asm common/x86/x86inc.asm common/x86/cpu-a.asm common/x86/dct-32.asm common/x86/trellis-64.asm common/x86/cabac-a.asm common/x86/mc-a2.asm common/x86/dct-a.asm common/osdep.h common/cabac.c common/cabac.h common/set.c common/cpu.h common/arm/deblock-a.S common/arm/cpu-a.S common/arm/predict-a.S common/arm/dct-a.S common/arm/pixel-a.S common/arm/mc-a.S common/arm/asm.S common/arm/quant-a.S common/dct.c common/mc.c common/pixel.c common/common.c x264.c AUTHORS tools/checkasm.c tools/checkasm-a.asm doc/standards.txt encoder/encoder.c encoder/me.c .gitignore Makefile configure LAME mp3: $ grep -irl asm libmp3lame/fft.c libmp3lame/quantize_pvt.c libmp3lame/lame.c libmp3lame/i386/fftsse.nas libmp3lame/i386/nasm.h libmp3lame/i386/ffttbl.nas libmp3lame/i386/fftfpu.nas libmp3lame/i386/fft3dn.nas libmp3lame/i386/fft.nas libmp3lame/i386/cpu_feat.nas libmp3lame/i386/Makefile.am libmp3lame/i386/choose_table.nas libmp3lame/i386/Makefile.in libmp3lame/i386/scalar.nas libmp3lame/util.c libmp3lame/vector/xmm_quantize_sub.c libmp3lame/vector/Makefile.in libmp3lame/vbrquantize.c libmp3lame/Makefile.am libmp3lame/quantize.c libmp3lame/set_get.c libmp3lame/takehiro.c libmp3lame/Makefile.in libmp3lame/quantize_pvt.h libmp3lame/lame_global_flags.h configMS.h doc/html/history.html doc/html/detailed.html doc/html/links.html doc/html/Makefile.in doc/man/lame.1 doc/man/Makefile.in doc/Makefile.in configure.in frontend/parse.c frontend/Makefile.in misc/scalartest.c misc/Makefile.in ltmain.sh include/libmp3lame.sym include/Makefile.in include/lame.h include/lame.def Dll/Makefile.in lame.spec dshow/Makefile.in INSTALL vc_solution/vc9_lame_lame.vcproj vc_solution/vc9_nasm.rules vc_solution/vc9_lame_clients.sln vc_solution/vc9_lame_mp3x.vcproj vc_solution/vc9_lame.sln vc_solution/vc9_mpglib.vcproj vc_solution/vc9_libmp3lame.vcproj vc_solution/arch_nasm.vsprops vc_solution/vc9_libmp3lame_dll.vcproj vc_solution/Makefile.in vc_solution/vc9_lame_mp3rtp.vcproj ChangeLog lame.spec.in DEFINES debian/changelog debian/rules debian/control debian/Makefile.in mpglib/Makefile.in ACM/ddk/Makefile.in ACM/tinyxml/Makefile.in ACM/ADbg/Makefile.in ACM/Makefile.in Makefile.in mac/LAME.mcp mac/Makefile.in Makefile.unix config.h.in macosx/LAME.xcodeproj/Makefile.in macosx/English.lproj/Makefile.in macosx/Makefile.in configure Makefile.MSVC Можете также поискать аналогичные файлы в исходниках ядра Linux, особенно в новейших оптимизациях под ARM. Надо же – на дворе уже давно оптимизирующие компиляторы, а они зачем-то упорно кодят на ассмеблере. Может пойдёте их просвещать? :) |
naszar |
|
Темы:
21
Сообщения:
507
Участник с: 24 сентября 2012
|
akoropЗря вы так. Писать на нем, может и не нужно. Но знать нелишне. |
akorop |
|
Темы:
111
Сообщения:
1755
Участник с: 29 февраля 2012
|
NatrioТак таки заглянем. Обнаружил в PKGBUILD ключик --enable-nasm. Убрал и пересобрал. При этом действительно ни один ассемблерный файл не компилировался. Затем я взял от фонаря файл mp3, распаковал в WAV и обратно упаковал в MP3 дважды: при помощи lame из репозитария и при помощи свежесобранной lame без ассемлера. Время в секундах - одинаковое - 21 секунда. Спасибо за убедительный пример. NatrioНе пойду. На ассемблере кодят, чтобы ощутить свою крутость, тут просвещение бессильно. |
Aivar |
|
Темы:
4
Сообщения:
6897
Участник с: 17 февраля 2011
|
akoropУх ты... А я по простоте своей думал, что все это ради достижения максимально быстродействия, полного доступа к оборудованию и абсолютной компактности кода. Эвоно как... Оказывается я десять лет показывал кому-то (только не понятно кому) свою крутость. |
akorop |
|
Темы:
111
Сообщения:
1755
Участник с: 29 февраля 2012
|
AivarЧто-то всё в одной куче... Компактность и быстродействие - это изрядно противоречащие друг другу требования, а доступ к оборудованию от языка как вообще зависит?akoropУх ты... А я по простоте своей думал, что все это ради достижения максимально быстродействия, полного доступа к оборудованию и абсолютной компактности кода. AivarЕсли не секрет, для каких процессоров, какие задачи и когда пришлось так решать? Если, скажем, для какого-то из первых или убогих микропроцессоров, то куда ж деваться было... Скажем, я тоже для AVR AT90S1200 на ассемблере кодил, бо ничего другого нет. Да, бывают ситуации, когда ассемблерное программирование оправдано, а то и единственно возможно. Но среди фактически написанных на ассемблере программ это составляет очень малый процент. И этот процент неуклонно снижается. Так что наугад взятая ассемблерная программа почти наверняка окажется абсурдом, пример мы только что видели в lame. Кто-то покажет пример пользы от ассемблера? Только серьёзный пример, с цифрами или с анализом задачи. |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
akoropя под столом ))) это ж кто тебе такое сказал?
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
Кому то не нужен компьютер. Кому то не нужен ассемблер. Кто то в восторге от рюшечек в дельфи — но, главное, этим не нужен АССЕМБЛЕР. Но кто то упорно осваивает системное программирование, пишет кодогенераторы к транслятору, разрабатывает новые процессоры с нечеткой логикой (грубо говоря, не все есть четко 0 и 1, true и false - имеются и другие значения), обдумывает разработку процессоров совершенно нового типа, объектно-ориентированных процессоров и т.д. и т.п. ЭТИМ СПЕЦАМ, ну ни как не обойтись без низкоуровневого языка программирования (пока это ассемблер, в дальнейшем, возможно, он сменит свое название, но низкоуровневый язык программирования будет всегда). Точные примеры приводить не буду и не собираюсь — поищи сам.
Ошибки не исчезают с опытом - они просто умнеют
|
ivand |
|
Темы:
9
Сообщения:
477
Участник с: 04 января 2013
|
Кто-то покажет пример пользы от ассемблера?Посмотрите и сравните вызовы функций на паскале и на си, посчитайте |