LINUX.ORG.RU

Assembler в Linux


0

0

В следующем семестре я буду вести практические занятия по ассемблеру в институте. К сожалению, последний раз я им пользовался ещё первокуром и ещё под ДОС-ом. В связи с этим вопросы:
1) Какое толковое руководство (в электронном виде) посоветуете?
2) Какой есть более-менее стандартный компилятор/линковщик ассемблерного кода для x86 или x86_64 под Linux?
3) Какие есть хорошие (полезные или красивые) задачи, для которых полезен ассемблер?


есть два варианта синтаксиса: AT&T и интелевый (ты скорее всего учил последний). для первого варианта есть gas, для второго я рекомендую nasm.

generatorglukoff ★★
()

1) Начать лучше всего с замечательной книги Programmin from the Groun Up. Она свободно (не варез) доступна в электронном виде.

2) Мне синтаксис AT&T кажется более логичным и красивым, поэтому советую gas (тем более в вышеупомянутой книге используется именно он).

3) Если учебные, то например, интерпретатор брэйнфака и других простых эзотерических языков - вполне тянет на лабу.

satanic-mechanic
()
Ответ на: комментарий от satanic-mechanic

Чего-то по клавишам плохо попадаю... конечно же "ProgramminG from the GrounD Up".

satanic-mechanic
()

1) http://www.wasm.ru/publist.php?list=28 особенно последняя статья. Книги толковые видел только для dos и применительно к tasm - том сван "освоение turbo assembler". 2) .... 3) если честно то в linux - никаких :) Кроме оптимизации небольших кусков кода.

koTuk
()

> 3) Какие есть хорошие (полезные или красивые) задачи, для которых полезен ассемблер?

Для обучения - самые простые. Когда я учился, у нас были обыкновенные типичные задания (сортировки массивов разными методами и прочее, предварительно считав числа из текстового файла).

Из более сложных: написать дизассемблер на ассемблере, и чтоб дизассемблированный файл компилировался обратно. И ведь писали...

smh ★★★
()

1) Вот тут один энтузиаст начал писать об ассемблере в Linux. По-идее, тянет на введение в ассемблер при условии понимания работы машины достаточного, чтобы писать на Си (т. е., нужно понимать указатели и машинную арифметику).

http://ru.wikibooks.org/wiki/%D0%90%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5...

(И кстати, там есть интерпретатор brainfuck в качестве примера :)

2) Я тоже агитирую за синтаксис AT&T, и соответственно, gas. В качестве непосредственно запускаемой команды может выступать gcc, тогда он будет работать и как препроцессор, и компилятор, и линковщик (как и с кодом на Си).

3) Реально полезен ассембрлер сейчас разработчику (в 99%) в виде отдельных функций, которые содержат необходимый минимум ассемблерного кода для создания нужной абстракции.

Например: в SSE 4.2 появилась инструкция для подсчёта CRC32. В исходники ядра добавлен файл arch/x86/crypto/crc32c-intel.c

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

> http://www.wasm.ru/publist.php?list=28 особенно последняя статья.

Последняя статья лежит на ru.wikibooks.org с исправлениями ошибок (согласно истории правок).

anonymous
()

Зачем он нужен? Ц хватает с головой. Если не хватает, что-то тут не так.

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

асм вправляет мозг. изучение Ц после асма дается легче, т.к. ты уже понимаешь, что мир не прост :)

Pi ★★★★★
()
Ответ на: комментарий от smh

полностью согласен.

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

Pi ★★★★★
()
Ответ на: комментарий от anonymous

> Зачем он нужен? Ц хватает с головой.

Так и про C можно то же самое сказать. Это можно использовать:
1) для общей эрудиции
2) тренировки мозгов
3) может пригодиться в самых неожиданных местах

Например, не так давно отладил клиентский скрипт используя только strace и зная механизм системных вызовов. После этого открыл исходник скрипта и сразу тыкнул пальцем в то место где ошибка.

true_admin ★★★★★
()
Ответ на: комментарий от klalafuda

Тем, кто не учит ассемблер - не вправляет.

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

> Тем, кто не учит ассемблер - не вправляет.

В вашем случае возможны два варианта.

1. Вы учили ассемблер, и он вправил вам мозги "в жопу". Простите, но в этом случае есть смысл не доверять вашему мнению, как мнению человека с мозгами в том самом месте. 2. Вы не учили ассемблер и рассуждения ваши сродни "не читал, но осуждаю"... Также не вызывает доверия.

P.S. Может обоснуете свою точку зрения?

satanic-mechanic
()
Ответ на: комментарий от Miguel

> Открыть исходник сначала, видимо, не позволили религиозные соображения.

И что дальше? По шагам в уме выполнять сотни строчек перловой каши студента-первокурсника?

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

> По шагам в уме выполнять сотни строчек перловой каши студента-первокурсника?

Выбросить. Всё равно такое лечить - только калечить.

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

> Выбросить. Всё равно такое лечить - только калечить.

Спасибо, уж лучше я за 20мин решу проблему чем потеряю клиента.

true_admin ★★★★★
()

2. Тут уже сказали: nasm либо gas. nasm, если ты учил под ДОСом, скорее всего тебе будет понятнее.

3. В ассемблер замечательно ложатся задачки требующие использования автоматов. Как вариант: калькулятор

kim-roader ★★
()

>В следующем семестре я буду вести практические занятия по ассемблеру в институте.

>К сожалению, последний раз я им пользовался ещё первокуром и ещё под ДОС-ом.

Вот оно - российское высшее абразованее!

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