Assembler мёртв ?!

Комментарии

36 комментария(ев)
аватар: Hamper
Hamper
Дата: ЧТ, 09/12/2010 - 09:06
Звание: Энтузиаст
Сообщений: 211

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

аватар: Kastor
Kastor
Дата: ЧТ, 09/12/2010 - 09:21
Звание: Советник
Сообщений: 789

Не поверишь! Только что закончил делать одну лабу по асму, а на столе лежит книжка по нему =)
Интересная заметка. Я когда на первом курсе начал изучать асм, то мне действительно он был интересен. Но, извини, я бы никогда не подумал, что мне придется (или я смогу) на нем писать такие же функциональные программы, как на языках высокого уровня. Я его учил больше для всеобщего развития и мой удел в нем, это обычные студенческие лабораторки.
Мне, наверное, как и тебе, хочется знать абсолютно все. Но я понимаю, что это не возможно, и что языки высокого уровня мне пригодятся куда больше, чем знания асма.
Хотя может я в чем то не прав. Как знать.

аватар: Lord_of_fear
Lord_of_fear
Дата: ЧТ, 09/12/2010 - 09:52
Звание: Мастер
Сообщений: 1992

Хорошая заметка. Smile Я тоже считаю, что Assembler не мёртв. Его в любом случае стоит знать хоть немного для общего развития.

Сразу вспомнилось:

Цитировать
коммент из исходника : "Эту функцию писал не я, как она работает - без понятия. Трогать страшно." Далее идет 5 страниц ассемблера без единого разделителя и каммента.
(с) bash.org.ru

Laughing out loud

аватар: AltaVista
AltaVista
Дата: ЧТ, 09/12/2010 - 12:22
Звание: Мастер
Сообщений: 1150

Asm конечно не мертв.
Но и писать на нем такие программы, которые возможно написать на языках высокого уровня тоже нельзя. Не потому что асм не способен, просто временнЫе затраты слишком велики.
Знать конечно его надо, но жить на нем нет.
Если бы он мог удовлетворять все наши потребности, то новых языков не появлялось бы.
Кстати вставка if, else это уже по сути не асм, для таких ветвлений там есть другие способы, а if, else это уже доделка современного асма.
Программы, и среды их разработки эволюционируют и естественный отбор делает свое дело. Не думаю что и те языки что мы сегодня используем выживут, через n-лет наши дети будут писать программы таким способом какой мы сейчас даже представить не можем.
И конечно же рано или поздно появиться программа исполняющая мечту каждого программиста - программа с помощью которой можно запрогаммировать процесс создания программы))

P.S. а вообще по асму нет хороших учебников под windows, большая часть материала идет под MS-DOS, что имхо актуально только для тех кто что то сам пояет, спаивает и перепаивает.
Может кто возьмется за создание хорошего макнула по асму под win xp хотя бы, с толковыми примерами (полезными)? Wink

аватар: jimmyjonezz
jimmyjonezz
Дата: ЧТ, 09/12/2010 - 16:02
Звание: Мастер
Сообщений: 1456

Ох, как это давно было... в Delphi я любил использовать ассемблерные вставки, но не видел особой нужды в этом, все было просто ради интереса, любопытства и юношеского задора (все поковырять, посмотреть, опробовать). И я не считаю, что нужно изучать ассм чтобы знать внутреннюю работу компьютера или ОС, но если ты хочешь более подробно и более точно знать все действия своей программы, то тут без знаний ассма не обойтись...

аватар: Sly
Sly
Дата: ЧТ, 09/12/2010 - 16:12
Звание: Энтузиаст
Сообщений: 214

Asm рано умирать ещё, но не смотря на это круг его использования сужается до программ, которые обязаны работать быстро (программы для слабых машин например). Писать на нем все подряд явно не стоит. Ведь конечному пользователю совсем не важно, на каком языке писалась программа, понимает ли программист как она работает до конца. Главное что в ней есть необходимые функции и скорость работы устраивает. Вдруг у человека многоядерный процессор или видюха с CUDA . Как там ASM дружит с новыми трендами и технологиями, кстати? Но изучить его все равно стоит хотя бы для общего развития.

В целом статья хорошая. Написано понятно и без кучи лишних терминов.

аватар: jimmyjonezz
jimmyjonezz
Дата: ЧТ, 09/12/2010 - 16:26
Звание: Мастер
Сообщений: 1456

Цитировать
В целом статья хорошая.

Я все не пойму, как сообщение в Блоге может являться статьей? Разъясните мне это момент? Я что-то путаю?

аватар: wwwnet
wwwnet
Дата: ЧТ, 09/12/2010 - 16:27
Звание: Посвященный
Сообщений: 416

Согласен, статья норм. Единственное, что смутило, почему пролог находится в конце?

аватар: Ghost Rider
Ghost Rider
Дата: ЧТ, 09/12/2010 - 16:30
Звание: Посвященный
Сообщений: 383

ASM FOREVER !!! Good Однозначно

аватар: Va-Bank
Va-Bank
Дата: ЧТ, 09/12/2010 - 16:40
Звание: Гуру
Сообщений: 5573

Цитировать
Я все не пойму, как сообщение в Блоге может являться статьей? Разъясните мне это момент? Я что-то путаю?

Это просто привычка говорить "Статья" Laughing out loud А как говорить нужно? "Блог написан хорошо, без лишних терминов...". Так что ли? Oo
Цитировать
Единственное, что смутило, почему пролог находится в конце?

Я так понимаю там должен быть Эпилог Big smile

аватар: Fairhawk
Fairhawk
Дата: ЧТ, 09/12/2010 - 19:29
Звание: Наблюдатель
Сообщений: 98

Рад что кому то понравилось, но к сожалению много начинающих "кодеров", забивают на асм, и все время уделяют языкам высокого уровня, имхо Smile

Цитировать
Не потому что асм не способен, просто временнЫе затраты слишком велики.

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

Цитировать
Может кто возьмется за создание хорошего макнула по асму под win xp хотя бы, с толковыми примерами (полезными)?

]]>http://wasm.ru/publist.php?list=1#series_1]]>

Зы. Сори за ошибки в тексте, в падлу исправлять было, писал под настроением

аватар: psycho-coder
psycho-coder
Дата: ЧТ, 09/12/2010 - 20:10
Звание: Советник
Сообщений: 760

Asm not Dead!

Изучаю потихоньку, правда по книге Калашникова) Далеко не продвинулся(

аватар: Fairhawk
Fairhawk
Дата: ЧТ, 09/12/2010 - 20:48
Звание: Наблюдатель
Сообщений: 98

Цитировать
правда по книге Калашникова

Цитировать
Далеко не продвинулся(

О_о
Забей. Все что рассказывает Калашников задротство. Кури ]]>http://wasm.ru/publist.php?list=1#series_1]]>

ЗЫ. Я кстати как то тоже сесть хотел за написания цикла статей по асму, забил, подумал слишком боянисто получится, да и времени не так много, учеба.

аватар: maxp
maxp
Дата: ЧТ, 09/12/2010 - 21:39
Звание: Наблюдатель
Сообщений: 12

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

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

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

аватар: psycho-coder
psycho-coder
Дата: ЧТ, 09/12/2010 - 21:49
Звание: Советник
Сообщений: 760

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

аватар: jimmyjonezz
jimmyjonezz
Дата: ЧТ, 09/12/2010 - 22:37
Звание: Мастер
Сообщений: 1456

Цитировать
Это просто привычка говорить "Статья" Laughing out loud А как говорить нужно? "Блог написан хорошо, без лишних терминов...". Так что ли? Oo

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

аватар: Fairhawk
Fairhawk
Дата: ЧТ, 09/12/2010 - 23:10
Звание: Наблюдатель
Сообщений: 98

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

Ссылку в студию. Тебе самому не смешно ? Асм куда "ниже" чем Си. Как факт есть то, что функции Си, можно спокойно перенести на асм. А вот наоборот, не все. Это смешно, ИМХО.

Цитировать
написанный хоть на Basiс, будет работать быстрей чем на асме.

Тоже самое, линк. Ржака

PS.

 fairhawk (16:06:38 9/12/2010)
имхо бред
 
 fairhawk (16:06:51 9/12/2010)
я найду эту функцию в отладчике
 
 fairhawk (16:06:54 9/12/2010)
и буду юзать на асме
 
 fairhawk (16:07:05 9/12/2010)
и еще даю 99% что там будет пару лишних
 
 fairhawk (16:07:10 9/12/2010)
ассемблерных строк

аватар: AltaVista
AltaVista
Дата: ПТ, 10/12/2010 - 02:51
Звание: Мастер
Сообщений: 1150

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

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

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

А за ссылки спасибо, но о них я знал. Уроки там и впрямь хорошие.

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

Оптимизация оптимизации рознь.

аватар: wwwnet
wwwnet
Дата: ПТ, 10/12/2010 - 04:08
Звание: Посвященный
Сообщений: 416

Цитировать
не так давно один американец финского происхождения переписал на Си реализацию одной функции

Я думаю, что имеется в виду то, что Линус Торвальдс переписал реализацию алгоритма SHA1 на С со вставками ассемблера и его реализация на его компьютере работала быстрее оптимизированного вручную асмовской реализации. ]]>Подробности]]>.

аватар: fedr
fedr
Дата: СБ, 11/12/2010 - 03:08
Звание: Посвященный
Сообщений: 386

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

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

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

кстате может ктонить сделает статейку в след журнал? с описанием койнить проги "мигалки"... дада таких статей масса, но блин...в них нифига не понятно...

аватар: Va-Bank
Va-Bank
Дата: СБ, 11/12/2010 - 03:09
Звание: Гуру
Сообщений: 5573

Цитировать
кстате может ктонить сделает статейку в след журнал? с описанием койнить проги "мигалки"... дада таких статей масса, но блин...в них нифига не понятно...

Что за мигалка?

аватар: Belketre
Belketre
Дата: Пнд, 13/12/2010 - 10:31
Звание: Мастер
Сообщений: 1571

Светофор, наверное

аватар: Fairhawk
Fairhawk
Дата: Втр, 14/12/2010 - 05:08
Звание: Наблюдатель
Сообщений: 98

fedr для микропроцессоров можно кодить не только на асме.

аватар: raxp
raxp
Дата: Пнд, 20/12/2010 - 08:32
Звание: Советник
Сообщений: 634

верно, еще можно просто рисовать...

аватар: psycho-coder
psycho-coder
Дата: Втр, 21/12/2010 - 05:01
Звание: Советник
Сообщений: 760

С бейсиком погорячился но сути не меняет
]]>http://www.insidepro.com/kk/001/001r.shtml]]>

аватар: Hamper
Hamper
Дата: ЧТ, 23/12/2010 - 15:20
Звание: Энтузиаст
Сообщений: 211

низкоуровневые языки все таки знать иногда полезно, вспоминается история времен университета когда препод рассказывал как один дипломник когда защищал диплом внезапно обнаружил что в программке на микроконтроллере, код которой на LAD занимал несколько десятков страниц есть какая то ошибка (темой диплома была система синхронизации звонков в универе по часам с какими то там еще добавками), так он не растерявшись переведя контроллер в режим программирования с внешней клавиатуры потыкав кнопочки исправил программу вводом команд на IL... а системка в универе так и осталась потом Smile
p.s.: занимаюсь сейчас поиском работы и вследствие этого просматриваю разные вакансии, и вот мне попадалась одна интересная вакансия (правда она совсем в другом городе так что мне точно не подходит) так там требовалось знание фбд, ркс, il и много чего еще (программирование промышленных систем автоматизации)
p.p.s: что бы вас совсем напугать кратко поясню что такое РКС (LAD, релейно контакторные схемы), язык представляет из себя набот из переключателей имеющих два состояния (замкнутое и разомкнутое) и имеющих возможность менять свое состояние в зависимости от внешних воздействий, так вот это по сути программирование чуть ли не на уровне булевой алгебры ))

аватар: raxp
raxp
Дата: Втр, 28/12/2010 - 07:19
Звание: Советник
Сообщений: 634

...посмотрите в сторону языка FBD блоков Wink

аватар: Hamper
Hamper
Дата: Втр, 28/12/2010 - 17:18
Звание: Энтузиаст
Сообщений: 211

ну так я как раз о том и говорю что иногда бывает даже проще что-то сделать на РКС чем на ФБД, да и не все разработчики контроллеров в своих средах поддерживают ФБД плюс возможность кодирования напрямую с блока ввода контроллера, там обычно именно РКС или СИ (список инструкций, IL). производители иногда о программистах не заботятся, помню страшный промышленный датчик у меня в дипломе с собственным протоколом на основе rs-485 с кривой документацией по протоколу который только отдаленно напоминал modbus

аватар: raxp
raxp
Дата: СР, 29/12/2010 - 04:49
Звание: Советник
Сообщений: 634

все серъезные SCADA системы для ПЛК (Trace Mode, GENESIS32 ....) и то же ПО от Siemens, Овен и т.д. поддерживает FBD и си ...даже на несчастную атмегу втиснули, достаточно вспомнить контроллеры сегнетикс ...по поводу Modbus, он хоть и стандартизирован, но только до трех уровней, а далее как разработчик захотел под свое оборудование, так его и реализовал, у всех регистры разные, это говорю вам как разработчик систем автоматизации Wink

аватар: Hamper
Hamper
Дата: Пнд, 03/01/2011 - 03:57
Звание: Энтузиаст
Сообщений: 211

Ну например для сименсов например для контроллера logo в среде мне больше нравится реализация ркс... фбд там как то глючит, хотя у mitsubishi alpha фбд еще более глючное ))) но все же ассемблер знать очень полезно как я считаю )

аватар: murashcour
murashcour
Дата: ВС, 20/03/2011 - 08:10
Звание: Наблюдатель
Сообщений: 11

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

аватар: kolob2000
kolob2000
Дата: СБ, 26/03/2011 - 22:46
Звание: Наблюдатель
Сообщений: 1

Максимум, что надо знать это, как работает процессор, архитектуру компьютера, устройство памяти и её принципы адресации. На этом всё. Сидеть пол дня писать 5-10 тысяч строк не имеет ни какого смысла, если только потешить своё самолюбие. Я такой умный знаю пол тысячи инструкций процессора.
Ну кто мне сможет назвать, то чего не сделаешь на си. И не важно, что я программирую, будь то контролер, винда, пингвим, да хоть i-pad. Да хоть самолёт запрограммируй. Нужен доступ к регистрам!? Пожалуйста. Делай всё что хочешь. Да и с оптимизацией всё в полном порядке. И если ты не собрался не чего ломать, он на фиг не нужен. С той скоростью с которой изменяются технологии далеко не уедешь на асме.

аватар: Stamerlan
Stamerlan
Дата: ПТ, 11/11/2011 - 01:36
Звание: Посвященный
Сообщений: 315

Цитировать

Ну кто мне сможет назвать, то чего не сделаешь на си.

обратись к отладочным регистрам процессора.
ввод/вывод в порт.
еще?

аватар: Hamper
Hamper
Дата: ВС, 13/11/2011 - 23:50
Звание: Энтузиаст
Сообщений: 211

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

аватар: Stamerlan
Stamerlan
Дата: Пнд, 14/11/2011 - 00:04
Звание: Посвященный
Сообщений: 315

ms-dos?

А драйверок для той же винды ты как напишешь?

аватар: Stamerlan
Stamerlan
Дата: ПТ, 11/11/2011 - 06:51
Звание: Посвященный
Сообщений: 315

Дайте и я вставлю свои 5 копеек =)

Цитировать

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

Время. А время - деньги. Если кушать хочешь, то ты не напишешь на асме быстрее чем на ЯВУ. А то что ты напишешь возможно будет работать медленнее и возможно будет больше по объему. А так в принципе все правильно =)

Цитировать

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

А вот тут я абсолютно не согласен. Компиляторы довольно хорошо распределяют переменные по регистрам. Есть ключевое слово register, хотя многим компиляторам начхать, на его существование.

Цитировать

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

Хм... А что тебе мешает использовать библиотеки для "индустриальных языкамов программирования"?
Единственное, что нет заголовочных файлов. Но на крайний случай тебе вряд ли потребуются все ф-ии библиотеки, так что можно и перевести. Ну, или написать автоматическую переводилку.

Цитировать

2 «состояния», физический и виртуальный

Эм... А что это за "состояния"?

Цитировать

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

Это механизм вызова ф-ии. А не как она работает.
А еще есть механизмы передачи параметров, когда аргументы передаются в регистрах общего назначения. fastcall называется.

Цитировать

адрес которой находиться в том же PE заголовке

Адреса находятся в таблице адресов. которая выглядит примерно вот так:
MessageBoxA:    jmp 0x00000000
ExitProcessA:   jmp 0x00000000

В коде вызов выглядит вот так:
push 0
push p_msg
push p_titile
call MessageBoxA

т.е. вызов jmp'a
А сами адреса в jmp'ы вписывает динамический линкер ОС

Цитировать

Ущербные знания в отладке. Такая вещь как реверсинг, нужна не только хакерам для взлома программ и поиска в них уязвимостей, но и для кодеров, благодаря которой в 100500 раз упрощается поиск ошибок.

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