LINUX.ORG.RU

Ответ на: комментарий от anonymous

Кэп, не надо мне говорить то, о чем мы договорились не говорить. Меня интересуют области, где без него не обойтись.

anonymous
()

> зачем нужен ассемблер и где его применяют в 2008 году?

для написания загрузчика lisp-ядра емакса на голом железе.

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

> Да полно облостей, в основно да те, где приходится работать конкретно с железом.

Нет вы не поняли, я говорю не о том где можно применять его, а где без него не обойтись? Собственно, только компиляторостроение приходит на ум, или и тут можно без него обойтись?

anonymous
()
Ответ на: комментарий от dilmah

Это опять же упор на быстродействие.

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

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

anonymous
()

системное программирование. Драйвера, ядро, компиляторы. В случае с оффтопиком ещё и вирусы с антивирусами. Вроде всё. Ещё им можно отладчик путать, если очень боишься reverse engineering.

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

А компиляторы? Современные как пишут, там идет трансляция в ассемблер и далее в машинный код или как?

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

Ну и компиляторы - это не вопрос =)

anonymous
()

встраиваемые решения

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

> компиляторы

В компиляторах ассемблер не применяют. Его нужно _знать_, но не применять. Но знать ассемблер используемого процессора вообще всем полезно.

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

> Т.е. сразу транслируют в машкод, чтоли?

Машкод - это тот же ассемблер. Что ты называешь "использованием"? Я подумал, что пользоваться - это писать программы на. А что ты имел в виду?

tailgunner ★★★★★
()

Я его в JIT-компиляторе байткода использую.

Legioner ★★★★★
()

микроконтроллеры?

anonymous
()

В ядре машинно-зависимый код на асме, например.
Про остальное уже сказано.

anonymous
()

fft и ему подобные числодробительные операции (кодеки, например) , cipher'ы. Микроконтроллеры же нониче такие пошли, что там уже на С чистом и плюсах кодят вовсю, или вообще с Linux'ом предустановленным идут. (Впрочем ещё не везде, где-то ещё PIC'и используются)

Загрузчики тоже, в основном, на С пишут, только некоторые аппаратно зависимые и критичные части на асме. (см., например, U-Boot).

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

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

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

>А товарищ как-то работал с GSM-модемом в который питон был зашит.

ХОТЕТЬ!

// c: endand это конец и?

anonymous
()
Ответ на: комментарий от amoralyrr

> В случае с оффтопиком ещё и вирусы с антивирусами.

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

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

> Собственно, только компиляторостроение приходит на ум

Плохой ум, значит. Нахрен компиляторщику ассемблер?

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

> Современные как пишут, там идет трансляция в ассемблер и далее в машинный код или как?

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

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

> fft и ему подобные числодробительные операции (кодеки, например) , cipher'ы.

С кодеками я немного работал, писалось на сях.

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

>Ассемблерный код нормальный компилятор генерить не будет, если специально не попросить.

Ну конечно - gcc отстой, вы лучше делаете...

koTuk
()
Ответ на: комментарий от Miguel

> Ассемблерный код нормальный компилятор генерить не будет, если специально не попросить.

GCC генерит именно ассемблерный код. Если его специально не просить, он его всего лишь не сохраняет.

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

Было бы странно, если бы он при компиляции ц, компилил его в ц :)

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

>А товарищ как-то работал с GSM-модемом в который питон был зашит.

А pyGTK был?

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

Бывает что и на сях, но для рутинных операций, вызываемых по множеству раз, вроде fft, шифрования-дешифрования, до сих пор рулит асм. Посмотрите, хотя бы, на реализацию основных cipher'ов в ядре Linux'а.

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

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

Miguel ★★★★★
()

> зачем нужен ассемблер и где его применяют в 2008 году?

рассмотрим множество конструкций С и их отображение на инструкции целевой платформы
возьмем множество всех инструкций целевой платоформы
найдем их разность 
полученное множество и будет являться применением ассемблера ;)

rei3er
()

при работе с железом

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

> рассмотрим множество конструкций С

Почему только C?

> найдем их разность

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

Miguel ★★★★★
()

А MBR на чём написан? Разве не на асме? Ну а больше, вроде, ничего. Если, конечно, не считать C'шного emit(), который тоже суть машкод.

alexsaa
()
Ответ на: комментарий от Miguel

> Что примерно соответствует реальной применимости ассемблера в современных условиях.

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

anonymous
()

Ну, например, только на C нельзя написать тредовую библиотеку или ядро ОС. Потому что всякие команды управления прцессовом и memory barrier-ы компилятор геренить не умеет...

anonymous
()
Ответ на: комментарий от Miguel

> Почему только C?

хорошо, любой ЯП высокого уровня

> Скажем, при использовании интеловских компиляторов - я почти уверен, 
> что разность будет равна нулю

разность никогда не будет равна нулю
есть инструкции, которые по определению не поддерживаются компиляторами
SIDT, SGDT, SLDT, LLDT, LIDT, LGDT, SYSENTER, SYSEXIT, SYSCALL, SYSRET, IRET, CLTS, RDMSR, WRMSR, RDTSC, RSM, STR, SWAPGS, UD2, ARPL, HLT и пр.

rei3er
()

>где его применяют в 2008 году?

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

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

> есть инструкции, которые по определению не поддерживаются компиляторами

> SIDT

Хрена.

http://msdn.microsoft.com/en-us/library/aa983358(VS.80).aspx :

> The __sidt function is equivalent to the SIDT machine instruction.

Вот. Интеловский компилер, вроде, не поддерживает; а вот майкрософтовский - таки да.

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

> Вот. Интеловский компилер, вроде, не поддерживает; а вот майкрософтовский - таки да.

молодец, возьми пирожок с полки... даже mov'ы не все реализовать на си...

mov eax, cr0

or al, 1

mov cr0, eax

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

shild
()
Ответ на: комментарий от Miguel

> Хрена.

вообще говоря это функция, причем реализована она через вставку ассемблерного кода, т. е отображения конструкция С -> инструкция CPU в данном случае нет

rei3er
()

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

Остальное обычно можно и на Си написать (если не учитывать скорость) с ассемблерными вставками команд, которые компилятор не поддерживает (примеры уже привели - lgdt mov cr0,eax и прочие подобные)

не. ну ещё есть архитектуры, под которые нету С (некоторые DSP, например).

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

>Потому что всякие команды управления прцессовом и memory barrier-ы компилятор геренить не умеет...

4.2.

Почитайте на досуге http://groups.google.com/group/comp.programming.threads/topics?hl=en . Там много про неблокируюшие контейнеры на многопроцессорных системах на с++ (без асма).

stpg
()

asm не нужен. Куда уж там асм, если некоторые вопят, что си не нужен (жаберы и шарперы).
Последний раз реально использовал асемблер под железячки (PIC контролеры) в универе. Да и то в этоже время был си компилер, но нас заставляли писать на асме.
В работе никогда асм не пригождался. Единственным исключением бал asm {int 3;} под офтопиком;)
Среднестатестическому пограмеру асм не нужен.

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

> некоторые вопят, что си не нужен (жаберы и шарперы)

Глупости они вопят, не повторяй их.

> Среднестатестическому пограмеру асм не нужен.

Дважды глупость - во-первых, хотя бы для общего развития нужен; во-вторых, среднестатистичекого прогера не существует.

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

>> некоторые вопят, что си не нужен (жаберы и шарперы)
>Глупости они вопят, не повторяй их.
Хочется верить в это.

>> Среднестатестическому пограмеру асм не нужен.
>Дважды глупость - во-первых, хотя бы для общего развития нужен; во-вторых, среднестатистичекого прогера не существует.

А вот зачем жаберу знать асм? Если сама идеология языка перекладывает часть ответственности с программиста на среду (работа с указателями, гарбиж колекшен,...). Поможет ли ему это знание в работе?
Мне кажется, что нет.

Плюсовику зачем асм? Как часто Вы перепроверяете компилятор, убеждаясь, что он сгенерил код лучше, чем Вы могли бы сами написать?
Сколько раз за последний месяц Вам приходилось отлаживатся без символов и исходных кодов (проходясь дебагером по ассемблеру)?
Не спорю, что плюсовику, а тем более голому сишнику - асм не повредит, но он не необходим.

stpg
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.