Действительно ли ассемблер является 'ассемблером', конкретным также? Какой ассемблер является лучшим?

Я изучаю ассемблер. Я запустил с Paul A. Carter PC Assembly Language который использует NASM (Ассемблер Netwide). Затем в середине я переключил и начал читать Introduction to 80×86 Assembly Language and Computer Architecture который использует MASM.

В NASM я раньше писал для инициализации байта

дб 110101b

В MASM я использую

БАЙТ 110101b

Я посреди чтения. Так как это Ассемблерные директивы, они будут отличаться для каждого ассемблера.правильно? Разве эти ассемблерные разработчики не следуют стандарту для этих директив? Поскольку, Они знают, что мнемоникой является конкретный ЦП. Так, его боль в заднице, чтобы учиться и кодировать в ассемблере.

Теперь, если они следуют различным директивам, его больше боли, если Вы изменяете ассемблер или если Вы переключаете операционную систему (разработчик MASM находится в глубокой проблеме, если он переходит к Linux).

Мой беспорядок, я должен познакомить меня с NASM или MASM? Я - поклонник окон, но мне, вероятно, придется работать (в будущем) на Linux также.

Каждая книга должна быть названа "_________ Ассемблер с помощью __________ Ассемблер"

5
задан claws 3 January 2010 в 16:42
поделиться

4 ответа

К сожалению, никогда не было стандарта для языка ассемблера. Вам просто нужно будет изучить директивы, которые поддерживает ваш ассемблер. К счастью, большинство директив, хотя и имеют разные имена, семантически сходны как db и BYTE.

Но подождите! Становится хуже, особенно для x86. У вас есть (как минимум) две формы кода, которые ассемблеры могут принять: формат Intel и AT&T. Формат AT&T меняет порядок следования большинства операндов на инструкции (или наоборот ;-).

NASM, вероятно, лучший выбор для переносимости, но вы также можете посмотреть на GNU ассемблер...

4
ответ дан 14 December 2019 в 04:39
поделиться

Синтаксис Intel / Синтаксис AT&T

С x86, в частности, первые ассемблеры были от Intel, а затем в значительной степени совместимые ассемблеры от Microsoft образовали одну ветку.

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

Но Unix был также важен, и у него была совершенно другая линия ассемблера с разными традициями и конвенциями.

Первоначальным поставщиком Unix была компания AT&T, которая владела интеллектуальной собственностью, разработанной в Bell Labs. Серия проектов BSD, а затем и Linux продолжили эту традицию. Эти ассемблеры исторически обрабатывали операндов слева направо, имеют запасную конструкцию, оптимизированную по скорости, и при использовании человеком они обычно используют cpp для макросов и кондиционеров, даже если ассемблер также имеет параллельные возможности.

В наши дни вы, вероятно, используете VS на MS или Gnu на Linux или Mac, но именно поэтому мы все еще говорим AT&T против Intel. Ассемблер GNU имеет возможность ассемблировать оба способа, хотя на самом деле он все еще находится в лагере AT&T

.
2
ответ дан 14 December 2019 в 04:39
поделиться

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

.
1
ответ дан 14 December 2019 в 04:39
поделиться

Процессоры все подтверждены в производителе, поставляемом поставке. Это обычно превратилось в нормативный синтаксис (наряду с ассемблером, предоставляемым поставщиком) для монтажных программ на конкретной платформе. Следовательно, многие процессоры из одного поставщика имеют аналогичный синтаксис.

Ситуация стала более сложной со вторым источником процессоров и возможным развитием многоцелевых ассемблеров, которые для исторических причин используют в основном последовательный синтаксис на всех платформах. Это также предоставляет некоторые утверждаемые преимущества при портировании кода по платформам.

Ваш лучший выбор: выберите нотацию, с которыми вам удобно и принять книги с различным синтаксисом, см. Если вы можете найти перекрестные системные библиотеки макроса или инструменты перевода или укусите пулю и изучите несколько диалектов. Третий обычно терпимо, хотя он делает строительство частных библиотек, трудоемких.

1
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: