마이크로소프트 매크로 어셈블러
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
마이크로소프트 매크로 어셈블러(MASM)는 마이크로소프트에서 개발한 x86 계열 어셈블러로, 1981년 최초 출시 이후 여러 버전을 거쳐 발전해 왔다. 초기에는 MS-DOS 및 IBM PC 환경에서 사용되었으며, 이후 286, 386 명령어 지원, Windows NT, Windows 95, 64비트 프로세서 지원 등 다양한 기능을 추가했다. MASM은 2000년에 Visual Studio에 통합되었으며, 현재는 Visual Studio의 일부로 제공된다. MASM은 MASM 호환 어셈블러와 다양한 개발 도구, IDE, 디버거, 디스어셈블러 등 다양한 지원을 받으며, MASM32 프로젝트와 같은 관련 커뮤니티도 존재한다.
더 읽어볼만한 페이지
- 1981년 소프트웨어 - MS-DOS
MS-DOS는 마이크로소프트가 개발한 개인용 컴퓨터용 디스크 운영 체제로, IBM PC의 표준 운영 체제로 널리 사용되었으며, 단일 작업 환경과 명령줄 인터페이스를 특징으로 한다. - 어셈블러 - 터보 어셈블러
볼랜드에서 개발한 터보 어셈블러는 빠른 속도와 MASM과의 높은 호환성을 특징으로 하며, 어셈블리 프로그래밍 입문자를 위한 튜토리얼과 샘플 코드를 제공하지만, 참조 문서 부족은 단점으로 지적되었다. - 어셈블러 - FASM
FASM은 토마스 그리슈타르가 개발한 어셈블리 언어 컴파일러로, 완전한 어셈블리 언어로 작성되었고 사용자 정의 매크로 지원, 코드 크기 최적화, 자유로운 사전 참조, 그리고 Fresh IDE를 통한 다양한 운영체제 지원이 특징이다. - 마이크로소프트 개발 도구 - 비주얼 스튜디오
비주얼 스튜디오는 마이크로소프트가 개발한 통합 개발 환경(IDE)으로, 다양한 프로그래밍 언어와 플랫폼을 지원하며 소프트웨어 개발에 필요한 도구와 기능을 제공한다. - 마이크로소프트 개발 도구 - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다.
마이크로소프트 매크로 어셈블러 - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
![]() | |
개발사 | 마이크로소프트 |
최초 출시 | 1981년 |
최신 버전 | 14.16.27023.1 |
최신 릴리스 날짜 | 2017년 3월 7일 |
운영 체제 | 마이크로소프트 윈도우 MS-DOS |
장르 | 어셈블러 |
라이선스 | 상용 소프트웨어 독점 소프트웨어 |
웹사이트 | 마이크로소프트 매크로 어셈블러 레퍼런스 |
2. 역사
MASM의 최초 버전은 1981년에 출시되었다.[10] 초기에는 x86 머신용 "마이크로소프트 매크로 어셈블러"와 IBM PC용 OEM 버전으로 판매되었다. 버전 4.0부터 IBM 릴리스는 중단되었고, 버전 3.0까지는 소형 어셈블러인 ASM.EXE가 함께 제공되었다.[2]
4.x까지의 MS-DOS 버전에는 MASM 및 기타 컴파일러에서 생성된 OBJ 파일을 변환하는 마이크로소프트의 LINK 유틸리티가 포함되어 있었다. 그러나 프로그래밍을 하지 않는 사용자는 이 유틸리티를 사용할 필요가 없어 컴파일러 패키지로 이동되었다.
1985년 버전 4.0은 286 명령어를 지원했다. 1987년 버전 5.0은 386 명령어를 지원했으며, 세그먼트 설명자(.code, .data 등)에 대한 약식 니모닉도 지원했지만, 여전히 리얼 모드 실행 파일만 생성할 수 있었다. 버전 5.0까지 MASM은 MS-DOS 응용 프로그램으로만 사용할 수 있었고, 버전 5.1 및 6.0은 MS-DOS 및 OS/2 응용 프로그램으로 모두 사용할 수 있었다.[3]
1991년 버전 6.0은 "invoke"를 사용한 매개변수 전달 및 기타 고급 수준의 구조를 추가했다. 1992년 버전 6.1은 Windows NT에서 사용되는 COFF 객체 형식을 지원하고 OS/2에 대한 지원을 제거했다. 1993년에는 보호 모드 32비트 응용 프로그램과 펜티엄 명령어 집합에 대한 완벽한 지원이 추가되었다. 버전 6.12에서 6.14까지는 버전 6.11에 대한 패치로 구현되었다. 1997년 말까지 MASM은 윈도우 95를 완전히 지원했으며 일부 AMD 특정 명령어를 포함했다.[5]
1999년, 인텔은 SIMD 및 MMX 명령어에 대한 매크로를 출시했으며, 이는 곧 MASM에서 네이티브로 지원되었다. 2000년 릴리스(6.15)에서 마이크로소프트는 별도의 제품으로 MASM에 대한 지원을 중단하고 대신 Visual Studio 도구 집합에 통합했다. 64비트 프로세서에 대한 지원은 Visual Studio 2005가 출시될 때까지 추가되지 않았으며(MASM 8.0).[5]
2015년 6월 25일 이후, 버전 번호 14.00.23026인 MASM이 최소 3개 이상 있다. Microsoft Visual Studio 2015 Enterprise Edition에는 "amd64_x86" ml, "x86_amd64" 및 "amd64"의 두 ml64가 있다. 이들은 서로 다른 플랫폼에서 실행되어 다른 플랫폼을 대상으로 한다.
실행 환경 | 대상 플랫폼 | 설명 |
---|---|---|
64비트 Windows | 32비트 | x86_amd64 |
32비트 Windows | 64비트 | amd64_x86 |
64비트 Windows | 64비트 | amd64 |
2. 1. 초기 역사 (1981년 ~ 1990년대 초반)
1981년, MASM의 최초 버전이 출시되었다.[10] 초기 버전은 모든 x86 머신용 제네릭 "마이크로소프트 매크로 어셈블러" 및 IBM PC용 OEM 버전으로 판매되었다. 버전 4.0부터 IBM 릴리스가 중단되었다. 버전 3.0까지는 64KB 메모리를 가진 PC를 위한 ASM.EXE(코드 매크로 기능 등이 없는 소형 어셈블러)가 함께 제공되었다.[2]1985년 10월, 버전 4.0은 286 명령어 지원을 추가했다. 1987년 8월, 버전 5.0은 386 명령어 지원 및 세그먼트 설명자(.code, .data 등)에 대한 약식 니모닉을 지원했지만, 여전히 리얼 모드 실행 파일만 생성할 수 있었다. 버전 5.0까지 MASM은 MS-DOS 응용 프로그램으로만 사용할 수 있었다. 버전 5.1 및 6.0은 MS-DOS 및 OS/2 응용 프로그램으로 모두 사용할 수 있었다.[3] 1987년 버전 5.1의 설명서에는 마이크로소프트 BASIC, C, 포트란, 파스칼에 대한 혼합 언어 프로그래밍 지원이 포함되었다.[8]
2. 2. 전환기 (1990년대 초반 ~ 2000년대 초반)
1991년, 버전 6.0은 "invoke"를 사용한 매개변수 전달 및 기타 고급 수준의 구조를 추가했다.[4] 1992년, 버전 6.1은 Windows NT에서 사용되는 COFF 객체 형식을 지원하고 OS/2에 대한 지원을 제거했다.[4] 1993년, 버전 6.11은 보호 모드 32비트 응용 프로그램과 펜티엄 명령어 집합에 대한 완벽한 지원을 추가했다.[4] 버전 6.12에서 6.14까지는 버전 6.11에 대한 패치로 구현되었다. 1997년 말, MASM은 윈도우 95를 완전히 지원했으며 일부 AMD 특정 명령어를 포함했다.[5]1990년대 초반, SLR의 OPTASM, 보랜드의 터보 어셈블러, 셰어웨어인 A86, 1990년대 말에는 NASM과 같은 경쟁 어셈블러가 MASM의 점유율을 잠식하기 시작했다. 그러나 1990년대 후반, 마이크로소프트가 MASM 판매를 중단하고 DDK에 MASM을 포함하여 무료로 배포하고, MASM32 패키지와 "Iczelion's Win32 tutorials"가 등장하면서 MASM의 점유율이 다시 회복되었다. 2000년, MASM 6.15는 "Visual C++ 프로세서 팩"의 일부로 무료로 제공되었다.[5]
2. 3. 현재 (2000년대 초반 ~ 현재)
2000년, 마이크로소프트는 MASM에 대한 지원을 중단하고 Visual Studio 도구 집합에 통합했다.[5] Visual Studio 2005 출시와 함께 64비트 프로세서를 지원하는 MASM 8.0 (ml64.exe)이 추가되었다.[5]MASM은 단독 상용 제품으로 판매되지 않지만, 마이크로소프트는 지속적으로 MASM을 지원 및 개발하고 있다. 새로운 프로세서에 대한 명령어 추가 및 64비트 지원 개선 등이 이루어지고 있다. MASM은 Visual C++의 "bin" 디렉터리에 ml.exe(32비트) 및 ml64.exe(64비트) 형태로 제공되며, Visual C++ 문서의 일부로 문서가 제공된다.
3. MASM 호환 어셈블러
MASM의 문법과 기능을 지원하는 여러 서드파티 어셈블러가 존재한다. 대표적인 MASM 호환 어셈블러는 다음과 같다.
- 터보 어셈블러 (TASM) - 볼랜드에서 개발, 엠바카데로 소유. 2002년에 마지막으로 업데이트되었으나, 여전히 C++빌더 및 [https://www.embarcadero.com/products/rad-studio RAD Studio]와 함께 제공된다.
- JWASM 매크로 어셈블러 - Sybase Open Watcom 최종 사용자 사용권 계약에 따라 라이선스가 부여됨. 2014년에 마지막으로 업데이트되었다.
- Pelle's Macro Assembler - [https://www.pellesc.de/ Pelles C] 개발 환경의 구성 요소.
- [http://www.terraspace.co.uk/uasm.html UASM] - JWASM을 기반으로 하는 무료 MASM 호환 어셈블러.
- [https://github.com/nidud/asmc ASMC] - JWASM을 기반으로 하는 무료 MASM 호환 어셈블러.
4. MASM 지원 도구
MASM은 WinAsm Studio, RadASM, OllyDbg, IDA 프로 등과 같은 다양한 소프트웨어에서 지원된다. MASM32 프로젝트는 관련 라이브러리, 코드 예제, 문서를 제공하며, MASM 포럼(http://www.masmforum.com/ 등)과 같은 웹사이트도 MASM을 지원한다. 또한, EasyCode와 같이 Visual Basic이나 Visual C++와 유사한 시각적 기능을 갖춘 MASM용 IDE도 존재한다.
4. 1. 통합 개발 환경(IDE)
MASM은 RadASM[11], WinAsm 스튜디오[12], 이지코드(EasyCode)[13], 비주얼 스튜디오[14], 비주얼 MASM[15]과 같은 통합 개발 환경(IDE)에서 사용할 수 있다. OllyDbg, IDAPro (Interactive Disassembler) 등 많은 현행 소프트웨어도 MASM에 대응한다. MASM32 프로젝트는 광범위한 라이브러리, 코드 예제, MASM 문서를 정리하고 있다. 다수의 웹 페이지와 대응 포럼(http://www.masmforum.com/ 등)도 MASM에 대응하고 있다. Visual Basic이나 Visual C++와 같은 시각적 성능을 가진 EasyCode라는 MASM용 IDE도 있다.4. 2. 디버거
MASM은 x64dbg, OllyDbg[16]와 같은 디버거에서 지원된다.4. 3. 디스어셈블러
IDA 프로는 MASM에 대응하는 디스어셈블러 중 하나이다.[1]5. MASM 관련 프로젝트
MASM32 프로젝트는 광범위한 라이브러리, 코드 예제, MASM 문서를 정리하고 있다. MASM 관련 포럼도 MASM에 대응하고 있다.[1]
6. 평가
1989년, ''바이트''지는 MASM 5.1이 검토된 세 개의 어셈블러 중 가장 느리고 코드에 대한 불만이 가장 많다고 평가했다. 그러나 "익숙해지는 데 시간이 걸리지만, 그 역할을 수행한다"라고 결론 내렸다.[9]
7. Object module formats supported by MASM
초기 MASM 버전은 MS-DOS 또는 OS/2용 바이너리를 생성하기 위해 OMF 형식을 사용했다.
버전 6.1부터 MASM은 PE/COFF 형식의 오브젝트 모듈을 생성할 수 있다.[6][7] PE/COFF는 최신 Microsoft C 컴파일러와 호환되며, MASM 또는 C 컴파일러에서 생성된 오브젝트 모듈은 Win32 및 Win64 바이너리로 일상적으로 혼합되어 연결될 수 있다.
참조
[1]
웹사이트
Chris Sawyer Software Development
http://www.chrissawy[...]
2023-01-05
[2]
간행물
Macintosh Vs. IBM PC At One Year
https://books.google[...]
1985-01-07
[3]
간행물
Macro Assembler Update Adds High-Level Features
https://books.google[...]
1991-04-29
[4]
웹사이트
Q94314: 32-Bit Flat Memory Model MASM Code for Windows NT
https://jeffpar.gith[...]
2023-10-03
[5]
웹사이트
Assemblers
http://ourworld.comp[...]
2010-02-04
[6]
웹사이트
Archived copy
https://web.archive.[...]
2008-06-24
[7]
웹사이트
WHDC White Papers and Documentation
https://www.microsof[...]
2016-09-25
[8]
서적
Microsoft Macro Assembler 5.1, Mixed-Language Programming Guide
[9]
간행물
Three Assemblers for MS-DOS
https://archive.org/[...]
2024-10-08
[10]
간행물
Macintosh Vs. IBM PC At One Year
https://books.google[...]
1985-01-07
[11]
웹인용
RAD Software
http://radasm.cherry[...]
2016-09-25
[12]
웹인용
WinAsm Studio, The Assembly IDE - Free Downloads, Source Code
http://www.winasm.ne[...]
2016-09-25
[13]
웹인용
Easy Code Visual Assembler IDE - Assembly programming
http://www.easycode.[...]
2016-09-25
[14]
웹인용
Assembly Programming with Visual Studio 2010/2012 - CodeProject
http://www.codeproje[...]
2016-09-25
[15]
웹인용
Visual MASM - The MASM IDE for Microsoft Macro Assembler
http://www.visualmas[...]
2016-09-25
[16]
웹인용
OllyDbg v1.10
http://www.ollydbg.d[...]
2016-09-25
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com