Как учить assembler под linux?

Всем привет.Захотелось изучить ассемблер под linux.Работа моя тесно с программированием не связана,но на рабочей станции стоит линя,дома тоже он самый,учить что то под винду нет желания,и 0 практической пользы.Теперь собственно сам вопрос.Есть ли нормальная литература по программированию на асм под линукс?По асму все рекомендуют зубкова,открыл,а там все про DOS немного венды,и пару десятков страниц про UNIX.Пару десятков страниц явно маловато.Есть еще такая книга если кто читал,подскажите стоит ли читать ее?Можно ли по ней научится с нуля асму в линуксе(не основам программирования вообще,а именно ему).Ну или например я знаю что есть 2 синтаксиса AT&T и intel.Зубков как я понял использует в книге второй.Говорят что под Linux можно и на интел синтаксисе писать.В таком случае можно ли читать книгу зубкова и использовать под линуксом интел синтаксис.Короче ребята,обьясните новичку в таком не легком деле,как дойти до успеха.Что читать,какой использовать диалект для обучения и прочее.Вобщем как научится писать на асме ИМЕННО под linux.Так же что стоит почитать помимо этого.Я думаю одного ассемблера недостаточно будет.Некоторые рекомендуют читать оф. доки от интела,но я думаю к такому не готов,есть ли что по проще об устройстве процессора.Не обязательно разжеванное,но для людей,а не сухая документация.
UPD:
Учить хочу не только Just for Fun.Как я сказал,моя работа не тесно связано с программированием.Я работаю в сфере кино,в моем боевом софте,есть куча нод.Каждая нода это so библиотека.Для лучшего понимая их работы,было бы не плохо дизассемблировать их и понять алгоритм некоторых особо важный нод.Это софтина для художников пофакту,и в оф. доках инфа только о ее использовании,с точки зрения художника.Я же хочу большего.Дополнить функционал по возможности и т.п.
  • Вопрос задан
  • 4055 просмотров
Пригласить эксперта
Ответы на вопрос 4
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Я читал "Столяров А.В. - Программирование на языке ассемблера NASM для ОС UNIX - 2011"
Ответ написан
x67
@x67
А с каких пор ассемблер стал зависеть от ОС?
Выберите для себя удобную IDE на удобной системе. Вот есть кроссплатформенная IDE, к примеру, не понравится - сами найдите с помощью запроса в гугле "asm IDE linux" и учите. Собственно как язык, ассемблер изучать незачем, он прост как три копейки, а вот физическое понимание, как оно там работает нужно. И на восприятие этого понимания IDE никак не повлияет. Я в свое время изучал ассемблер для древних микроконтроллеров фуджитсу, родная IDE там почти ничем не отличалась от блокнота с нескучным отладчиком.

Другой вопрос в том, зачем вам ассемблер? Для прикладных задач навряд ли он вам пригодится. Как хобби - не самый рациональный выбор, так как есть множество более интересных вариантов. Как что-то крутое, стоящее у основ мироздания, чтобы гордиться собою - опять мимо, ассемблер, он конечно стоит где-то у основ, но в современном мире без понимания сферы его прикладного использования он вреден - мозг грузите, тепло вырабатываете, а пользы от этого никакой, соответственно в его "крутости" 0 (ноль) крутости. Лучше тогда С/C++ изучить. Хотя бы сможете написать что угодно для чего угодно, если вдруг захочется.
Ответ написан
gbg
@gbg Куратор тега Linux
Любые ответы на любые вопросы
Дам вам смешную наводочку - WINE запускает виндавозные программы на линуксе без перекомпиляции. Отсюда следует, что ассемблер и там и там одинаковый, единственное, что меняется - это порядок дерганья системных вызовов, который прост как палка и учится за один вечер.

Проблема программирования на ассемблере под БОЛЬШИЕ архитектуры в том, что как правило, современный компилятор делает это лучше чем вы. И даже если ваш код x64 на вашей тачке работает, он может не работать на тачке соседа, у которого AMD.
Ответ написан
XXXXPro
@XXXXPro
Fullstack Web developer
То, какой синтаксис использовать, зависит от компилятора. Смотрите fasm, yasm и т.п., какой-то из них точно поддерживает Intel-синтаксис.
Но в целом писать под современные OS на asm не особо интересно, так как почти все сводится к «затолкать параметры в стек или регистры и сделать системный вызов», работать напрямую с оборудованием возможности особо нет. И единственный плюс — это можно получать исполняемые файлы меньших размеров.
Так что asm сейчас имеет смысл учить только либо для того, чтобы лучше понимать, как работает процессор (но и то можно особо не углубляться), либо если собираетесь заниматься reverse engineering чужих программ, либо хотите попробовать себя в написании собственной OS (и то особого смысла в этом нет, лучше уж примкнуть к команде той же Kolibri OS).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы