Otwórz program Watcom Assembler - Open Watcom Assembler

Otwórz program 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 .openwatcom .com

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.
  • Generator liczb losowych: RDRAND , RDSEED dodane w 2.13.
  • Konwersje o połowie precyzji: F16C (VCVTPH2PS, VCVTPS2PH) dodane w 2.13.
  • Intel MPX : dodano w 2.31.
  • 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.
  • 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