LINUX.ORG.RU

Имеет. А ассемблерные вставки - зло. Лучше не надо.

Lavos ★★★★★
()

когда нужно знание ассемблера?

Всегда. Но писать ассемблер всегда не надо.

Программирование на С++ не имеет преимуществ перед программированием на Java(etc) без знания ассемблера?

Имеет. А программирование на Java(etc) внезапно имеет преимущества перед программированием на C++.

anonymous
()

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

anonymous
()

Нужно когда ты а) школьник и учишь архитектуру процессора б) пишешь низкоуровщину и отлаживаешь код

grimwaken
()
Ответ на: комментарий от unt1tled

по впечатлениям от cppcon2014 выступлений.

почти везде показано в какие мнемокоды отранслировалось и насколько кратко(cpu-cost).

qulinxao ★★☆
() автор топика
Последнее исправление: qulinxao (всего исправлений: 1)

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

Знание ассемблера обычно нужно, чтобы использовать какие-то инструкции процессора, которые твой компилятор не умеет использовать, чтобы значительно ускорить приложение.

Legioner ★★★★★
()

Знать во что развернет твой код компилятор - признак высокого уровня мастерства.
Говорить на ассемблере не обязательно :)

Shadow1251
()

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

peregrine ★★★★★
()
Ответ на: комментарий от unt1tled

кстати да(про что непонятно).

в учебниках С++ ( которые для первый язык програ и поэтому начинают с «что такое цикл» и подобное) даже страуструпова Программирование. Принципы и практика использования C++ не показывает асморезультат.

притом что у С++ нет шансов против современных язычков в части адекватности синтаксиса,«С++ ниша - сверхпереносимогоассемлера»

qulinxao ★★☆
() автор топика
Ответ на: комментарий от qulinxao

Асм и что во что компилируется я изучал на курсе по железоблизкому программированию. Плюсы на курсе по «альтернативным» техникам программирования. Как они друг к другу относятся и причем тут современные языки, с++ и асм янипонял.

unt1tled ★★★★
()

Пока ты не прибиваешься гвоздями к конкретному железу или оптимизируешь какую-нибудь хурму для работы на SSE/NEON/etc то, в современных реалиях, тебе знание asm не нужно.

А программирование на C++ имеет свои преимущества перед java безотносительно знания асма, точно так же как и жава имеет свои преимущества перед плюсами.

А вообще - всё говно.

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)

когда нужно знание ассемблера?

1. Когда пишешь компилятор

2. Когда пишешь низкоуровневое ПО (драйвер, загрузчик, и т.п.)

3. Когда хочешь кого то поразить знанием того, что, практически никому, не нужно.

robot12 ★★★★★
()

когда нужно знание ассемблера?

Как обычно, вчера

buddhist ★★★★★
()
Ответ на: комментарий от qulinxao

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

luke ★★★★★
()

Программирование на С++ не имеет преимуществ перед программированием на Java.

fixed
Изучение и практика С++ даёт преимущества программисту, как спецу. Asm знать (точнее понимать) нужно в любом случае. Толковый кодер, если это реально оправданно будет писать и на жабе. Программист не знающий как работает проц, память и прочее - бестолковый быдлокодер. Использовать asm нужно только там (на том куске кода), где компилятор не способен решить задачу эффективно, а кодер может за разумный срок и усилиями разумных масштабов существенно оптимизировать работу кода. Такие моменты - редкость, тем более в прикладных задачах. Как правило это мультимедиа, очень ресурсоемкие задачи и сильно ограниченные по ресурсам железяки. (хотя нынче уже такие лютые монстры как разные арм и всякие atmega стоят копейки, т.е. оверкил не так и дорог чтоб заморачиваться).

erfea ★★★★★
()
Ответ на: комментарий от robot12

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

Например, знанием, орфографеи, и, громатеги.

anonymous
()

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

Gvidon ★★★★
()
Ответ на: комментарий от qulinxao

производительность узкого места не?

Вы знаете язык процессора Intel лучше компилятора этой самой корпорации ? Что то сомневаюсь я.

robot12 ★★★★★
()
Ответ на: комментарий от robot12

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

вообще примечательно, что аргумент про «компилятор лучше знает» многократно упоминал Степанов в его приснопамятных лекциях , с каждым разом примерами где незначительное синтаксическое изменение(с сокранением семантики не только цели но даже реализации) входного С++ кода меняло производительность генерируемого компилятором(от лучших производителей)кода в разы.

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

qulinxao ★★☆
() автор топика
Ответ на: комментарий от qulinxao

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

пшшшш, бум
мой мозг взорвался

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

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

стоимость (время и память)

ассемблер очень дорого, слишком дорого чтобы на нём что-то делать

TERRANZ ★★★★
()

C++ же весь из себя высокоуровневый, зачем туда aassembler внедрять? Ладно ещё в Plain C можно, масло кашей не испортишь, но в случае плюсов это как прыжок через одну ступеньку.

CARS ★★★★
()
Ответ на: комментарий от CARS

C++ же весь из себя высокоуровневый

Глупости, ничто не мешает использовать плюсы на том же уровне, что и обычный Це.

Gvidon ★★★★
()

Но у java тоже есть свой ассемблер. А с учетом android — даже два.

crowbar
()
Ответ на: комментарий от peregrine

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

peregrine ★ (20.10.2014 13:23:30) >в 90% всех циклов нужны индексы.

Ага :)

Stil ★★★★★
()
Ответ на: комментарий от Shadow1251

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

deterenkelt
()
Ответ на: комментарий от qulinxao

в учебниках С++ ( которые для первый язык програ и поэтому начинают с «что такое цикл» и подобное) даже страуструпова Программирование. Принципы и практика использования C++ не показывает асморезультат.

Еще в учебниках запрещают goto, хотя десятая часть исполняемого процом кода, состоит из j[n]z/jmp.

handbrake ★★★
()
Ответ на: комментарий от handbrake

«В учебниках» запрещают goto, потому что есть более высокоуровневые управляющие конструкции (см. «структурное программирование»). А в машинных языках таких конструкций нет, поэтому их приходится реализовывать вручную при помощи условных и безусловных переходов.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

конструция if эквивалентна инструкции условного перехода, про остальные ещё можно как-то подискутировать

Harald ★★★★★
()
Ответ на: комментарий от handbrake

Ты, наверное, хотел что-то сказать по существу, но забыл.

intelfx ★★★★★
()
Ответ на: комментарий от Harald

Нет. Конструкция if эквивалентна инструкциям, вычисляющим выражение, инструкции сравнения и инструкции условного перехода.

intelfx ★★★★★
()
Ответ на: комментарий от Harald

if = любой условный переход, jz/jnz/jge и прочие

≠. См. сообщение выше.

for = в x86 есть инструкция loop

≠. Инструкция LOOP — это аналог цикла do .. while (--i), т. е. частного случая.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от handbrake

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

prischeyadro ★★★☆☆
()
Последнее исправление: prischeyadro (всего исправлений: 1)
Ответ на: комментарий от handbrake

Угу. Почему же тогда (например) ядро Linux пишут на высокоуровневом Си, а не на каком-нибудь кроссплатформенном языке ассемблера типа LLVM IR?

Идиоты, наверное. Не то что handbrake.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.