Автор Тема: Программирование на языке assembler'а в Debian  (Прочитано 7973 раз)

0 Пользователей и 1 Гость просматривают эту тему.

vladimirse

  • Гость
Доброго времени суток, уважаемые!
Хочу заняться изучением языка assembler, но во всех книгах ориентация идет на Dos и Windows.
В принципе, как я понял nasm чем то похож на masm и tasm, т.е. вполне можно разобраться.
Может посоветуете литературу по данной теме, для совсем зеленых и отладчик на подобие ollydbg, есть вроде edb но его нет в репах Debian.
 

Оффлайн Olej

Re: Программирование на языке assembler'а в Debian
« Ответ #1 : 20 Июня 2012, 12:31:10 »
Хочу заняться изучением языка assembler, но во всех книгах ориентация идет на Dos и Windows.
В принципе, как я понял nasm чем то похож на masm и tasm, т.е. вполне можно разобраться.
Может посоветуете литературу по данной теме, для совсем зеленых и отладчик на подобие ollydbg, есть вроде edb но его нет в репах Debian.

1. нет ничего проще...

2. только нужно очень сильно разобраться: нужно ли вам это (я думаю, что в подавляющем большинстве случаев - не нужно :-\)
ответьте себе на вопрос: "зачем мне ассемблер?" - ведь С и есть такой же ассемблер, но в более читаемой записи.

3. не заморачивайте себе голову с nasm, masm, tasm etc. - в Linux реально практикуется единственный ассемблер: AT&T - GCC, все остальные - это для экзотики и ... для понтов  ;D

4. см. сюда :):
Ассемблер в Linux
Разработка модулей ядра Linux: Часть 15. Ассемблерные возможности компилятора GCC
inline assembler gcc
Инструменты Linux для Windows-программистов
возможно это позволит вам внести какую-то ясность и составить себе представление.

5. Есть книга, достаточно приличная для начального въезжания в предмет:


« Последнее редактирование: 20 Июня 2012, 12:34:06 от Olej »
 

vladimirse

  • Гость
Re: Программирование на языке assembler'а в Debian
« Ответ #2 : 01 Июля 2012, 00:32:23 »
Именно эта книга у меня есть)))
Ассемблер мне нужен не для понтов, а что бы лучше понимать устройство цифрового мира. Я не собираюсь его применять, для решения моих задач вполне достаточна perl'а.
Большое спасибо за ответ!
 

Оффлайн Olej

Re: Программирование на языке assembler'а в Debian
« Ответ #3 : 02 Июля 2012, 00:12:35 »
Ассемблер мне нужен не для понтов, а что бы лучше понимать устройство цифрового мира.
Лучше - не будет  :D
 

vladimirse

  • Гость
Re: Программирование на языке assembler'а в Debian
« Ответ #4 : 02 Июля 2012, 00:56:02 »
Почему?
 

Оффлайн Olej

Re: Программирование на языке assembler'а в Debian
« Ответ #5 : 02 Июля 2012, 16:53:48 »
Почему?
Потому что классический С, на котором написан Linux - это и есть ассемблер ;) ... но с более понятным синтаксисом + независимым от платформы.
А совсем уж аппартно-зависимые вещи дописываются на инлайн ассемблерных вставках, синтаксис которых существенно отличается от AT&T (не говоря уж про синтаксис Intel, который вообще к Linux слабо применим).
 

vladimirse

  • Гость
Re: Программирование на языке assembler'а в Debian
« Ответ #6 : 03 Июля 2012, 10:42:20 »
Спасибо за разъяснения!
 

Оффлайн Vvasel

gcc умеет компилировать ассемблер (на убунте точно). А язык С - сильно сомневаюсь, что, как выразился уважаемый Olej, "С - это и есть ассемблер". Попробуйте написать любую прогу на С и на ассемблер. Как минимум, эти проги будут сильно отличаться по размеру (на С проги гораздо тяжелее), и по скорости (ассемблерные проги работают с такой скоростью, насколько это возможно при данных условиях). Знать ассемблер нужно, хотябы затем, чтобы потом понимать выхлоп дизассемблера, вот основное применение знаний ассемблера. А какие вещи можно творить, хорошо зная ассемблер - уму не постижимо =) И вообще,
классический С, на котором написан Linux - это и есть ассемблер ;) ... но с более понятным синтаксисом + независимым от платформы.
Что за ересь? Кто сказал, что ассемблер как-то зависит от платформы? Если кто не знал, на нём можно писать, вообще не привязывая ни к какой платформе (разве что аппаратной).
И напоследок, Ассемблер - наше всё! Знаешь ассемблер - ты крут, чувак! =)
 

Оффлайн corner

(разве что аппаратной).
Вот здесь собака и порылась!  ;D
Вы про разные платформы говорите (Операционная система и архитектура процессора).
Да, и ассемблер для разных платформ(архитектур процессора) разный. Система команд и регистров разная...
 

Оффлайн smallNix

Всем доброго вечера. Очень удивлён, что никто не сказал главного: прежде чем искать книгу по ассемблеру - определись под какой процессор ты собираешься писать программу. После этого изучай архитектуру процессора. Под Интел - очень хорошая книга "Микропроцессоры Intel Архитектура, программирование и интерфейсы" (Барри Брей) В ней примеры под DOS, но это совершенно не важно, потому что ты поймёшь как программируют на асме, что это такое и как связано непосредственно с архитектурой. Потом тебе будет не сложно переехать на другой инструментарий. Если выберешь процессор PDP-11 или VAX - тут совсем другая песня (но не советую их брать - они несколько устарели), может тебе будет более интересен асм для микроконтроллеров - тогда посмотри в сторону Atmel - по крайней мере сможешь сляпать простейшего робота. И, наконец, самое вкусное - асм для ARM - но эта тема очень обширна (не полная документация на процессор может составлять около 8000 листов в pdf - придётся покарпеть ;) )
 Теперь по поводу тождественности Си и Асма. Это ересь. Полная. Конечно, все программы компилируются в бинарный код, но языки разные. Си - язык, независимый от платформы (в первую очередь от аппаратной), для того и создавался, а асм - язык полностью зависящий от архитектуры - у каждого семейства процессоров он свой. Писать на ассемблере труднее и дольше, но зато, при правильном использовании программа получается меньше и быстрее. С другой стороны, на Си (и С++, конечно) можно написать очень мощное приложение, гораздо быстрее чем на асме. Поэтому, на последнем, как правило, пишут критические (по производительности или памяти) секции кода. Или когда код должен быть завязан на выполнение какой-нибудь аппаратной функции (например надо после переключения порта ввода-вывода подождать пять циклов процессора) - тут уж без асма придётся стоять на голове :)
Кто-то же должен что-то делать...
 

Оффлайн Febian

  • Новичок форума
  • Сообщений: 4
Re: Программирование на языке assembler'а в Debian
« Ответ #10 : 04 Июня 2013, 09:04:48 »
Знания ассемблера априори не могут быть бесполезными.
 

Оффлайн sunny_side

Re: Программирование на языке assembler'а в Debian
« Ответ #11 : 04 Июня 2013, 15:24:11 »
Как пример целесообразного применения ассемблера можно рассмотреть статью Ульриха Дреппера:
http://www.akkadia.org/drepper/summit09-stream.pdf
Она на английском, но его там немного :) - больше примеров кода с техническими подробностями.

Если просмотреть блог и домашнюю страницу автора, можно сложить впечатление о том, зачем и на каком уровне используется низкоуровневое программирование в Линуксе.
http://www.akkadia.org/drepper/
http://udrepper.livejournal.com/

Сам автор фигура в Линукс-Сообществе протеворечивая, конечно :), но многие вещи освещал неплохо.
 

yura_n

  • Гость
Re: Программирование на языке assembler'а в Debian
« Ответ #12 : 07 Июля 2013, 18:02:18 »
Потому что классический С, на котором написан Linux - это и есть ассемблер ;) ... но с более понятным синтаксисом + независимым от платформы.
Я думаю, что вы не совсем правы. Например, в том-же СИ, человеку с программированием незнакомому, от попыток понять как работают указатели может крышу сорвать. ;D А человеку, который программировал на каком-нибудь ассемблере, это понять достаточно несложно, так как прямое обращение к ячейкам памяти для него не абстракция. Несмотря на большую гибкость СИ, ассемблер все-же ближе к "железу" и дает его лучшее понимание.
 

seisros

  • Гость
Re: Программирование на языке assembler'а в Debian
« Ответ #13 : 07 Июля 2013, 19:39:49 »
Понты.. . Нужно или не нужно. Лично я на windows изучал TASM, пробуя в linux NASM и C++ понял что разница очень большая по сравнению с ms windows.
Во первых пути везде разные что меня бесило и заставляло переходить на freebsd. Не ну как так можно? 12 разных вариантов линковок и ещё более путей где лежат эти самые библиотеки и заголовки. Для каждого дистрибутива по разному. И главное, ни где автор дистра не выкладывает где там у него это всё спрятанно. Вот зайдёш в сообщество дистра, пару лет по наблюдаеш за сообществом. Тогда всё станет ясно. А так чтобы сразу, накачал учебников и всё понял. такое по моему не реально.
 

Оффлайн Olej

Re: Программирование на языке assembler'а в Debian
« Ответ #14 : 08 Октября 2013, 20:50:41 »
Потому что классический С, на котором написан Linux - это и есть ассемблер ;) ... но с более понятным синтаксисом + независимым от платформы.
Я думаю, что вы не совсем правы. Например, в том-же СИ, человеку с программированием незнакомому, от попыток понять как работают указатели может крышу сорвать. ;D А человеку, который программировал на каком-нибудь ассемблере, это понять достаточно несложно, так как прямое обращение к ячейкам памяти для него не абстракция. Несмотря на большую гибкость СИ, ассемблер все-же ближе к "железу" и дает его лучшее понимание.

1. для ассемблера (там где он уж крайне необходим) в Linux есть такое расширение GCC как инлайновые ассемблерные вставки (они же есть и в новом компиляторе Clang, который идёт на замену GCC).

2. если посмотрите код ядра Linux, то подавляющее большинство ассемблерных фрагментов там (99.9% :)) написаны как ассемблерные вставки ... и только 1 или 2 очень коротких файла оформлены как отдельно компилируемые файлы.

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

4. за исключением случаев работы в области embedded применений и специальных процессорных архитектур (малых зачастую) ... но это очень редкий случай.
 
 

Теги:
     

    Программирование: введение в профессию. Том 1,2,3,4

    Автор n0m4d

    Ответов: 1
    Просмотров: 1200
    Последний ответ 08 Июня 2020, 12:20:44
    от gardarea51
    Программирование на php и создание локального сервера

    Автор sCode

    Ответов: 5
    Просмотров: 3039
    Последний ответ 03 Марта 2012, 06:03:55
    от Babay
    [Решено] Matlab программирование и RS-232 port

    Автор Fang

    Ответов: 0
    Просмотров: 1972
    Последний ответ 02 Августа 2013, 14:11:40
    от Fang
    Программирование на Java в Debian

    Автор sCode

    Ответов: 13
    Просмотров: 8358
    Последний ответ 03 Декабря 2012, 11:40:56
    от everloginme