Otwórz program Watcom Assembler - Open Watcom Assembler
Pierwotni autorzy | Otwórz program Watcom Assembler |
---|---|
System operacyjny | DOS dla komputerów z procesorami x86 , Microsoft Windows , Linux dla komputerów z procesorami x86, OS / 2 dla komputerów z procesorami x86, FreeBSD dla komputerów z procesorami x86. |
Dostępne w | język angielski |
Rodzaj | asembler x86 |
Stronie internetowej | www |
Open Watcom Assembler lub WASM to asembler x86 wyprodukowany przez Watcom , oparty na Watcom Assembler znalezionym w kompilatorze Watcom C / C ++ i Watcom FORTRAN 77 . Dalszy rozwój jest prowadzony w 32- i 64-bitowym projekcie JWASM. który bardziej pasuje do składni asemblera Microsoftu .
Istnieją eksperymentalne asemblery dla PowerPC , Alpha AXP i MIPS .
Szczegóły techniczne
Monter
- Natywna obsługa formatów wyjściowych Formaty wyjściowe Intel OMF
- Obsługuje zestawy instrukcji Intel x86 (Pentium MMX, Pentium III-4, 3DNow !, SSE i SSE2).
- Obsługuje składnię Microsoft Macro assembler (MASM) 5 i 6 (niekompletna).
Deasembler
Jest powiązany deasembler Watcom , wdis . Asembler nie ma możliwości wystawiania list; zamiast tego zalecane jest używanie wdis do generowania list. wdis może czytać pliki obiektów OMF, COFF i ELF oraz pliki wykonywalne PE i ELF. Obsługuje 16-bitowy i 32-bitowy zestaw instrukcji x86, w tym MMX, 3DNow !, SSE, SSE2 i SSE3. Wbudowana jest również obsługa zestawów instrukcji PowerPC, Alpha AXP, MIPS i SPARC V8 .
Widły WASM
JWasm
JWasm to widelec Wasm zapoczątkowany przez Jafeta o następujących cechach:
- Natywna obsługa formatów wyjściowych Intel OMF (16/32-bitowy), MS Coff (32-bitowy i 64-bitowy), Elf (32-bitowy i 64-bitowy), Bin i DOS MZ.
- Prekompilowane pliki binarne JWasm są dostępne dla systemów DOS, Windows i Linux. Dla OS / 2 i FreeBSD dostarczane są pliki makefile.
- Obsługuje zestawy instrukcji Intel x86 (8086, 80186, 80286, 80386, 80486, Pentium, Pentium Pro), zestawy instrukcji x86-64 z SIMD (MMX, 3DNow !, SSE, SSE2, SSE3 i SSSE3, SSE4.1 / 2 (od Jwasm) , AVX (od JWasm 2.06), VMX ( Intel VT-x; AMD SVM , ta ostatnia, choć już zaimplementowana, obecnie nadal nieaktywna) rozszerzenia (od JWasm 2.09)).
- JWasm jest napisany w C. Źródło jest przenośne i zostało pomyślnie przetestowane z Open Watcom, MS VC, GCC i innymi.
- W systemie Windows JWasm może być używany zarówno z Win32Inc, jak i Masm32. Od wersji 2.01 będzie również współpracować z zestawem języka asemblera SBS WALK32 Win32 Sven B. Schreibera
- Pliki nagłówkowe C można przekonwertować na pliki dołączane dla JWasm za pomocą dedykowanego h2incX firmy Japheth.
- Kod źródłowy JWasm jest udostępniany na licencji Sybase Open Watcom Public License, która umożliwia bezpłatne wykorzystanie komercyjne i niekomercyjne.
- W pełni obsługuje składnię makr asemblera 6 firmy Microsoft, wszystkie zestawy instrukcji MASM 8.
Japheth zaprzestał opracowywania JWASM w styczniu 2014 r. Z wersją 2.12pre, ale inni na forum Masm32 podjęli decyzję, w której przerwał Japheth.
HJWasm
HJWasm, dodając przedrostek H w odniesieniu do członka forum Masm32 Habrana, który rozpoczął drugą kontynuację rozwoju WASM. Wersja 2.13pre została pierwotnie ogłoszona w 2016 roku. Nowe funkcje obejmują:
- Instrukcje:
-
- SIMD:
- MMX : MOVQ i dodany w 2.13, jako uzupełnienie MOVD.
- AVX2 : VGATHERDPD, VGATHERQPD, VGATHERDPS, VGATHERQPS, VPGATHERDD, VPGATHERQD, VPGATHERDQ, VPGATHERQQ, zakodowane w VEX instrukcje ogólnego przeznaczenia dodane w 2.13. Pozostałe instrukcje dodane w 2.16.
- AVX-512 : VCMPxxPD, VCMPxxPS, VCMPxxSD, VCMPxxPD, VCMPxxSS, zestaw AVX-512F, instrukcje zakodowane w EVEX dodane w 2.13; VMOVQ dodał 2.13, aby uzupełnić MOVD. Pozostałe instrukcje dodane w 2.16.
- Rejestry: rejestry RIP, ZMM dodane w 2.13.
- Rozszerzenie języka OO dodane w 2.25.
HASM
UASM to przemianowana wersja HJWASM, począwszy od wersji 2.33. Nazwa została użyta w wątku dyskusyjnym na forum MASM, który pierwotnie proponował nazwę zastępczą. Nazwa HASM została zaproponowana przez członka forum habran w odpowiedzi nr 6 i została sfinalizowana na końcu wątku dyskusji w odpowiedzi nr 33. Żadne znane funkcje nie są dodawane w cyklu wydawniczym HASM.
UASM
Nazwa była faktycznie używana w wersji 2.33 (z dnia 2017-05-20) na stronie produktu Terraspace ltd, ale została ogłoszona dopiero w wersji 2.34. Zmiany w HJWASM obejmują:
- Zestawy instrukcji: RDPID dodany w wersji 2.38.
- AVX-512 : VAESDEC dodany w wersji 2.38
- Transfer danych: MOVBE dodany w 2.47. MOVABS dodane w 2.48.
- Intel ADX : ADCX, ADOX dodany w wersji 2.38
- Intel MPX : obsługa prefiksu BND dodana w 2.34. Prefiks BND usunięty z grupy instrukcji JCXZ w 2.40.
- Zestaw instrukcji CLMUL : Dodany w 2.46.8, w tym formularze pseudo-op CLMUL.
- Haszowanie: zestaw instrukcji SHA dodany w 2.46.8.
- Zapobieganie dostępowi w trybie nadzorcy : CLAC dodany w 2.38.
- Trwałe rozszerzenia pamięci : CLFLUSHOPT dodany w wersji 2.38.
- Tryby adresowania: 64-bitowy absolutny natychmiastowy (2.37)
- Zidentyfikowane typy
-
- Typy rekordów: w pełni obsługuje rejestry i do 32-bitowych pól rekordów w wersji 2.41.
- Wsparcie dla 128-bitowego: Dodane w 2.42, deklaracja inline z typem dodanym w 2.43.1 / .2.
- Obsługa łańcucha typedef na typach zwracanych dodana w 2.46.8.
- Wbudowane typy m512 dodane w 2.47.
- Kodowanie kolorami konsoli: dodano dla systemów Windows, OSX i Linux w wersji 2.43.1 / .2.
- Wywołanie funkcji: wywołanie funkcji w stylu C dodane w 2.46.
Bibliografia
Linki zewnętrzne
- wiki asemblera wasm
- JWasm
- Strony Terraspace ltd: HJWASM , Hasm , UASM