Разница между masm32 и masm? - PullRequest
       40

Разница между masm32 и masm?

5 голосов
/ 02 ноября 2010

Я пытаюсь изучить сборку для окон и вижу, что есть 2 ассемблера:

masm: https://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64

masm32: http://masm32.com/index.htm

это эквивалентно?какой я должен выбрать, чтобы изучить сборку для Windows?

Ответы [ 3 ]

4 голосов
/ 02 ноября 2010

Это оба MASM (по-видимому), просто разные версии. Я бы обычно использовал официальную (MS) ссылку. MASM также является частью Windows SDK - если вы его установите, он содержит ML.exe в каталоге bin.

Если вы просто используете его для изучения ассемблера, используемая версия MASM не имеет большого значения. В более новых версиях MASM добавлена ​​поддержка 64-битных (ML64.exe) и более новых инструкций по мере их добавления в набор команд x86, но это все. Основными различиями между разными ассемблерами являются разные диалекты. Существует три основных диалекта ассемблера x86: синтаксис MASM, синтаксис NASM и синтаксис as в стиле Unix (раньше также использовался Borland TASM, но в настоящее время он практически мертв). MASM, NASM и YASM используют одну и ту же инструкцию и имена регистров, но имеют некоторые слегка отличающиеся соглашения (dword ptr [blah] против dword [blah] и т. Д.) И довольно разные языки макросов. MASM также имеет несколько высокоуровневых конструкций, таких как .if / .endif, invoke и т. Д., Которые не существуют в других ассемблерах. Является ли это преимуществом или нет - дело вкуса, я лично предпочитаю синтаксис стиля NASM, потому что он более регулярный, и я считаю, что макропроцессор удобнее в использовании, но это дело вкуса.

as - это другое дело. Он использует совершенно другой синтаксис и названия команд, которые отличаются от приведенных в руководствах Intel. Это значение по умолчанию для большинства вариантов Unix (а также для компиляторов, которые исходят из этой среды, например, GCC), но в основном не используются вне этой среды. Текущие версии GNU as также поддерживают синтаксис Intel, что устраняет большинство синтаксических различий, но в целом as в основном предназначен как бэкэнд-ассемблер для компиляторов, а не как полноценный макро-ассемблер, поэтому он все еще имеет очень ограниченный набор функций по сравнению с MASM или NASM / YASM.

1 голос
/ 02 ноября 2010

Как представляется, MASM32 - это целый SDK с редактором и т. Д. То, что вы можете загрузить здесь - это просто сам ассемблер для использования вместе с Visual C ++ 2005 Express Edition (см. «Системные требования»).Так что, если вы хотите начать с нуля, скачайте MASM32 Sdk, который, как мне кажется, лучше всего подходит для начинающих.Просто прочитайте эту страницу здесь, чтобы получить больше информации о MASM.

0 голосов
/ 29 июня 2011

MASM32 - это целый SDK, как сказал Джони. Он содержит редактор, некоторые файлы справки и практически все, что вам нужно для написания кода на языке MASM. Также стоит отметить, что MASM32 действительно содержит 8-ю версию MASM; Вы ничего не пропускаете. Я лично рекомендую MASM32 в качестве пакета, он значительно облегчает запуск в MASM, но вы можете сделать все это с нуля и использовать только оригинальный MASM-ассемблер и разобраться с этим.

...