Откройте Watcom Assembler - Open Watcom Assembler
Эта статья возможно содержит оригинальные исследования.Сентябрь 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Оригинальный автор (ы) | Откройте Watcom Assembler |
---|---|
Операционная система | DOS для компьютеров на базе x86, Майкрософт Виндоус, Linux для ПК на базе x86, OS / 2 для ПК на базе x86, FreeBSD для ПК на базе x86. |
Доступно в | английский |
Тип | x86 ассемблер |
Интернет сайт | www |
Откройте 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.
- Регистры: 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.
- 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.
- Вызов функций: в 2.46 добавлен вызов функций в стиле C.
Рекомендации
- ^ Рэндалл Хайд. "WASM: открытый ассемблер Watcom". Архивировано 02 марта 2012 года.. Получено 2017-09-11.CS1 maint: BOT: статус исходного URL-адреса неизвестен (связь)
- ^ Лейтерман, Джеймс (2005). «MASM против NASM против TASM против WASM». 32/64-битная архитектура языка ассемблера 80x86. Wordware Publishing, Inc. стр. 481. ISBN 978-1-59822-002-5. Получено 2010-02-01.
- ^ Leiterman p482 в Google Книгах
- ^ JWASM, 32/64 битный ассемблер на основе WASM с синтаксисом, аналогичным MASM. Архивировано 10 октября 2014 года.
- ^ Туман, Агнер (2009), Оптимизация подпрограмм на ассемблере (PDF) (2009-09-26 ред.), Стр. 13
- ^ а б Откройте сайт Watcom: Assembler В архиве 2006-07-15 на Wayback Machine
- ^ OpenWatcom: «Файлы списков не создаются [ассемблером]. Создание полных списков может быть пустой тратой усилий, потому что wdis (дизассемблер Open Watcom) выполняет очень хорошую работу. Однако было бы чрезвычайно полезно создать дамп внутреннего символа таблица так же, как MASM, особенно для диагностических целей ».
- ^ Откройте сайт Watcom: Дизассемблер В архиве 2006-07-15 на Wayback Machine
- ^ WALK32 1996 года состоит из следующих основных компонентов:
- Полнофункциональный компоновщик файлов PE (Portable Executable) под названием W32Link.
- Основной включаемый файл, содержащий определения константы, типа и структуры Win32.
- Другой включаемый файл, содержащий приложение и исходный код запуска DLL.
- Макросы управления сегментами и PE секциями.
- Макросы, связанные с поддержкой Unicode.
- Несколько демонстрационных приложений и DLL.
- Коллекция утилит для программирования различного назначения. "Walk32.doc в walk32_1.zip
- ^ Разработка ассемблера UASM
- ^ Релизы HJWasm
- ^ Новое имя? (ветка страница 1)
- ^ Новое имя? (ветка страница 3)
- ^ UASM (2.33)
- ^ Выпуск UASM 2.33
- ^ Журнал изменений UASM
внешняя ссылка
- wasm ассемблер вики
- JWasm
- Страницы Terraspace ltd: HJWASM, Hasm, UASM