Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Открытый Watcom Assembler или WASM - это ассемблер x86, производимый Watcom , основанный на Watcom Assembler, который есть в компиляторе Watcom C / C ++ и Watcom FORTRAN 77 . [1] [2] [3] Дальнейшая разработка ведется над 32- и 64-разрядным проектом JWASM. [4], который более точно соответствует синтаксису ассемблера Microsoft . [5]

Существуют экспериментальные ассемблеры для PowerPC , Alpha AXP и MIPS . [6]

Технические детали [ править ]

Ассемблер [ править ]

  • Встроенная поддержка форматов вывода Форматы вывода Intel OMF
  • Поддерживает наборы инструкций Intel x86 (Pentium MMX, Pentium III-4, 3DNow !, SSE и SSE2).
  • Поддерживает синтаксис макроассемблера Microsoft (MASM) 5 и 6 (неполный). [6]

Дизассемблер [ править ]

Есть связанный дизассемблер Watcom , wdis . У ассемблера нет средств листинга; вместо этого рекомендуется использовать wdis для создания списков. [7] wdis может читать объектные файлы OMF, COFF и ELF, а также исполняемые файлы PE и ELF. Он поддерживает 16-битный и 32-битный набор инструкций x86, включая MMX, 3DNow !, SSE, SSE2 и SSE3. Также встроена поддержка наборов инструкций PowerPC, Alpha AXP, MIPS и SPARC V8 . [8]

Вилки WASM [ править ]

JWasm [ править ]

JWasm - это форк Wasm, созданный Иафетом, со следующими особенностями:

  • Встроенная поддержка форматов вывода Intel OMF (16/32-бит), MS Coff (32-бит и 64-бит), Elf (32-бит и 64-бит), Bin и DOS MZ.
  • Предварительно скомпилированные двоичные файлы JWasm доступны для DOS, Windows и Linux. Для OS / 2 и FreeBSD поставляются файлы сборки.
  • Поддерживает Intel x86 (8086, 80186, 80286, 80386, 80486, Pentium, Pentium Pro), наборы инструкций x86-64 с SIMD (MMX, 3DNow !, SSE, SSE2, SSE3 и SSSE3, SSE4.1 / 2 (начиная с Jwasm) , AVX (начиная с JWasm 2.06), VMX ( Intel VT-x; AMD SVM , последний, хотя и уже реализованный, в настоящее время все еще неактивен) расширения (начиная с JWasm 2.09)).
  • JWasm написан на C. Исходный код является переносимым и успешно протестирован с Open Watcom, MS VC, GCC и другими.
  • В Windows JWasm можно использовать как с Win32Inc, так и с Masm32. Начиная с версии 2.01, он также будет работать с SBS WALK32 Win32 Assembly Language Kit Свена Б. Шрайбера [9]
  • Заголовочные файлы C могут быть преобразованы во включаемые файлы для JWasm с помощью собственного выделенного h2incX Иафета.
  • Исходный код JWasm выпущен под лицензией Sybase Open Watcom Public License, которая разрешает бесплатное коммерческое и некоммерческое использование.
  • Полностью поддерживает синтаксис макроса ассемблера Microsoft 6, все наборы инструкций MASM 8.

Иафет прекратил разработку JWASM в январе 2014 года с версией 2.12pre, но другие участники форума Masm32 [10] продолжили разработку с того места, где остановился Иафет.

HJWasm [ править ]

HJWasm, добавив префикс H в отношении участника форума Masm32 Хабрана, который начал это второе продолжение разработки WASM. Версия 2.13pre была первоначально анонсирована в 2016 году. [11] Новые функции включают:

  • Инструкции:
  • SIMD:
  • MMX : MOVQ и добавлено в 2.13 для дополнения MOVD.
  • AVX2 : VGATHERDPD, VGATHERQPD, VGATHERDPS, VGATHERQPS, VPGATHERDD, VPGATHERQD, VPGATHERDQ, VPGATHERQQ, инструкции общего назначения в кодировке VEX, добавленные в 2.13. Остальные инструкции добавлены в 2.16.
  • AVX-512 : набор VCMPxxPD, VCMPxxPS, VCMPxxSD, VCMPxxPD, VCMPxxSS, AVX-512F, инструкции в кодировке EVEX добавлены в 2.13; VMOVQ добавил 2.13, чтобы дополнить MOVD. Остальные инструкции добавлены в 2.16.
  • Генератор случайных чисел: RDRAND , RDSEED добавил в 2.13.
  • преобразования с половинной точностью: F16C (VCVTPH2PS, VCVTPS2PH) добавлен в 2.13.
  • Intel MPX : добавлено в 2.31.
  • Регистры: RIP, регистры ZMM добавлены в 2.13.
  • ОО языковое расширение добавлено в 2.25.

HASM [ править ]

UASM - это переименованная версия HJWASM, начиная с версии 2.33. Имя было использовано после обсуждения на форуме MASM, в котором изначально предлагалось заменить имя. Название HASM было предложено участником форума habran в ответе №6, [12] и окончательно доработано в конце обсуждения в ответе №33. [13] В цикл выпуска HASM не добавлено никаких известных функций.

UASM [ править ]

Это имя фактически использовалось в версии 2.33 (от 20 мая 2017 г.) на странице продукта Terraspace ltd [14], но было объявлено только в версии 2.34. [15] Изменения в HJWASM включают: [16]

  • Наборы команд: RDPID добавлен в 2.38.
  • AVX-512 : VAESDEC добавлен в 2.38
  • Передача данных: MOVBE добавлен в 2.47. MOVABS добавлен в 2.48.
  • Intel ADX : ADCX, ADOX добавлены в 2.38
  • Intel MPX : поддержка префикса BND добавлена ​​в 2.34. Префикс BND удален из группы инструкций JCXZ в 2.40.
  • Набор инструкций CLMUL : добавлен в 2.46.8, включая псевдооперационные формы CLMUL.
  • Хеширование: набор инструкций SHA добавлен в 2.46.8.
  • Предотвращение доступа в режиме супервизора : CLAC добавлен в 2.38.
  • Расширения постоянной памяти : CLFLUSHOPT добавлен в 2.38.
  • Режимы адресации: 64 бит, абсолютная немедленная (2.37)
  • Выявленные типы
  • Типы записей: полностью поддерживает регистры и до 32-битных полей записи в 2.41.
  • Поддержка 128 бит: добавлено в 2.42, встроенное объявление с типом, добавленным в 2.43.1 / .2.
  • Поддержка цепочки typedef для возвращаемых типов добавлена ​​в 2.46.8.
  • Встроенные типы m512 добавлены в 2.47.
  • Цветовая кодировка консоли: добавлена ​​для Windows, OSX и Linux в 2.43.1 / .2.
  • Вызов функций: Вызов функций в стиле C добавлен в 2.46.

Ссылки [ править ]

  1. ^ Рэндалл Хайд. «WASM: открытый ассемблер Watcom» . Архивировано 02 марта 2012 года . Проверено 11 сентября 2017 .CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  2. ^ Leiterman, Джеймс (2005). «MASM против NASM против TASM против WASM». 32/64-разрядная архитектура языка ассемблера 80x86 . Wordware Publishing, Inc. стр. 481. ISBN. 978-1-59822-002-5. Проверено 1 февраля 2010 .
  3. ^ Leiterman p482 в Google Книгах
  4. ^ JWASM , 32 / 64- разрядный ассемблер на основе WASM с синтаксисом, аналогичным MASM . Архивировано 10 октября 2014 года.
  5. ^ Туман, Агнер (2009), Оптимизация подпрограмм на ассемблере (PDF) (изд. 2009-09-26), стр. 13
  6. ^ a b Открытый веб-сайт Watcom: Assembler, заархивировано 15 июля 2006 г. на Wayback Machine
  7. ^ OpenWatcom: «Файлы списков не создаются [ассемблером]. Создание полных списков может быть пустой тратой усилий, потому что wdis (дизассемблер Open Watcom) выполняет очень хорошую работу. Однако было бы чрезвычайно полезно создать дамп внутреннюю таблицу символов, как это делает MASM, особенно для диагностических целей ».
  8. Открыть веб-сайт Watcom: Disassembler, архивировано 15 июля 2006 г. на Wayback Machine.
  9. ^ WALK32 1996 года состоит из следующих основных компонентов:
    • Полнофункциональный компоновщик файлов PE (Portable Executable) под названием W32Link.
    • Главный включаемый файл, содержащий определения константы, типа и структуры Win32.
    • Другой включаемый файл, содержащий приложение и исходный код запуска DLL.
    • Макросы управления сегментами и PE секциями.
    • Макросы, связанные с поддержкой Unicode.
    • Несколько демонстрационных приложений и DLL.
    • Коллекция утилит для программирования различного назначения. "Walk32.doc в walk32_1.zip
  10. ^ Разработка ассемблера UASM
  11. ^ Релизы HJWasm
  12. ^ Новое имя? (ветка страница 1)
  13. ^ Новое имя? (ветка страница 3)
  14. ^ UASM (2.33)
  15. ^ Выпуск UASM 2.33
  16. ^ Журнал изменений UASM

Внешние ссылки [ править ]

  • wasm ассемблер вики
  • JWasm
  • Страницы Terraspace ltd: HJWASM , Hasm , UASM