FASM
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
FASM은 폴란드 출신의 토마스 그리슈타르가 1999년에 시작하여 2000년 3월에 공개한 어셈블러이다. 어셈블리 언어로 작성되었으며, 자가 호스팅을 지원한다. 16비트 플랫 리얼 모드에서 시작하여 32비트 지원 및 다양한 운영 체제로 이식되었으며, "동일한 소스, 동일한 출력" 원칙을 기반으로 한다. FASM을 위한 통합 개발 환경인 Fresh가 존재하며, MenuetOS, KolibriOS와 같은 운영체제와 PureBasic, High Level Assembly 등의 컴파일러에서 백엔드로 사용된다.
더 읽어볼만한 페이지
- 어셈블러 - 터보 어셈블러
볼랜드에서 개발한 터보 어셈블러는 빠른 속도와 MASM과의 높은 호환성을 특징으로 하며, 어셈블리 프로그래밍 입문자를 위한 튜토리얼과 샘플 코드를 제공하지만, 참조 문서 부족은 단점으로 지적되었다. - 어셈블러 - 마이크로소프트 매크로 어셈블러
마이크로소프트 매크로 어셈블러(MASM)는 1981년 첫 출시 후 인텔 프로세서 명령어와 SIMD, MMX 명령어 지원을 추가하며 업데이트되어 왔고, 현재는 Visual Studio에 통합되어 다양한 IDE, 디버거, 디스어셈블러를 통해 개발 환경이 지원되는 x86 어셈블리 언어 개발 도구이다. - 어셈블리어 - 기계어
기계어는 컴퓨터 CPU가 직접 이해하고 실행하는 이진수 형태의 명령어 집합으로, 각 프로세서는 고유한 명령어 집합을 가지며 어셈블리 언어를 통해 니모닉 코드로 표현될 수 있다. - 어셈블리어 - 주소 지정 방식
- 어셈블리어로 작성된 자유 소프트웨어 - VirtualDub
VirtualDub은 윈도우 운영 체제에서 실행되는 무료 오픈 소스 비디오 캡처 및 처리 유틸리티이며, AVI 파일을 주로 처리하고 플러그인을 통해 다른 파일 형식도 지원하며, 동영상 캡처, 편집, 비디오 처리 및 필터 기능을 제공한다. - 어셈블리어로 작성된 자유 소프트웨어 - X264
x264는 H.264/MPEG-4 AVC 비디오 코덱의 오픈 소스 인코더로, 높은 화질과 다양한 기능을 제공하며, 분산 인코딩을 지원한다.
| FASM - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | Tomasz Grysztar |
| 출시일 | 2000년 3월 |
| 최신 안정 버전 | 1.71.54 |
| 최신 안정 버전 출시일 | 2016년 6월 9일 |
| 프로그래밍 언어 | 어셈블리 |
| 지원 운영체제 | 유닉스 계열 리눅스 윈도우 및 IDE MS-DOS 및 IDE OpenBSD MenuetOS KolibriOS http://octavio.vega.fernandez.googlepages.com/octaos/ DexOS 및 IDE SkyOS http://www.oby.ro/os/ |
| 지원 플랫폼 | x86 x86-64 |
| 장르 | 어셈블러 |
| 라이선스 | 단순화된 BSD (약한 카피레프트 조항 포함) |
| 웹사이트 | flatassembler.net |
2. 역사
이 프로젝트는 1999년 폴란드 출신의 수학과 학부생이었던 토마스 그리슈타르(Tomasz Grysztar), 일명 ''프리발로프(Privalov)''에 의해 시작되었다. 2000년 3월에 공개되었으며[3][4], 어셈블리 언어로 작성되었고 전체 소스가 함께 제공된다. FASM은 자가 호스팅을 지원하며, 1999년 5월 4일 버전 0.90부터 자체 어셈블이 가능하다.
FASM은 원래 16비트 플랫 리얼 모드에서 실행되었다. 이후 32비트 지원과 선택적인 DPMI 지원이 추가되었다. 플랫 32비트 어드레싱을 사용하는 모든 운영 체제로 쉽게 이식할 수 있도록 설계되었으며, 윈도우, 그 다음 리눅스로 이식되었다.
2. 1. 개발 배경
이 프로젝트는 1999년 폴란드 출신의 수학과 학부생이었던 토마스 그리슈타르(Tomasz Grysztar), 일명 '프리발로프(Privalov)'에 의해 시작되었다. 2000년 3월에 공개되었으며,[3][4] FASM은 완전히 어셈블리 언어로 작성되었고 전체 소스가 함께 제공된다. FASM은 자가 호스팅을 지원하며, 버전 0.90(1999년 5월 4일)부터 자체 어셈블이 가능하다.FASM은 원래 16비트 플랫 리얼 모드에서 실행되었다. 이후 32비트 지원이 추가되었고, 선택적인 DPMI 지원이 보강되었다. 플랫 32비트 어드레싱을 사용하는 모든 운영 체제로 쉽게 이식할 수 있도록 설계되었으며, 윈도우, 그 다음 리눅스로 이식되었다.
2. 2. 초기 버전
이 프로젝트는 1999년 폴란드 출신의 수학과 학부생이었던 토마스 그리슈타르(Tomasz Grysztar), 일명 '프리발로프(Privalov)'에 의해 시작되었다. 2000년 3월에 공개되었으며[3][4], 어셈블리 언어로 작성되었고 전체 소스가 함께 제공된다. FASM은 자가 호스팅을 지원하며, 1999년 5월 4일 버전 0.90부터 자체 어셈블이 가능하다.FASM은 원래 16비트 플랫 리얼 모드에서 실행되었다. 이후 32비트 지원이 추가되었고, 선택적인 DPMI 지원이 보강되었다. 플랫 32비트 어드레싱을 사용하는 모든 운영 체제로 쉽게 이식할 수 있도록 설계되었으며, 윈도우와 리눅스로 이식되었다.
2. 3. 32비트 및 플랫폼 확장
FASM은 원래 16비트 플랫 리얼 모드에서 실행되었다. 이후 32비트 지원이 추가되었고, 선택적으로 DPMI를 지원하도록 기능이 보강되었다. FASM은 플랫 32비트 어드레싱을 사용하는 모든 운영 체제로 쉽게 이식할 수 있도록 설계되었으며, 윈도우와 리눅스로 이식되었다.3. 설계
FASM은 "같은 소스, 같은 결과" 원칙을 기반으로 설계되어, 결과 파일 내용이 커맨드 라인에 영향을 받지 않는다.[6] 이는 컴파일 문제를 방지하지만, 여러 소스 파일이나 혼합 언어 프로젝트의 유지보수를 어렵게 할 수 있다. FA라는 Win32 래퍼가 이 문제를 완화해준다.[14] FASM 프로젝트는 링킹 단계 없이 소스 파일에서 바로 실행 파일을 만들 수 있다.[5]
3. 1. 특징
FASM은 MASM이나 TASM처럼 많은 고수준 선언문을 지원하지 않는다.[12] 대신 선언문들을 커스터마이즈하고 생성할 수 있게 해주는 문법 특징과 매크로들을 제공한다. 메모리 어드레싱 문법은 TASM의 ideal 모드나 NASM과 비슷하다. 두 어셈블러에서처럼 괄호는 메모리 오퍼랜드를 의미하지만, 크기는 NASM처럼 괄호 밖에 있다.[6]FASM은 멀티 패스 어셈블러로, 광범위한 코드 크기 최적화를 수행하며 자유로운 사전 참조를 허용한다.[13] [5] [6] 코드 내에서 사용될 때에만 프로시저를 정의하는 것은 FASM의 특이한 구조인데, 이는 대부분의 언어에서 링커에 의해 오브젝트 단위로 수행되는 작업이다.
FASM은 "같은 소스, 같은 결과" 원리에 기반한다. 결과 파일의 내용은 커맨드 라인에 의해 영향을 받지 않는다.[6] 이러한 접근법은 FASM을 다른 많은 어셈블리 프로젝트에서 존재하는 컴파일 문제로부터 구해준다. 반면에 각각 다양하게 컴파일된 소스 파일들이나 또는 언어가 섞인 프로젝트들에서는 프로젝트를 유지보수하기 어렵게 한다. 하지만 FA라고 불리는 Win32 래퍼가 존재하고 이것은 이 문제를 완화시켜 준다.[14] [7] FASM 프로젝트는 링킹 단계 없이 소스 파일에서 직접 실행 파일을 만들 수 있다.[5]
3. 2. 메모리 주소 지정
FASM의 메모리 주소 지정 구문은 TASM의 이상적인 모드와 NASM과 비슷하다. 두 어셈블러에서와 마찬가지로 대괄호는 메모리 피연산자를 나타내는 데 사용되지만, 크기는 NASM과 같이 대괄호 밖에 배치된다.[6]3. 3. 최적화
FASM은 다중 패스 어셈블러이다. 광범위한 코드 크기 최적화를 수행하며 제약 없는 전방 참조를 허용한다.[5][6] FASM의 특이한 구성은 코드 어딘가에서 사용되는 경우에만 프로시저를 정의하는 것인데, 이는 대부분의 언어에서 링커에 의해 객체별로 수행되는 작업이다.3. 4. 컴파일 방식
FASM은 MASM이나 TASM처럼 많은 고수준 선언문을 지원하지 않는다.[12] 대신 선언문들을 커스터마이즈하고 생성할 수 있게 해주는 문법 특징과 매크로들을 제공한다. 메모리 어드레싱 문법은 TASM의 ideal 모드나 NASM과 비슷하다. 두 어셈블러에서처럼 괄호는 메모리 오퍼랜드를 의미하지만, 크기는 NASM처럼 괄호 밖에 있다.FASM은 멀티 패스 어셈블러이다. 광범위한 코드 크기 최적화를 해주며 자유로운 사전 참조를 허용한다.[13] 코드 내에서 사용될 때에만 프로시저를 정의하는 것은 FASM의 특이한 구조이다. 이는 대부분의 언어에서 링커에 의해 오브젝트 단위로 수행된다.
FASM은 "같은 소스, 같은 결과" 원리에 기반한다. 결과 파일의 내용은 커맨드 라인에 의해 영향을 받지 않는다.[6] 이러한 접근법은 FASM을 다른 많은 어셈블리 프로젝트에서 존재하는 컴파일 문제로부터 구해준다. 반면에 각각 다양하게 컴파일된 소스 파일들이나 또는 언어가 섞인 프로젝트들에서는 프로젝트를 유지보수하기 어렵게 한다. 하지만 FA라고 불리는 Win32 래퍼가 존재하고 이것은 이 문제를 완화시켜 준다.[14] FASM 프로젝트는 링킹 단계 없이 소스 파일에서 직접 실행 파일을 만들 수 있다.[5]
4. Fresh IDE
Fresh는 존 파운드(John Found)가 시작한 인터넷 커뮤니티 지원 프로젝트로, FASM을 위한 통합 개발 환경(IDE)이다.[8] 마이크로소프트 윈도우와 리눅스를 지원한다.[8]
4. 1. 목표
Fresh는 존 파운드(John Found)가 시작한 인터넷 커뮤니티 지원 프로젝트로, FASM을 위한 통합 개발 환경이다.[8] Fresh의 목표는 다른 시각적인 언어들처럼 프로그래밍을 빠르고 효율적으로 할 수 있게 하면서도, 작은 애플리케이션 크기와 어셈블리어의 원시적인(raw) 강력함을 유지하는 것이다. Fresh는 윈도우 프로그래밍에서 사용될 수 있지만, FASM을 지원하는 도스, 리눅스, FreeBSD, BeOS, 미뉴엣OS와 같은 운영 체제를 위한 프로그램 개발도 가능하다.[8]4. 2. 지원 운영체제
FASM은 도스, 리눅스, FreeBSD, BeOS, 미뉴엣OS를 지원한다.5. 사용 예시
FASM은 여러 운영 체제 및 컴파일러 개발에 사용된다.
FASM으로 작성된 대표적인 운영 체제로는 메뉴엣OS[9], 콜리브리오스 등이 있다. 메뉴엣OS는 빌 투리얀마가 제작한 32비트 및 64비트 GUI 운영 체제이다.
FASM은 퓨어베이직, 하이 레벨 어셈블리(HLA), 블리츠맥스 등 컴파일러의 백엔드로도 사용된다.
5. 1. 운영 체제 개발
5. 2. 컴파일러 백엔드
FASM을 백엔드로 사용하는 컴파일러는 다음과 같다.| 컴파일러 |
|---|
| 퓨어베이직 |
| 하이 레벨 어셈블리 (HLA) |
| 블리츠맥스 |
참조
[1]
웹사이트
Flat Assembler Programmer's Manual
http://flatassembler[...]
2008-05-12
[2]
웹사이트
FASMARM
http://arm.flatassem[...]
2008-05-12
[3]
웹사이트
Interview with Privalov the author of FASM
https://web.archive.[...]
2008-05-12
[4]
웹사이트
flat assembler
http://marc.info/?l=[...]
2008-05-19
[5]
웹사이트
Which Assembler is the Best?
http://mmcs.sfedu.ru[...]
2008-05-18
[6]
웹사이트
Flat Assembler Design Principles
http://flatassembler[...]
2008-05-12
[7]
웹사이트
FA – command line extension for fasm
http://board.flatass[...]
2012-05-11
[8]
웹사이트
Fresh ID project
https://fresh.flatas[...]
[9]
웹사이트
MenuetOS
http://www.menuetos.[...]
2008-05-18
[10]
웹인용
Flat Assembler Programmer's Manual
http://flatassembler[...]
2008-05-12
[11]
웹인용
FASMARM
http://arm.flatassem[...]
2008-05-12
[12]
웹인용
Which Assembler is the Best?
http://mmcs.sfedu.ru[...]
2008-05-18
[13]
웹인용
Flat Assembler Design Principles
http://flatassembler[...]
2008-05-12
[14]
웹인용
FA – command line extension for fasm
http://board.flatass[...]
2012-05-11
[15]
웹인용
DexOS FAQ
https://web.archive.[...]
2008-05-18
[16]
웹인용
MenuetOS
http://www.menuetos.[...]
2008-05-18
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
