Откройте ассемблер Watcom.
![]() | Эта статья , возможно, содержит оригинальные исследования . ( сентябрь 2016 г. ) |
Оригинальный автор(ы) | Откройте ассемблер Watcom. |
---|---|
Операционная система | DOS для ПК на базе x86 , Microsoft Windows , Linux для ПК на базе x86, OS/2 для ПК на базе x86, FreeBSD для ПК на базе x86. |
Доступно в | Английский |
Тип | x86 сборка |
Веб-сайт | www |
Open Watcom Assembler или WASM — это ассемблер x86 , созданный Watcom на основе ассемблера Watcom, присутствующего в компиляторе 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 поставляются файлы makefile.
- Поддерживает наборы команд 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 Свена Б. Шрайбера. [9]
- Заголовочные файлы C можно преобразовать во включаемые файлы для JWasm с помощью собственного специального h2incX от Japheth.
- Исходный код 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.
- Регистры: регистры RIP, ZMM добавлены в версии 2.13.
- Расширение объектно-ориентированного языка добавлено в версии 2.25.
ХАСМ
[ редактировать ]HASM — это переименованная версия HJWASM, начиная с версии 2.33. Это имя было использовано после обсуждения на форуме MASM, в котором первоначально предлагалось новое имя. Название HASM было предложено участником форума Хабраном в ответе №6. [12] и был окончательно доработан в конце ветки обсуждения в ответе №33. [13] В цикле выпусков HASM не добавляются никакие известные функции.
УАСМ
[ редактировать ]На самом деле это имя использовалось в версии 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.
Ссылки
[ редактировать ]- ^ Рэндалл Хайд. «WASM: Открытый ассемблер Watcom» . Архивировано из оригинала 2 марта 2012 г. Проверено 11 сентября 2017 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Лейтерман, Джеймс (2005). «MASM против NASM против TASM против WASM». 32/64-битная архитектура ассемблера 80x86 . Wordware Publishing, Inc. с. 481. ИСБН 978-1-59822-002-5 . Проверено 1 февраля 2010 г.
- ^ Лейтерман, стр. 482 в Google Книгах.
- ^ JWASM , 32/64-битный ассемблер, основанный на WASM с синтаксисом, похожим на MASM . Архивировано 10 октября 2014 г.
- ^ Туман, Агнер (2009), Оптимизация подпрограмм на языке ассемблера (PDF) (изд. 26 сентября 2009 г.), стр. 13
- ^ Перейти обратно: а б Открыть веб-сайт Watcom: Ассемблер. Архивировано 15 июля 2006 г. на Wayback Machine.
- ^ OpenWatcom: «Никакие файлы списков не генерируются [ассемблером]. Создание полных списков может быть пустой тратой усилий, поскольку wdis (дизассемблер Open Watcom) делает очень хорошую работу. Однако может быть чрезвычайно полезно создать дамп внутреннюю таблицу символов, как это делает MASM, особенно для диагностических целей».
- ^ Открыть веб-сайт Watcom: Дизассемблер. Архивировано 15 июля 2006 г. на Wayback Machine.
- ^ WALK32 1996 года состоит из следующих основных компонентов:
- Полнофункциональный компоновщик файлов PE (Portable Executable) под названием W32Link.
- Основной включаемый файл, содержащий определения констант, типов и структур Win32.
- Другой включаемый файл, содержащий исходный код запуска приложения и DLL.
- Макросы управления сегментами и разделами PE.
- Макросы, связанные с поддержкой Unicode.
- Несколько демонстрационных приложений и DLL.
- Коллекция утилит программирования для различных целей." walk32.doc в walk32_1.zip
- ^ Разработка ассемблера UASM
- ^ Релизы HJWasm
- ^ Новое имя? (тема, страница 1)
- ^ Новое имя? (тема, страница 3)
- ^ УАСМ (2.33)
- ^ Выпуск UASM 2.33
- ^ Журнал изменений UASM
Внешние ссылки
[ редактировать ]- Вики-сайт ассемблера WASM
- JWasm
- Страницы компании Terraspace ltd: HJWASM , Hasm , UASM