2011-12-18 2 views
4

Я просматриваю документацию по процессору Intel и записываю несколько базовых ассемблерных кодов одновременно. У меня есть и nasm, и as (GAS) на моем сервере, и я понимаю основные отличия обоих сборщиков.NASM против AT & T Синтаксис: в чем преимущества?

В долгосрочной перспективе:

  • Сосредоточение на какой из них синтаксис является лучшей идеей?
  • В чем преимущества и недостатки этого синтаксиса?
  • Какой из них более широко используется и понимается?

Я также благодарен за любые пожелания, которые вы могли бы поделиться со мной.

+1

Я предпочитаю синтаксис Intel и * очень * не нравится синтаксис AT & T, даже если вы видите синтаксис AT & T намного больше в Linux. Этот вопрос похож на ваш: [AT & T против Intel Синтаксис и ограничения?] (Http://stackoverflow.com/questions/972602/att-vs-intel-syntax-andlimitations) – AusCBloke

+0

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

ответ

4
  • Фокусировка на том, какой из этих синтаксисов является лучшей идеей?

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

  • В чем преимущества и недостатки этого синтаксиса?

В T синтаксисе AT & есть немного много %, даже больше, если вам нужно использовать макросы. OTOH Я предпочитаю источник , пункт назначения, но это личный вкус, другие могут предпочесть его наоборот, потому что он напоминает порядок записи оператора присваивания, например, в C (и многом другом).

I INTEL синтаксис - это непристойности, такие как DWORD PTR, где в AT & T достаточно маленького прилагаемого l. Точная орфография мнемоники во многих случаях отличается, я считаю AT & T более логичным, хотя, конечно, путь Intels - это стандарт. Режимы адресации в Intel несколько читабельны.

  • Какая из них более широко используется и понятна?

Я считаю, AT & T больше используется, из-за повсеместность Linux на встраиваемых платформах, где ассемблер гораздо чаще используется в других программных проектов. Есть больше ассемблеров, которые понимают синтаксис Intels, это правда, но я считаю, что gcc/gas больше используется в поле, где ассемблер имеет значение/полезен.

4

Сфокусирован на том, какой из этих синтаксисов является лучшей идеей?

Какой бы вы комфортно работать с

Каковы преимущества и недостатки этих синтаксиса?

Для меня: Преимущества: - Intel: читаемый - AT & T: больше платформ (так 'как' доступен на многих платформах) Недостатки: - Intel: многие монтажников, но очень мало общего сходство, многие функции на ассемблере конкретных - AT & T: это добавляет +/- в ваших глазах

Какой из них более широко используется и понял?

AFAIK Синтаксис Intel более широко используется. Вы можете проверить количество ассемблеров, поддерживающих Intel vs AT & T.

+0

Как синтаксис AT & T менее читабельен? Я нахожу, что суффиксы размера для операндов более конкретизированы, чем «dword». Есть что-то еще, что мне не хватает? – Hawken

+2

Ну ... некоторые люди имеют краткий = читаемый в виду, но такая читаемость применима только к тем, у кого достаточно опыта. Даже опытный может иногда забывать (когда-либо код в APL?). Хотя я читаю, что я имею в виду, это буквально читаемо. – LeleDumbo

+1

Я нахожу, что опытный момент причудливый, когда я начал изучать сборку не месяц назад, и почти не имею опыта, и с самого начала я нашел AT & T синтаксис более интуитивным. Одним из незначительных исключений является использование postfix 'l' для 32-битных операндов вместо более логичного' d' для сокращения 'dword'. – Hawken