2013-12-19 4 views
0

Я с нетерпением жду изучения языка ассемблера.Типы языка ассемблера

Я искал веб-сайт для учебника и нашел различные учебники с различным синтаксисом сборки.

Есть ли разница между ассемблером 8086, nasm и gcc?

Каков наилучший способ изучения кода на языке ассемблера?

спасибо.

ответ

1

В основном есть два варианта на чипсете x86, который равен AT&T или Intel snytax. Большинство людей, которых я знаю, предпочитают синтаксис Intel, потому что это намного легче понять, но, конечно, это тоже вопрос привыкания. Когда я узнал о сборке на 6510 или M68000, я обнаружил, что синтаксис AT T близок, он довольно запутан с его адресными режимами IMO.

Внушая НКУ писать сборку SourceFile использует AT & T синтаксиса по умолчанию, но вы можете переключиться, что Intel, а также с помощью

gcc -S -masm=intel test.c 

nasm ассемблера и GCC является компилятором, чтобы они имеют совершенно разные цели.

Что касается учебной сборки, есть много учебников, например The Art of Assembly. Но если вы действительно хотите это узнать, IMO лучше всего начать с debug и ввести некоторые инструкции, посмотреть, что они делают, и как они меняют реигстеры и флаги, сначала пишут небольшие циклы.

Таким образом вы можете сфокусироваться на инструкциях и не сражаться с синтаксисом источника ассемблера.

0

Я бы не начал с x86, но не был хорошим набором первых инструкций, даже если у вас есть оборудование. ARM, msp430, avr и некоторые другие лучше и имеют симуляторы с открытым исходным кодом, где вы можете получить лучшую видимость. Я начинал с малого, просто добавляя или добавляя несколько цифр, записывая ячейку памяти, читаю ее обратно, что-то вроде этого. Симуляторы (могут) не позволяют вам делать системные вызовы, чтобы «видеть» ваши результаты, также они могут определенно помочь вам справиться с зависаниями и авариями, которые вы получите, и что ИМО ведет к отказу от всего этого. Как только вы узнаете больше, вы можете переключиться на аппаратное обеспечение или попробовать другой набор команд (каждый новый будет экспоненциально проще, чем предыдущий), что приведет к x86, если вы все еще чувствуете, что есть необходимость ... С x86 я рекомендую вернуться к в начале дня, найдите симулятор 8088/86, изучите исходный набор команд, а затем, если вы все еще чувствуете необходимость, переходите к 80386 и новее. Вам также нужно будет иметь возможность переключать форматы в вашей голове, используя gnu, используя AT & T был кардинальным грехом (люди-ассемблеры gnu фиксируют эти грехи регулярно BTW, это почти ожидается), но, к сожалению, у нас теперь есть эти два конкурирующих формата. С практикой вы можете легко определить, какой формат используется для проверки кода, но умственное переключение назад и вперед все еще может быть проблемой.

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