오픈 와트콤 조립기

Open Watcom Assembler
오픈 와트콤 조립기
원본 작성자오픈 와트콤 조립기
운영 체제x86 기반 PC용 DOS, x86 기반 PC용 Microsoft Windows, Linux, x86 기반 PC용 OS/2, FreeBx86 기반 PC용 SD.
다음에서 사용 가능영어
유형x86 조립자
웹 사이트.www.openwatcom.com

오픈 와트콤 조립기 또는 WASM와트콤 C/C++ 컴파일러와트콤 FORTRAN 77에서 발견된 와트콤 조립기를 기반으로 왓콤이 생산하는 x86 조립기이다.[1][2][3]32비트, 64비트 JWASM 프로젝트에 대한 추가 개발이 이루어지고 있는데,[4] 이는 마이크로소프트의 조립자 구문과 더 밀접하게 일치한다.[5]

PowerPC, Alpha AXP, MIPS를 위한 실험 조립자가 있다.[6]

기술적 세부사항

조립자

  • 출력 형식 Intel OMF 출력 형식에 대한 기본 지원
  • Intel x86(Pentium MMX, Pentium III-4, 3DNow!, SSE 및 SSE2) 명령 집합 지원
  • 마이크로소프트 매크로 어셈블러(MASM) 5 및 6 구문(불완전)[6] 지원

디스어셈블러

Wdis와 연관된 Watcom 분해기가 있다.조립자는 목록 설비가 없다. 대신 목록을 생성하기 위해 wdis를 사용하는 것이 권장된다.[7]wdis는 OMF, COP 및 ELF 객체 파일과 PE 및 ELF 실행 파일을 읽을 수 있다.MMX, 3DNow!, SSE, SSE2, SSE3 등 16비트 및 32비트 x86 명령어 세트를 지원한다.PowerPC, Alpha AXP, MIPS, SPARC V8 명령 집합에 대한 지원도 내장되어 있다.[8]

WASM 포크

JWasm

JWasm은 Japheth에서 유래한 와셈의 포크로서 다음과 같은 특징을 가지고 있다.

  • 출력 형식 Intel OMF(16/32비트), MS Coff(32비트 및 64비트), Elf(32비트 및 64비트), Bin 및 DOS MZ에 대한 기본 지원.
  • 사전 컴파일된 JWasm 이진 파일은 DOS, Windows 및 Linux에서 사용할 수 있다.OS/2 및 FreeBSD의 경우 makefiles가 제공된다.
  • Supports Intel x86 (8086, 80186, 80286, 80386, 80486, Pentium, Pentium Pro), x86-64 instruction sets with SIMD (MMX, 3DNow!, SSE, SSE2, SSE3 and SSSE3, SSE4.1/2 (since Jwasm), AVX (since JWasm 2.06), VMX (Intel VT-x; AMD SVM, the latter though already implemented, currently still inactive) extensions (since JWasm 2.09)).
  • JWasm은 C로 쓰여 있다.이 소스는 휴대용이며 오픈 와트콤, MS VC, GCC 등을 통해 성공적으로 테스트되었다.
  • Windows에서는 JWasm을 Win32와 함께 사용할 수 있다.Inc와 Masm32.v2.01 이후 스벤 B와도 함께 작동한다.슈라이버의 SBS WALK32 Win32 어셈블리 언어 키트[9]
  • Japheth의 전용 h2incX로 JWasm 파일을 포함하도록 C 헤더 파일을 변환할 수 있다.
  • JWasm의 소스 코드는 Sybase Open Wattcom Public License에 따라 공개되며, 이를 통해 상업 및 비상업적 무료 사용이 가능하다.
  • 마이크로소프트 매크로 어셈블러 6 구문(모든 MASM 8 지침 세트)을 완벽하게 지원

Japheth는 2014년 1월 버전 2.12pre로 JWASM 개발을 중단했지만, Masm32 포럼에[10] 참가한 다른 사람들은 Japheth가 중단한 곳을 다시 찾았다.

HJWasm

HJWasm, 이 두 번째 WASM 개발을 시작한 Masm32 포럼 멤버 Habran을 참조하여 접두사 H를 추가했다.버전 2.13pre는 원래 2016년에 발표되었다.[11]새로운 기능:

  • 지침:
  • SIMD:
  • MMX: MOVQ 및 2.13에 MOVD를 보완하기 위해 추가.
  • AVX2: VGATHERDPD, VGATHERQPD, VGATHERDPS, VGATHERQPS, VPGATHERDD, VPGATHERQD, VPGATHERDQ, VPGATHERQQ, VEX-encoded general purpose instructions added in 2.13.나머지 지침은 2.16에 추가되었다.
  • AVX-512: VCMPxxPD, VCMPxxPS, VCMPxxSD, VCMPxxPD, VCMPxSS, AVX-512F 세트, EBX 인코딩 지침 2.13에 추가됨; VMOVQ는 MOVD를 보완하기 위해 2.13을 추가했다.나머지 지침은 2.16에 추가되었다.
  • 난수 생성기: RDRAND, RDSEED 2.13에 추가.
  • 반정밀 변환: F16C(VCVTPH2PS, VCVTPS2PH) 2.13에 추가.
  • 인텔 MPX: 2.31에 추가.
  • 레지스터: RIP, ZMM 레지스터 2.13에 추가됨
  • 2.25에 OO 언어 확장 추가.

HASM

HASM은 버전 2.33에서 시작하는 HJWASM의 이름 변경 버전이다.원래 대체 이름을 제안했던 MASM 포럼 토론 스레드에 이어 이름이 사용됐다.HASM이라는 이름은 포럼 멤버 habbran이 Reply #6에서 제안했으며,[12] Response #33에서 토론 스레드가 끝날 때 최종 확정되었다.[13]HASM의 릴리스 사이클에는 알려진 기능이 추가되지 않는다.

UASM

이 이름은 테라스페이스(Teraspace Ltd)의 제품 페이지에서 버전 2.33(2017-05-20일자)에서 실제로 사용되었으나 버전 2.34에서만 발표되었다.[14][15]HJWASM에 대한 변경사항은 다음과 같다.[16]

  • 명령 집합: RDPID가 2.38에 추가됨
  • AVX-512: 2.38에 VAESDEC 추가
  • 데이터 전송: MOVBE가 2.47에 추가됨. MOVABS가 2.48에 추가됨.
  • Intel ADX: ADCX, ADOX 2.38에 추가됨
  • Intel MPX: 2.34에 추가된 BND 접두사 지원.2.40에서 JCXZ 명령 그룹에서 BND 접두사를 제거했다.
  • CLMUL 명령 집합:2.46.8에 CLMUL의 의사-op 형식을 포함하여 추가되었다.
  • 해싱: 2.46.8에 SHA 명령 집합 추가.
  • 감독자 모드 액세스 방지: CLAC가 2.38에 추가됨
  • 영구 메모리 확장: 2.38에 CLFLUSHOPT가 추가됨
  • 주소 지정 모드: 64비트 절대 즉시(2.37)
  • 식별된 유형
  • 레코드 종류: 2.41의 레지스터 및 최대 32비트 레코드 필드 완전 지원.
  • 128비트 지원:2.42에 추가됨, 2.43.1 / .2에 유형이 추가된 인라인 선언.
  • 2.46.8에 추가된 반환 형식에 대한 형식 지정 체인 지원.
  • m³ 2.47에 추가된 내장 유형.
  • 콘솔 색상 코딩:2.43.1 / .2에서 Windows, OSX 및 Linux용으로 추가됨
  • 함수 호출: 2.46에 C-스타일 함수 호출이 추가됨

참조

  1. ^ Randall Hyde. "WASM: The Open Watcom Assembler". Archived from the original on 2012-03-02. Retrieved 2017-09-11.{{cite web}}: CS1 maint : bot : 원본 URL 상태 미상(링크)
  2. ^ Leiterman, James (2005). "MASM vs. NASM vs. TASM vs. WASM". 32/64-bit 80x86 assembly language architecture. Wordware Publishing, Inc. p. 481. ISBN 978-1-59822-002-5. Retrieved 2010-02-01.
  3. ^ Literman p482 on Google Books
  4. ^ JWASM, MASM과 유사한 구문을 가진 WASM을 기반으로 한 32/64비트 조립기.2014년 10월 10일 보관
  5. ^ Fog, Agner (2009), Optimizing subroutines in assembly language (PDF) (2009-09-26 ed.), p. 13
  6. ^ a b Watcom 웹 사이트 열기: 웨이백 머신에 2006-07-15를 보관조립자
  7. ^ OpenWatcom : "[조립자가] 목록 파일을 생성하지 않는다.wdis(Open Watcom discom discler)가 매우 잘하기 때문에 전체 목록을 만드는 것은 노력의 낭비일 수 있다.그러나 특히 진단 목적으로 MASM이 하는 방식대로 내부 기호표 덤프를 제작하는 것이 큰 도움이 될 수 있다고 말했다.
  8. ^ Watcom 웹 사이트 열기: 웨이백 머신보관된 2006-07-15 분해기
  9. ^ 1996년 "WALK32"는 다음과 같은 주요 구성요소로 구성된다.
    • W32Link라는 완전한 기능을 갖춘 PE(Portable Executive) 파일 링크.
    • 주에는 Win32 상수, 유형 및 구조 정의를 포함하는 파일이 포함된다.
    • 응용 프로그램 및 DLL 시작 소스 코드가 들어 있는 파일도 포함된다.
    • 세그먼트 및 PE 섹션 관리 매크로.
    • 유니코드 지원과 관련된 매크로.
    • 여러 데모 응용 프로그램 및 DLL
    • 다양한 목적을 위한 프로그래밍 유틸리티 모음." walk32_1.zip의 walk32.doc
  10. ^ UASM 조립기 개발
  11. ^ HJWasm 릴리스
  12. ^ 새 이름?(1페이지 참조)
  13. ^ 새 이름?(3페이지 참조)
  14. ^ UASM(2.33)
  15. ^ UASM 2.33 릴리스
  16. ^ UASM ChangeLog

외부 링크