FASM

FASM (flat 어셈블러)는 x86 프로세서 용 어셈블러이다. 이것은 IA-32와 x86-64 컴퓨터 아키텍처 용 인텔 스타일 어셈블리어를 지원한다. FASM은 빠른 속도와 크기 최적화, 운영 체제 호환성 그리고 매크로 기능을 갖는다. 이것은 저 수준 어셈블러이며 의도적으로 매우 적은 명령 줄 옵션을 갖는다. 자유-오픈 소스 소프트웨어이다.

FASM의 모든 버전은 직접적으로 다음을 출력할 수 있다: flat "raw" 바이너리 (DOS COM executable 또는 SYS 드라이버로서 사용 가능한), 목적 파일: ELF 파일 형식 (ELF) 또는 COFF (클래식 또는 MS-전용), 또는 MZ, ELF, PE 포맷 (WDM 드라이버를 포함하며 커스텀 MZ DOS 스텁을 허용하는) 실행 파일. ARM 아키텍처(FASMARM)를 위한 비공식적인 포팅도 존재한다.

설계 
FASM은 MASM이나 TASM 처럼 많은 고 수준 선언문을 지원하지 않는다. 대신 선언문들을 커스터마이즈하고 생성할 수 있게 해주는 문법 특징과 매크로들을 제공한다. 이것의 메모리 어드레싱 문법은 TASM의 ideal 모드나 NASM과 비슷하다. 괄호는 두 어셈블러처럼 메모리 오퍼랜드를 의미하지만, 크기는 NASM처럼 괄호의 밖에 있다.

FASM은 멀티 패스 어셈블러이다. 이것은 광범위한 코드 크기 최적화를 해주며 자유로는 사전 참조를 허용한다. FASM의 특이한 구조로는 코드 내에서 사용될 때에만 프로시저를 정의하는 것이 있다. 이것은 대부분의 언어에서 링커에 의해 오브젝트 단위로 수행된다.

FASM은 "같은 소스, 같은 결과" 원리에 기반한다: 결과 파일의 내용은 커맨드 라인에 의해 영향을 받지 않는다. 이러한 접근법은 FASM을 다른 많은 어셈블리 프로젝트에서 존재하는 컴파일 문제로부터 구해준다. 반면에 이것은 각각 다양하게 컴파일된 소스 파일들이나 또는 언어가 섞인 프로젝트들에서는 프로젝트를 유지보수하기 어렵게 한다. 하지만 FA라고 불리는 Win32 래퍼가 존재하고 이것은 이 문제를 완화시켜 준다. FASM 프로젝트들은 링킹 단게 없이 소스 파일에서 직접적으로 실행 파일을 만들 수 있다.

Fresh IDE 
Fresh(John Found에 의해 시작된 인터넷 커뮤니티 지원 프로젝트)는 FASM을 위한 통합 개발 환경(IDE)이다. Fresh의 목표는 다른 시각적인 언어들처럼 프로그래밍을 빠르고 효율적으로 할 수 있게 하며 동시에 작은 애플리케이션 크기와 어셈블리어의 raw 파워를 희생시키지 않는 것이다. Fresh는 윈도우 프로그래밍에서 사용될 수 있지만 또한 FASM을 지원하는 운영 체제를 위한 프로그램도 개발할 수 있다 – 도스, 리눅스, FreeBSD, BeOS, 미뉴엣OS.

사용 
FASM으로 개발된 운영 체제들:
 DexOS - Ville Turijanmaa
 MenuetOS – 32 - 64비트 GUI 운영 체제
 KolibriOS
FASM을 백엔드로 사용하는 컴파일러들:
 PureBasic
 High Level Assembly (HLA)
 BlitzMax

같이 보기 
 어셈블러 비교

각주

외부 링크 
 FASM project: 
 FASMLIB 0.8.0 – portable 32-bit x86 asm lib for FASM/MASM/YASM/NASM/GASM
 FASMARM – FASM for ARM processors,  v1.27, 
 The Fresh IDE

1999년 도입
어셈블러
어셈블리어
도스 소프트웨어
유닉스 프로그래밍 도구
어셈블리어로 작성된 자유 소프트웨어