Откройте Watcom Assembler - Open Watcom Assembler

Откройте Watcom Assembler
Оригинальный автор (ы)Откройте Watcom Assembler
Операционная системаDOS для компьютеров на базе x86, Майкрософт Виндоус, Linux для ПК на базе x86, OS / 2 для ПК на базе x86, FreeBSD для ПК на базе x86.
Доступно ванглийский
Типx86 ассемблер
Интернет сайтwww.openwatcom.com

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

Есть экспериментальные ассемблеры для PowerPC, Альфа 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, в 2.13 добавлены инструкции в кодировке EVEX; VMOVQ добавил 2.13 в дополнение к MOVD. Остальные инструкции добавлены в 2.16.
  • Генератор случайных чисел: RDRAND, RDSEED добавлен в 2.13.
  • преобразования половинной точности: F16C (VCVTPH2PS, VCVTPS2PH) добавлено в 2.13.
  • Intel MPX: Добавлено в 2.31.
  • Регистры: RIP, регистры ZMM добавлены в 2.13.
  • OO расширение языка добавлено в 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.
  • Режимы адресации: 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.
  • Вызов функций: в 2.46 добавлен вызов функций в стиле C.

Рекомендации

  1. ^ Рэндалл Хайд. "WASM: открытый ассемблер Watcom". Архивировано 02 марта 2012 года.. Получено 2017-09-11.CS1 maint: BOT: статус исходного URL-адреса неизвестен (связь)
  2. ^ Лейтерман, Джеймс (2005). «MASM против NASM против TASM против WASM». 32/64-битная архитектура языка ассемблера 80x86. Wordware Publishing, Inc. стр. 481. ISBN  978-1-59822-002-5. Получено 2010-02-01.
  3. ^ Leiterman p482 в Google Книгах
  4. ^ JWASM, 32/64 битный ассемблер на основе WASM с синтаксисом, аналогичным MASM. Архивировано 10 октября 2014 года.
  5. ^ Туман, Агнер (2009), Оптимизация подпрограмм на ассемблере (PDF) (2009-09-26 ред.), Стр. 13
  6. ^ а б Откройте сайт Watcom: Assembler В архиве 2006-07-15 на Wayback Machine
  7. ^ OpenWatcom: «Файлы списков не создаются [ассемблером]. Создание полных списков может быть пустой тратой усилий, потому что wdis (дизассемблер Open Watcom) выполняет очень хорошую работу. Однако было бы чрезвычайно полезно создать дамп внутреннего символа таблица так же, как MASM, особенно для диагностических целей ».
  8. ^ Откройте сайт Watcom: Дизассемблер В архиве 2006-07-15 на 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

внешняя ссылка