Ассемблер жив или Ассемблер мертв

Ассемблер жив
18
Нейтральная
сторона
1
Ассемблер мертв
4
Быстрота
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!
Много кода

30-06-2010 12:07 0

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

6 комментариев
opera.rulez 30-06-2010 15:34 +1

Dobermann, Протестую! Скорость исполнения зависит не от языка, а от программиста. На ассемблере тоже можно написа́ть тормозной код. И на ЯВУ можно писа́ть оптимальный код.

Я голосую за ассемблер только потому, что в нём есть операции, которые могут отсутствовать в ЯВУ.

fhfh 30-06-2010 17:21 +1

opera.rulez, каждому языку - своя сфера применения, вот и всё.

opera.rulez 30-06-2010 17:40 +1

fhfh, Я это к тому, что в варе ключевое понятие — не скорость. Есть несколько примеров кода на ассемблере и на ЯВУ, в которых пример на ассемблере работает медленнее, потому что программист допустил несколько оплошностей. Понятно, что код высокого уровня компилируется в ассемблер, поэтому можно добиться одинаковой скорости. То есть выбор языка от необходимости уметь программировать не избавляет.

Ключевыми же здесь являются возможности процессора, не задействованные в языках высокого уровня, а не скорость. При написании драйверов и операционных систем без ассемблера никуда. Да и в прикладных программах ассемблерная вставка иногда позволяет выполнить операцию более естественно. Часто такие вставки прячут в библиотеках, но для написания библиотеки ассемблер нужен!

Про сферу применения согласен, я просто пытался расставить приоритеты.

fhfh 30-06-2010 20:12 0

opera.rulez, ну я как бы согласен :)

opera.rulez 30-06-2010 20:31 +1

fhfh, Вот только интересно, почему у единственного синего ни одного аргумента...

Curacao 30-06-2010 22:58 0

opera.rulez, Потому что этот холивар - херня. Ассемблер жив то тех пор, пока на нем пишет хоть один человек в мире. А на нем пишет далеко не один человек.

30-06-2010 12:53 +1

о_О Вы шо? Совсем штоле? Конечно жив!

2 комментария
andoriyu 01-07-2010 07:06 0

Frost92, Просто исчезни и иди играть в крузис(вин тысячелетия же!!!)

artli.oneid.… 03-07-2010 11:06 +1

Frost92, Жил! Жив! И будет жить! ?

30-06-2010 13:24 +1

ассемблер не умрёт никогда

0 комментариев
30-06-2010 13:27 +2

Assembler жив пока живы компутеры, т.е. умрет еще не скоро

0 комментариев
30-06-2010 22:32 0

Пока живы крэкеры, ассемблер не умрет.

5 комментариев
andoriyu 01-07-2010 07:07 +1

SViN95, Иди читай что тебе на лето задали.

schnapps 01-07-2010 12:44 +2

andoriyu, бро, травить школьников дело благое, но небе нужно разнообразить лексику

andoriyu 01-07-2010 13:13 0

schnapps, Я тебе не бро.

Morbus 01-07-2010 13:50 +1

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

opera.rulez 08-07-2010 21:12 +1

SViN95, Крекер «Нежность» вечен! Он всегда будет с нами!



01-07-2010 07:05 0

Многие школьники ошибочны верят что код на асемблере автоматически становится в 100500 раз быстрее кода на языки высокого уровня. Но это не так - какие сейчас программисты - код на интерпретируемом языке будет быстрее их кода на ассемблере. Программа на assembly (да, блядь, пишется именно так, assembler - аналог компилятора) скорее всего будет иметь утечки каждые 100 строчек кода.

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

Иначе говоря я могу написать приложение на ruby для мака и оно будет работать так же как и нативное(си/obj-c). Да, будет более длительный старт, но потом все буде ок, а если скомпилить код в байткод для llvm так вообще будет няшка.

Так что assembly изжил себя как язык для ПО.

45 комментариев
fhfh 01-07-2010 11:49 0

andoriyu, что за чушь...

andoriyu 01-07-2010 12:15 0

fhfh, Суровая реальность.

schnapps 01-07-2010 12:42 +3

andoriyu, ага, напиши мне дрова под материнку на яве

Frost92 01-07-2010 13:01 0

schnapps, xD

andoriyu 01-07-2010 13:12 0

schnapps, И? Драва это не ПО. это раз, во вторых не понятия драва на материнку. В третих они не на асме пишутся.

opera.rulez 01-07-2010 15:41 +1

andoriyu, Во-первых, про скорость я уже писа́л. Одно только применение ассемблера скорости не даёт, говнокодер способен программу на любом языке испортить.

Во-вторых, даже у интерпретатора Явы системные библиотеки написаны на языках более низкого уровня, потому что не существует реального ява-процессора. При написании драйверов, операционных систем, компиляторов ассемблер потребуется. Если не полностью, то хотя бы вставки. И даже для прикладного ПО ассемблер иногда требуется. В Windows на глобальные таблицы указывает регистр процессора FS. Как его достать через языки высокого уровня?

andoriyu 01-07-2010 23:18 0

opera.rulez, Виндовс не нужен это раз. Во вторых покажи мне 10 софтин где есть код на асме(популярные современные 0, а нетговно мамонта). В третих си еще не язык низкого уровня(ruby, python позволяют писать расширения на си). Бывают pure %name% реализации(например REXML - pure ruby реализация парсера XML, проигрывает в скорости реализации на сях - Nokogiri). Так что технически ассемблер уже не нужен, только если жесткие ограничения по ресурсам(а этого сейчас не встретишь). Еще раз говорю - не даст тебе асм прирост в скорости сегодня.

andoriyu 01-07-2010 23:21 0

opera.rulez, habrahabr.ru/blogs/ruby/48952

Посчитай кол-во строчек в твоем асембли изасерь скорость.

opera.rulez 01-07-2010 23:50 +2

andoriyu, Сколько раз повторять,что я не говорил про прирост скорости. Про скорость говорил Dobermann, а я ему возразил. Я говорил, что асм позволяет использовать специальные возможности.

andoriyu 02-07-2010 04:16 +1

opera.rulez, Какие юлять возможности? Прыщи и борода появляется? Не знаешь - молчи, опера-блядь тупая.

opera.rulez 02-07-2010 11:51 +1

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

andoriyu 02-07-2010 12:12 0

opera.rulez, А теперь ключивоц вопрос - зачем? Я бы еще подумал о том что ты хоть что-то знаешь если бы про софтовые енкодеры/декодеры сказал. Там вот да - асм реально нужен на критических участков кода.

Frost92 02-07-2010 12:12 0

andoriyu, Прыщи и борода появляется?

ЖЖОШЬ! xD

fhfh 02-07-2010 12:54 +3

Frost92, по-моему, andoriyu путает в данном вопросе причину и следствие.

одмины и системщики рождаются сразу с бородой и по-этому как раз и становятся одминами и системщиками

Frost92 02-07-2010 12:55 +1

fhfh, ROFL! +1000000000

schnapps 03-07-2010 20:41 +1

andoriyu, если драйвер для системной логики материнской платы не "Программное обеспечение", то я тут же отсосу сам у себя и выложу видео в этой же ветке. В противном случае разминай позвоночник

andoriyu 04-07-2010 00:59 0

schnapps, Драйвер на физическое устройство это другой уровнь как бы :) алсо покожи мне строчки драйвер котоырый полностью на асме написан... Основное применение асма сейчас это декодеры/экнодеры там он как раз из-за скорости и только критические части.

fhfh 04-07-2010 04:14 +2

andoriyu, это всё равно что сказать "лопату уже никто нигде не юзает, везде экскаваторы"

andoriyu 05-07-2010 10:04 0

fhfh, Не правильная аналогия. Я же говорю асм остался только как язык на котором можно преписать убер критические участки кода.

fhfh 05-07-2010 12:26 +2

andoriyu, но ты же не прав.

есть целые отрасли ПО-разработки, которые практически полностью оперируют асмом и машинными кодами.

или вы настолько прикладник?

andoriyu 06-07-2010 04:13 0

fhfh, Где это такие области? Покажи мне или ты настолько погружён в свои мокрые фантазии? Еще раз говорю асм для написания ПО это тоже самое, что рыть бассеин лопаткой, а не экскаватором.

fhfh 06-07-2010 12:10 +2

andoriyu, понятно. прикладник детектед.

ПО - это не только красивые окошки.

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

это только на ПК.

а ещё есть самый разнообразный портатив - от mp3-плееров до кофеварок. в них тоже есть ПО.

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

станки с ЧПУ наконец.

так что оторвитесь от компа - мир им не ограничивается.

и никогда не программируйте на Visual Basic, если этого можно избежать.

Curacao 07-07-2010 01:47 0

fhfh, Яростно плюсую земляку.

andoriyu 07-07-2010 03:51 0

fhfh, Ой бля. Под ПО пев всегда имелось ввиду прикладное по. И теперь хуяк:

1)загрузочники пишут не на асме(сейчас загрузочник это такая борода которая имеет толькотодну задачу - запустить настоящие загрузочник)

2) драва не пишутся на асме

3) софт на асме поддвержен кучи багов из-за того, что невьебенно низкий уровен

4) сетевые протоколытна асме - олтллолололололо. Покажи мне такой. Я вот могуттебе протокол уровнемтниже tcp/ip на питоне показать

5) биос пережитоу прошлого на которые наконецто стали забивать и пекаебы

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

7) ОС пишется уже давно на более высоких языках, некоторые части ядра - да. Показать Ос на .НЕТ

8) все остальное - legacy говно. Шаттлы летают с процапи хуй знает какой давности из-за их предсказуемости и похуизма разработчиков.

9)

За намек о том что я пишу на VB я тебя найду и иьзасуну тебе швабру в жопу. Так что сосни хуйца и сьебись отсюда.

fhfh 07-07-2010 10:33 +1

andoriyu, Ой бля. Под ПО пев всегда имелось ввиду прикладное по.

ой лол. у прикладников - да ))

и да, успешно высрано 9 пунктов кирпичей ))

andoriyu 07-07-2010 11:33 0

fhfh, У нормальных людей, легаси говно никого не интерисует. По 9 пунктам тебе нечего сказать? Сам то хоть с асмом знаком?

fhfh 07-07-2010 16:13 +1

andoriyu, в 17 лет я разработал систему мониторинга и управления сортировочной горкой для ж/д.

на железных таких, советских микроконтроллерах со всей вытекающей спецификой.

система внедрена и работала лет 5 так точно (дальше не поддерживал связь).

а чего добился ты на данном поприще, чтобы так смело и категорично высрать эти 9 пунктов, которые даже критиковать смешно

andoriyu 08-07-2010 07:50 0

fhfh, А я томат.

Сдается мне ты ничего не можешь возразить мне ибо я прав.

fhfh 08-07-2010 12:12 0

andoriyu, ты - не прав, ты - томат )

fhfh 08-07-2010 12:53 +2

andoriyu, 1)загрузочники пишут не на асме

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



2) драва не пишутся на асме

6) кодеки - там асм используется только для реализации некоторых частей алгоритма

7) ОС пишется уже давно на более высоких языках



дрова, кодеки и ОС пишутся с довольно большой долей асм'а. естественно разрабы не мазохисты, но в этих сферах без низкоуровневого программирования - никак.



3) софт на асме поддвержен кучи багов

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



4) сетевые протоколытна асме. Покажи мне такой.

гугль. первая ссылка



5) биос пережиток прошлого на которые наконецто стали забивать и пекаебы

гага. то-то бОльшая часть компов в мире - пережиток прошлого ))



8) Шаттлы летают с процапи хуй знает какой давности из-за их предсказуемости и похуизма разработчиков.

дадада. именно потому, что дяде билли лень было ставить на шаттл "венду". не смеши.

мощностей твоего компа хватило бы на 100500 советских КА Спутник-1. и если бы не венда, мы бы уже покорили вселенную! ))





9)За намек о том что я пишу на VB я тебя найду и иьзасуну тебе швабру в жопу.

да, ты пишешь на VB.

а швабру можешь из своей жопы не высовывать. мне она ни к чему.

opera.rulez 08-07-2010 14:13 +2

fhfh, 1) Всё правильно, но про загрузчик некоторая путаница. Поскольку в момент загрузки ничего нет (кроме биоса), то мы не можем использовать библиотеки, а языки использовать никто не запрещает, если следить, чтобы код не ссылалася на библиотеки. В справочной информации к компиляторам иногда пишут про «targetting for emdedded systems». Другое дело, что загрузочная запись должна уложиться в размер сектора и в ней должна содержаться настроечная таблица с геометрией диска, что естественным образом можно сделать только на ассемблере.

7) Есть и современные ОС целиком на асме: MenuetOS — графическая ОС, целиком умещающаяся на дискету. Это не совсем серьёзный пример, но вообще без асма для написания ОС не обойтись. Я спрашивал у andoriyu, как перевести процессор в защищённый режим без асма и был послан.

3) Багам подвержена куча программ на ЯВУ. Над одинэсниками и пэхапэшниками весь мир смеётся. В C++ перегрузка операторов и применение макросов ведут к трудноуловимым багам. Доказательство: govnokod.ru/

5) Я не понял, что имел в виду andoriyu, когда писал, что биос — пережиток прошлого. Как без биоса компьютер в принципе может стартовать?

Судя по его ссылке на хабровскую статью про Ruby, он нихрена в программировании не рубит. Прочитал одну статью про быстродействие и будет её всем совать в качестве единственного аргумента.

fhfh 08-07-2010 20:01 +2

opera.rulez, 1)

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

opera.rulez 08-07-2010 20:35 +2

fhfh, Загрузчик чаще всего состоит из двух частей: загрузочной записи и файла, который загружает ядро ОС. Если для файла мы можем использовать языки высокого уровня (и то при условии, что библиотеки будут отключены, поскольку кроме биоса ещё ничего не загружено), то для загрузочной записи лучше ассемблера ничего нет по двум причинам:

1. Нужно уложиться в размер сектора (512 байт на HDD, 2048 байт на CD/DVD).

2. Нужно разместить таблицы.

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

andoriyu 11-07-2010 06:10 0

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

opera.rulez 11-07-2010 16:03 0

andoriyu, В мбр — да. А в бр?

Да и программирование не только к PC относится.

andoriyu 12-07-2010 06:00 0

opera.rulez, А с каких пор в не пека интел архитектура, микрухи прогаммируются на 2х других языках.

opera.rulez 12-07-2010 11:25 0

andoriyu, А кто сказал, что вар посвящён «интел архитектуре»? И что за два языка?

andoriyu 12-07-2010 11:42 0

opera.rulez, А арзве ты не ахуенный знаток всея и вся? Забыл ответить по пунктам :-)

1)загрузочник, я уже все сказал. На асме только stage0 итне меняется уже давно.

7) и чо? Есть Ос целиком на .NET теперь это крута?

3) утечки памяти в асме неизбежны

5) открой для себя efi. Msi и ASIs уже анонсировали материнки с efi вместо биоса. Маки уже давно отказались от биоса(хз, был ли он там вообще). Сначала в сторону open firmware(PowerPC), с переходом на интел ушли на efi.

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

andoriyu 12-07-2010 11:51 0

fhfh, 1)ты нихйяьне знаешь о загрузочниках

2,6,7) в случае кодек сначала код пишут на сях, потомтузкие места оптимизируют - смотри историю коммитов к x264 например. Так же в хуй ушел твой асм с переходом на апаратное ускорение. А тепеерь покажи мне строчки асма в дровах.

3) утечки памяти неизбежны. Прозе написать код на я.п. Высокого уровня.

4)не вижу, там банально работа с сетью из асма.(опять же нахуя?)

5)пека-ебы такие пека-ебы

8) что за хуйту ты спорол сейчас? Какой Билли? Какая винда? Наркоман? Говна наелся?

9) макоеб не может писать на VB физически. Я пишу на сях, плюсах, крестах, обж-с, руби/макруби.

opera.rulez 12-07-2010 14:52 +1

andoriyu, Утечки памяти неизбежны у склеротиков. Как к этому причастен асм?

EFI — это тот же биос, только новый стандарт.

Программирование — это не только написание прикладных программ для виндусей и макосей. Например, нужно написать программу для контроллера какого-нибудь бытового устройства. Код займёт меньше килобайта. Ради этого нужно строить компилятор?

andoriyu 12-07-2010 23:03 0

opera.rulez, Лол. Эфи это тот же биос. Олололо. Что еще расскажешь?

Ты в курсе что контролеры для которых языком ассемблере является вовсе не ассембли, а например лисп? Да управляющие по для такого родаьвещей пишется на языке ассемблера(не обязательно assembly), но это бжляд все! Рядом с таким. Микрухами ставят NAND- флэш и хуячат туда свою мини ось похуй на каком языке.

opera.rulez 13-07-2010 14:56 +1

andoriyu, Про оптимизацию кода с хабра

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

Во-первых, выбрав из числа все двойки и все тройки, мы делим на 4, 6, 9 и т. п., зная результат. Оптимизация в этом направлении задача нетривиальная, но мы можем хотя бы исключить деление на чётные числа. Выбрав все двойки, мы можем увеличивать n не на единицу, а на двойку. Это ускорит код в два раза. Рекурсивное применение данной методики может ещё ускорить код, но приведёт к его усложнению.

Процесс выбора двоек можно ускорить на асме. Для x86 используем инструкцию BSF.

Во-вторых, неправильное условие выхода из цикла. Мы вхолостую проходим слишком много значений. Замена while (n*n < num1) на while (n < num) позволит ускорить код в данном примере в десяток раз, а на других числах — ещ больше. Зачем автору понадобилось неочевидное условие, пропускающее в некоторых случаях последний множитель, да к тому же сложное, я понять не могу.

В-третьих, деление и взятие остатка процессор выполняет одной командой. Ключ -O2 у gcc заменяет два деления на одно и приводит примерно к тому же коду, который я бы написал на асме.

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

Итого. Самая медленная операция — деление. При делении на константу программисты часто отказываются от стандартной инструкции деления. В частности, деление на двойку заменяется сдвигом.

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

Всё, что мы можем сделать на асме — сократить количество операций со стеком и улучшить работу конвейера. Прирост скорости будет небольшим, поскольку самое страшное — деление.

andoriyu 14-07-2010 07:09 0

opera.rulez, Итог: даже для вчислений асм нахуй не нужен.

opera.rulez 14-07-2010 14:01 +2

andoriyu, То, что он не эффективен в говнохабровском говнокоде ещё ни о чём не говорит. Там в алгоритме грубый просчёт.

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

Но главное не скорость! Как без асма написать диспетчер страничной памяти? Как заполнить таблицы дескрипторов и прерываний? Или мы чисто прикладники и кроме адынэс и похапе в мире ничего не существует?

andoriyu 30-07-2010 05:30 0

opera.rulez, Итого мы опять получаем вывод:

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

Но главное не скорость! Как без асма написать диспетчер страничной памяти? Как заполнить таблицы дескрипторов и прерываний?

Зойчем?

Или мы чисто прикладники и кроме адынэс и похапе в мире ничего не существует?

С каких эти 2 уебищные поделки стали ЯП? Учитывая что 1С это уебищный диалект паскаля, а похапе это даже не смешно.