LINUX.ORG.RU

ну тот же wasm, там можешь спрашивать.

а так не надо ведь.

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

Ну как бы ядро без него не особо пляшет и сплоиты (а что важнее закрытие дыр, эксплуатируемые сплоитами) никто не отменял

pylin
() автор топика

В наших краях asm не особо котируется, ибо не кроссплатформенно же!

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

>Ну как бы ядро без него не особо пляшет

сплоиты никто не отменял


О_о *NIX !=ASM *NIX=C . Все пишется на С, все дыры закрываются на С.

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

то то парни из glibc всё на асме переписывают! они явно что-то не знают. а программистам под микроконтроллеры тоже на С писать? зажрались, товарищи!

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

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

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

>а программистам под микроконтроллеры тоже на С писать?

и много микроконтроллеров на которых линукс работает?

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

9000 лет уже весь мир на Си микроконтроллеры прогает

+100500

И в программах пользователя ассемблер не нужен. Ассемблерные вставки нужны лишь в ядре (для определения всяких аппаратно-зависимых частей) и в gcc (для оптимизации под конкретный процессор - те же SSE и т.п.).

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

> И в программах пользователя ассемблер не нужен. Ассемблерные вставки нужны лишь в ядре (для определения всяких аппаратно-зависимых частей) и в gcc (для оптимизации под конкретный процессор - те же SSE и т.п.).

Не всё так просто.

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

Тем не менее, лажу компиляторы тоже бывают гонят ерунду и даже ошибки.

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

Например, в коде ffmpeg есть ассемблерные вставки и в заметном количестве. А это отнюдь не ядро и не gcc.

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

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

Какбэ, использовать SSE на C спокойно можно и без ассемблера (<xmmintrin.h>). Правда мне завести удалось только на icc.

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

>прям под все архитектуры?

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

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

Этого сайта и там еще одного вполне хватит, все спасибо

pylin
() автор топика
Ответ на: комментарий от anarquista

Меня интересуют отнюдь не микроконтроллеры, компиляторы, ядро и прочие вещи в том же духе

pylin
() автор топика
Ответ на: комментарий от megabaks

Не нужны.
Сильви, помню, проводила тестирование mplayer-а (?) с и без вставок. Тот, что без вставок работал быстрее.

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

пруф?
ты уверен что SIMD на сях будет быстрей чем на асме?
а мужики-то не знают...

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

ух ты ) а я и не помню )
с mplayer я точно такое не вытворяла, с asm 386 могла сравнить векторизацию компилятором (SSE) по сравнению с ручным написанием кода на asm 386, без SSE, а в mplayer там mmx, sse используют, тут компилятору далеко.


Sylvia
()

если по теме, ориентироваться нужно не на ОС, код по возможности должен быть написан портабельно на другие платформы, т.е. это Си или С++ или что-то другое возможно,
на ассемблере стоит писать (в случае кода общего назначения, а не там где каждый байт на счету) только в том случае, если нужно оптимизировать какой-то очень нагруженный алгоритм, желательно использовать cpuid и mmx,sse/avx , все остальное желательно писать на языке более высокого уровня, так и переносимость кода на другие платформы лучше будет и возможность ( для свободных программ ) внесения изменений тоже.


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

в случае же железки, если пишете для x86 / x86_64 , то вполне можно пользоваться и сайтами и литературой для windows, обработчик кадра видео вполне может быть одинаковым и для windows и для любого Unix )

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

кстати а CGI модули на ассемблере можно писать?
и насколько бы это было оправдано на очень загруженых веб серверах?

PS: Классная аватарка, я бы вдул =)

Wolfkrone
()

Вобщем ошибка твоя ТС в «ориентацией на UNIX», ассемблер ориентируется на процессор. Для начала поищи Абеля «Ассемблер для и программирование для IBM PC» и П.Нортон «Ассемблер <чего-то там>». Накати qemu и поставь туда MSDOS - это тебе будет среда для работы с упражнениями. Зачем? Программирование на ассемблере как прикладная задача сформировалась именно в то время и большинство годных советов и приёмов будет работать именно там. Как освоишься, обязательно собери литературу по RISC архитектуре и замени qemu c dos, на qemu-PowerPC или qemu-SPARC с NetBSD или каким нибудь другим легковесным унихом и тут уже тебе книги не понадобятся, только тех.документация.

Вот собственно и всё. По поводу «нужен - не нужен», человеку, если взять в корень, нужно только «жрать срать спать» всё остальное он решает сам.

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

я могла сравнить asm вставку в gzip с gzip без этой вставки, и сборкой с векторизацией, но уж точно не mplayer :)

в gzip - asm386, т.е. в принципе можно попробовать сравнить ручную оптимизацию для i386 с оптимизацией gcc уровня SSE2 и выше )

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

> Какбэ, использовать SSE на C спокойно можно и без ассемблера (<xmmintrin.h>). Правда мне завести удалось только на icc.

Зачем левой ногой чесать правое ухо? Тем более, если для XMM видимо написали сишную обертку, которая ещё и не завелась на gcc, как я понял, гораздо проще напрямую воспользоваться ассемблером. Тем более, если нужно SSE2 и т.п.

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

А так, неприятие ассемблера непонятно, можно подумать, что это ужасно сложно.

anonymous_incognito 👍
()

Крупных сайтов по ассемблированию в никсах ИМХО нет, зато есть хорошая литература по NASM например, от а до я так сказать, на английском языке. Ищите книги, а не сайты.

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

и уж если о правилах хорошего тона,
вынесенный в отдельные файлы код, теперь принято собирать с помощью yasm , ранее использовался nasm, вариант с as (GNU assembler / gas / binutils ) обычно все же не применяют

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

Так я просто почему сайты искал потому, что например на том же васике именно книжки собраны и прочие кашерные книжечки, ладненько пойдем по пути указанным iBlis

pylin
() автор топика
Ответ на: комментарий от Sylvia

> вынесенный в отдельные файлы код, теперь принято собирать с помощью yasm , ранее использовался nasm, вариант с as (GNU assembler / gas / binutils ) обычно все же не применяют

Очень странное утверждение, можете его подкрепить фактами?

Насколько я знаю, nasm все же популярнее yasm (а еще он лучше задокументирован и фичастее). И оба поддерживают только x86(-64) так что и gas часто применяют.

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

вынесенный в отдельные файлы код, теперь принято собирать с помощью yasm , ранее использовался nasm, вариант с as (GNU assembler / gas / binutils ) обычно все же не применяют

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

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

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

@iivvaann в ядре раньше использовали bin86 (as86) , но к счастью ушли, ядро достаточно специфично, поэтому они могут позволить себе писать для gas , в то время как кроссплатформенные проекты используют yasm (ffmpeg (и соответственно mplayer)) или nasm (lame)

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

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

Интересно, есть ли какие-нибудь программы для конвертации ассемблерного листинга между ARM, x86, спарк и прочими? С оптимизациями. Чтобы написанная на ассемблере программа была кроссплатформенна.

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

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

У них просто нет альтернатив. Ядро поддерживает множество архитектур, не только x86. И только GAS поддерживает архитектуры отличные от x86(-64).

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

> я смотрю на проекты типа ffmpeg, там ушли от nasm

AFAIK из-за того, что тогда у nasm'а были проблемы с 64-битами, а у yasm'а нет. Не знаете как у nasm с этим сейчас?

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

>Интересно, есть ли какие-нибудь программы для конвертации ассемблерного листинга между ARM, x86, спарк и прочими? С оптимизациями. Чтобы написанная на ассемблере программа была кроссплатформенна.

Нет.

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

> у nasm'а были проблемы с 64-битами, а у yasm'а нет. Не знаете как у nasm с этим сейчас?

Если верить офсайту, давно порядок. С год назад пытался выяснить, облазил весь их сайт, не помню почему пришёл к такому выводу. Библиотеки собирались нормально, но использующая их программа падала из-за кривизны GTK1, поэтому протестировать по-нормальному не смог.

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