2010-01-24 3 views
4

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

AMD Athlon 64 3200+

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

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

Спасибо заранее.

+0

я закончу писать учебник после того, как я стал опытным XD – 2010-01-24 22:18:56

+0

Спасибо за все ваши ответы – 2010-01-24 22:52:48

ответ

7

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

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

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

1

Я бы поставил под вопрос, стоит ли переходить прямо в изучение x86-64.

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

+0

x64 выглядит будущее не так ли? Пока мы не получим 128-битные процессоры =) В любом случае, знаете ли вы какой-либо ресурс для обучения сборке x64? Для сборки noobs: P – 2010-01-24 21:55:53

+1

Моя рекомендация: * не делать *. По крайней мере, не поначалу. Сначала изучите MIPS или SPARC, чтобы получить голову вокруг сборки, а затем перейти к более сложной архитектуре. –

+0

x64 - прекрасный процессор ... но он также невероятно сложный и неинтуитивный. –

4

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

+1

Или новый процессор, который предназначен для программирования на ассемблере, например, как AVR в Arduino: http://www.sparkfun.com/commerce/product_info.php?products_id=9284 –

1

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

+0

Как я могу проверить что-то подобное? – 2010-01-24 21:57:24

0

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

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

0

Если вы хотите изучить ассемблер, вам нужно узнать, как работает компьютер. И я не говорю о том, что «этот lib в моем os несет ответственность за это и это». Я имею в виду аппаратное обеспечение. Как построен процессор, что такое ALU, как работает память, как выполняется программа. Это первый шаг, тогда вы можете начинать изучение ассемблера, что и есть ассемблер - контроль всех этих устройств. И если вы не знаете, как это работает, вы не можете его контролировать.

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

И самая простая арка, чтобы начать с i MIPS.

0

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

0

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

Смежные вопросы