{{위키데이터 속성 추적}}
{{소프트웨어 정보
|name=FASM
|screenshot=FASM.PNG
|caption=FASMD – DOS version with IDE
|developer=Tomasz Grysztar
|released=2000년 3월
|latest_release_version=1.71.54
|latest_release_date={{시작 날짜와 나이|2016|06|09}}
|operating_system=[[도스]] 그리고 IDE, [[마이크로소프트 윈도우|윈도우]] 그리고 IDE, [[유닉스 계열]] ([[리눅스]], [[OpenBSD]] 등.), [[미뉴엣OS]], [[KolibriOS]], [http://octavio.vega.fernandez.googlepages.com/octaos/ OctaOS], DexOS 그리고 IDE, [[SkyOS]], [http://www.oby.ro/os/ Solar_OS]
|platform=[[x86]], [[x86-64]]
|genre=[[어셈블러]]
|license=[[BSD 허가서]]
|website={{url|flatassembler.net}}}}

'''FASM''' (''flat 어셈블러'')는 x86 프로세서 용 [[어셈블러]]이다. 이것은 [[IA-32]]와 [[x86-64]] 컴퓨터 아키텍처 용 인텔 스타일 [[어셈블리어]]를 지원한다. FASM은 빠른 속도와 크기 최적화, [[운영 체제]] 호환성 그리고 매크로 기능을 갖는다.<ref name="Manual">{{웹 인용
 |url=http://flatassembler.net/docs.php?article=manual
 |title=Flat Assembler Programmer's Manual
 |accessdate=2008-05-12
 |author=Tomasz Grysztar
}}</ref><ref name="WhichAsm" /> 이것은 저 수준 어셈블러이며<ref name="WhichAsm" /> 의도적으로 매우 적은 [[명령 줄]] 옵션을 갖는다. [[자유-오픈 소스 소프트웨어]]이다.

FASM의 모든 버전은 직접적으로 다음을 출력할 수 있다: flat "raw" [[이진 파일|바이너리]] (DOS [[COM 파일|COM executable]] 또는 SYS 드라이버로서 사용 가능한), 목적 파일: [[ELF 파일 형식]] (ELF) 또는 COFF (클래식 또는 MS-전용), 또는 [[MZ 실행 파일|MZ]], ELF, [[PE 포맷]] (WDM 드라이버를 포함하며 커스텀 MZ DOS 스텁을 허용하는) 실행 파일. [[ARM 아키텍처]]([http://arm.flatassembler.net FASMARM])를 위한 비공식적인 포팅도 존재한다.<ref name="ARM">{{웹 인용
 |url=http://arm.flatassembler.net/
 |title=FASMARM
 |date=2008-03-20
 |accessdate=2008-05-12
}}</ref>

== 설계 ==
FASM은 [[마이크로소프트 매크로 어셈블러|MASM]]이나 [[TASM]] 처럼 많은 고 수준 선언문을 지원하지 않는다.<ref name="WhichAsm">{{웹 인용
 |url=http://mmcs.sfedu.ru/~ulysses/Edu/MP/WhichAsm.html
 |제목=Which Assembler is the Best?
 |성=Randall Hyde
 |확인날짜=2008-05-18
 }}{{깨진 링크|url=http://mmcs.sfedu.ru/~ulysses/Edu/MP/WhichAsm.html }}</ref> 대신 선언문들을 커스터마이즈하고 생성할 수 있게 해주는 문법 특징과 매크로들을 제공한다. 이것의 메모리 어드레싱 문법은 TASM의 ideal 모드나 [[넷와이드 어셈블러|NASM]]과 비슷하다. 괄호는 두 어셈블러처럼 메모리 오퍼랜드를 의미하지만, 크기는 NASM처럼 괄호의 밖에 있다.

FASM은 멀티 패스 어셈블러이다. 이것은 광범위한 코드 크기 최적화를 해주며 자유로는 사전 참조를 허용한다.<ref name="Design">{{웹 인용|url=http://flatassembler.net/docs.php?article=design|제목=Flat Assembler Design Principles|성=Tomasz Grysztar|확인날짜=2008-05-12}}</ref> FASM의 특이한 구조로는 코드 내에서 사용될 때에만 프로시저를 정의하는 것이 있다. 이것은 대부분의 언어에서 [[링커 (컴퓨팅)|링커]]에 의해 오브젝트 단위로 수행된다.

FASM은 "같은 소스, 같은 결과" 원리에 기반한다: 결과 파일의 내용은 커맨드 라인에 의해 영향을 받지 않는다. 이러한 접근법은 FASM을 다른 많은 어셈블리 프로젝트에서 존재하는 컴파일 문제로부터 구해준다. 반면에 이것은 각각 다양하게 컴파일된 소스 파일들이나 또는 언어가 섞인 프로젝트들에서는 프로젝트를 유지보수하기 어렵게 한다. 하지만 FA라고 불리는 Win32 래퍼가 존재하고 이것은 이 문제를 완화시켜 준다.<ref name="FA">{{웹 인용|url=http://board.flatassembler.net/topic.php?t=9948|제목=FA – command line extension for fasm|성=Tomasz Grysztar|확인날짜=2012-05-11}}</ref> FASM 프로젝트들은 링킹 단게 없이 소스 파일에서 직접적으로 실행 파일을 만들 수 있다.

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

== 사용 ==
FASM으로 개발된 운영 체제들:
* DexOS - Ville Turijanmaa<ref name="DexOS FAQ">{{웹 인용
 |url          = http://www.dex-os.com/old/faq.htm
 |제목       = DexOS FAQ
 |확인날짜 = 2008-05-18
 |보존url    = https://web.archive.org/web/20160303235004/http://www.dex-os.com/old/faq.htm
 |보존날짜 = 2016-03-03
 |url-status = dead
}}</ref>
* [[미뉴엣OS|MenuetOS]]<ref name="MenuetOS">{{웹 인용
 |url=http://www.menuetos.net/
 |제목=MenuetOS
 |확인날짜=2008-05-18
}}</ref> – 32 - [[64비트]] GUI 운영 체제
* [[KolibriOS]]
FASM을 백엔드로 사용하는 컴파일러들:
* PureBasic
* [[High Level Assembly]] (HLA)
* BlitzMax

== 같이 보기 ==
* [[어셈블러 비교]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* FASM project: {{공식 웹사이트}}
* [http://fasmlib.x86asm.net/ FASMLIB] 0.8.0 – portable 32-bit x86 asm lib for FASM/MASM/YASM/NASM/GASM
* [http://arm.flatassembler.net FASMARM] – FASM for ARM processors, <small> v1.27, {{시작 날짜|2012|06|09}}</small>
* [http://fresh.flatassembler.net/ The Fresh IDE]

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