Перегружены во время обучения сборке. Ориентация пожалуйста - PullRequest
4 голосов
/ 25 января 2010

Недавно я решил, что изучение ассемблера было бы хорошей идеей, но сейчас я действительно ошеломлен всем материалом, который я прочитал о сборке на форумах, здесь, tutos и т. Д. (Некоторые из них действительно старые), поэтому я хотелось бы иметь некоторую ориентацию относительно языка ассемблера, как «компилировать» и т. д., я также хотел бы, чтобы он мог работать на моем процессоре, чтобы я мог попрактиковаться, вот мои детали процессора из CPU-Z

AMD Athlon 64 3200 +

Поддерживаемые инструкции: MMX (+), 3DNow! (+), SSE (1, 2, 3), x86-64

Примечание: Если возможно, я хочу, чтобы это было ориентировано на Windows (это действительно имеет значение?)

Заранее спасибо.

Ответы [ 8 ]

7 голосов
/ 25 января 2010

Я думаю, что один из лучших способов начать изучение языка ассемблера - взглянуть на вывод, созданный компилятором для языка, с которым вы знакомы. Например, если вы знакомы с Visual C ++, напишите очень простой код на C ++ и используйте встроенный отладчик, чтобы показать язык ассемблера, созданный компилятором (убедитесь, что вы компилируете с оптимизацией off ) , Напишите несколько простых циклов for, присваивание, арифметику и т. Д. И посмотрите, как выглядит созданный язык ассемблера.

Для обучения вам не нужно ничего знать о расширениях набора инструкций, которые вы указали в своем вопросе. Все, что вам нужно, это 32-битные инструкции x86. Вы можете узнать о 64-битных инструкциях, MMX, SSE и т. Д. Позже, когда у вас будет фундамент.

Как только вы поймете основы, вам понадобится ассемблер. Хороший, хорошо поддерживаемый универсальный ассемблер с открытым исходным кодом - nasm .

4 голосов
/ 25 января 2010

Мой совет - выбрать действительно старый 8-битный процессор, такой как 8080, и использовать симулятор, чтобы просто понять основные понятия. Откровенно говоря, если вы знаете один язык ассемблера, выучить другой довольно легко (я знаю около восьми или около того), но первый шаг самый трудный.

1 голос
/ 25 января 2010

Вы говорите, что ориентированы на Windows, но самый простой способ начать - это на самом деле выполнить программирование DOS / Command для oldskool в ассемблере. Дайте себе простые задания, такие как «Напишите программу, которая печатает цифры от 1 до 10 на консоли» или «Напишите программу, чтобы прочитать строку и отменить ее».

1 голос
/ 25 января 2010

Я бы спросил, стоит ли переходить к изучению x86-64.

Как правило, было бы неплохо начать с «более простого» языка RISC (вы можете получить эмуляторы для многих процессоров RISC), чтобы дать вам основы основ сборки, а затем изучить более сложные архитектуры после все еще заинтересованы.

0 голосов
/ 27 ноября 2010

Я 4 месяца изучаю ассемблер по книге Рэндалла Хайда, искусству языка ассемблера. Это лучшее руководство по ассемблеру, которое я когда-либо встречал. Вы можете скачать его с здесь

0 голосов
/ 26 января 2010

Вы можете попробовать взглянуть на некоторые документы, подготовленные сообществом Rom Hacking, нацеленные на более простые системы. Некоторые из руководств сообщества по сборке могут быть немного легче проглотить, поскольку предполагаемая аудитория немного отличается. Хотя это, конечно, не самая передовая технология, она может немного заинтересовать вас, изучая, как работает старое оборудование, если вы узнаете о чем-то знакомом. Кроме того, некоторые эмуляторы имеют графические средства отладки, с которыми, в зависимости от ваших вкусов, может быть легче начать работу, чем с помощью отладчиков на уровне машины из командной строки. С другой стороны, также важно учитывать, что эмуляция и модификация игры имеют сомнительную законность.

0 голосов
/ 25 января 2010

Если вы хотите выучить ассемблер, вы должны научиться работать на компьютере. И я не говорю о том, что «эта библиотека в моей ОС ответственна за то и это». Я имею в виду аппаратное обеспечение. Как построен ЦП, что такое АЛУ, как работает память, как выполняется программа. Это первый шаг, после которого вы можете начать изучать ассемблер - вот что такое ассемблер - управлять всеми этими устройствами. И если вы не знаете, как это работает, вы не можете это контролировать.

Я предлагаю поискать книгу о компьютерных технологиях / архитектуре, это сэкономит вам более 100 часов работы в Google и чтения материалов, которые вы не понимаете.

И самая легкая арка для начала - MIPS.

0 голосов
/ 25 января 2010

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

Недостаток: сборка m68k не очень похожа на сборку x86, поэтому у вас будет еще один этап обучения после того, как вы закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...