Только познав ассемблер, можно понять как работает машина.
Для познавательных целей оно самое то будет.
В никсах не практикуют асемблер, ну если только для эксплоитов =)
Можно заняться изучением ассемблера каких-либо микроконтроллеров (AVR, PIC). Купить контроллер, макетную плату, собрать простенькую схему со светодиодиком, написать вот на ассемблере программу, запустить, порадоваться.
А ещё - на выбор, попробовать разобрать работу типового эксплоита переполнения буфера на x86 (да-да, ничего в x86 плохого нет). Не зная ассемблер, этого не понять.
>Можно заняться изучением ассемблера каких-либо микроконтроллеров (AVR, PIC). Купить контроллер, макетную плату, собрать простенькую схему со светодиодиком, написать вот на ассемблере программу, запустить, порадоваться.
У меня знакомый этим балуется... Дома. А на работе в свободное время всё то-же делает в каком-то эмуляторе на обычном пицуке. И ничего покупать не надо.
Для анализа крэшдампов весьма полезно. На практике, не нужно. Для понимания некоторых вещей, всё же, полезно знать. Только для понимания этих вещей и знать ассемблер нужно на хорошем уровне, чтобы не бегать смотреть в справочник, как rep movs работает.
Разве что наборы команд для конкретных процессоров. Но для того же x86, в современных реализациях, список команд огромен, не эмбеддедщикам/системщикам/разработчикам_компиляторов смысла его учить нет.
http://www.qemu.org/status.html
+ симуляторы 8-биток + windows-инструментарий вплоть до симуляции схем, но не стоит забывть что круг применения очень узкий а времени можно убить очень много. Заявления типа - чего там знать это всего лишь мнемоники команд процессора - говорят лишь о том что человек знает ассемблер на начальном уровне ибо знание мнемоник без изучения особенностей архитектуры это то же что выучить алфавит и не умея читать рассуждать что поэзия Пушкина примитивна.
О! :)
Excuse me, but REAL programmers use butterflies
Язык ассемблера для практически любой конкретной архитектуры(сферический "ассемблер" в вакууме это я не в курсе что такое) - туп и примитивен как топор, и единственная сложность в его изучении - необходимость зубрежки кучи мнемоник. А "изучение особенностей архитектуры" это именно изучение архитектуры, а не ассемблера, потому как оное высказывание можно отнести и к сишке, но никто ведь не будет спорить, что сишка тупа и примитивна, как топор.
Вообще-то когда говорят про изучение языка предполагают что на нем будут программировать, сможешь ли ты зная только мнемоники ассемблера писать код, я даже не говорю оптимальный - хоть что-то ? Для примера "тупой" ассемблер pic16 - 33 команды, напиши пожалуйста табличное вычисление хотя бы первых 10 элементов таблицы умножения используя память eprom. Или ты сможешь грамотно написать переключение контекста на armv7 или обработку прерываний ?
>сможешь ли ты зная только мнемоники ассемблера писать код
да
>Для примера "тупой" ассемблер pic16 - 33 команды, напиши пожалуйста табличное вычисление хотя бы первых 10 элементов таблицы умножения используя память eprom
И что это докажет?
"грамотно", "эффективно" - это уже передергивание.
Ты, во-первых, путаешь понятия "сложности изучения x" и "сложности написания [более-менее вменяемых и хоть чем-то полезных] программ на x", а во-вторых, занимаешь передергиванием и демагогическим обобщением - я нигде не утверждал, что каким-то боком имею дело с pic16, во-первых, и во-вторых - отсутствие у кого-то представления о pic16 никоим образом не говорит о том, что этот кто-то понятия не имеет о языках ассемблера и, тем более, о том, что это кто-то не имеет права утверждать, что языки ассемблера - вещь тупая и примитивная, никаких сложностей в изучении не представляющая, и что среди ассемблероидов много зазнавшихся долбоебов :)
Что-то я не понимаю. Правильный вопрос должен быть "А зачем?". Одно дело посмотреть что нагенерил компилятор, нет ли там какой-то конкретной лажи. Другое дело понять что делает оно только по ассемблерному листингу. Третье, это оптимизировать что-то. Пятое, это писать супер-оптимизированный mpeg кодек, под VLIW.
Писать для x86, на ассемблере, это "не круто" и наифг никому не нужно.
Ещё ассемблер необходим, например, дизайнерам аппаратуры, для которых основной язык - verilog или VHDL. Например, тесты писать.
Только если они разрабатывают свой процессор. Но ассемблер СВОЕГО процессора им учить как бы не нужно. :)
Для тестов, более чем достаточно, суметь понять что нагенерил компилятор.
[quote]И незачем особо. [/quote]
Вот именно. просто незачем. Даже для 8и биток только идиоты пишут асме. А за хитрые супер-DSP, и всякие там embedded у нас традиционно копейки платют. Я занимался, бросил, и сейчас под линух на x86 пишу.