Linux Assembly HOWTO : 리눅스 어셈블리 하우투

BoldyshevKonstantin

Linux Assembly

    konst (at) linuxassembly.org

RideauFrancois-Rene

Tunes project

    fare (at) tunes.org

김영휘

http://lachesis.pe.kr

lachesis (at) kldp.org

$Date: 2001/10/27 02:18:17 $

이 문서는 리눅스 어셈블리 하우투이다. 이 문서는 GNU 의 자유 프로그래밍 도구들을 사용하여 (주로) 인텔의 32 비트 플랫폼(IA32 ; i386)의 리눅스에서 어셈블리 언어로 프로그래밍 하는 법을 설명한다. 이 글에서 설명하는 내용들은 다른 하드웨어나 소프트웨어 플랫폼에 적용될 수도 있고, 그렇지 않을 수도 있다. (역주: 이 번역문서는 부족한 저의 문장실력으로 필요성에 의하여 번역한 결과로 잘못된 오역과 의미에 이상없는 부분이 빠질 수도 있음을 미리 알립니다. 따라서 잘못된 번역으로 오는 책임은 저에게 없으며, 만일 수정해야 할 곳이 있다면 저에게 연락을 해주시기 바라며, 원저의 오류라면 원저자에게 연락해주시기 바랍니다. 부족한 제 영어실력으로 인해 번역이 애매한 부분은 원문을 같이 표기해 두었습니다.)

고친 과정
고침 번역 버젼 0.6-trans-0.12000. 11. 21 - 2001. 10. 20고친이 라키시스
문서 초벌 번역 완료 : Resource 이후의 것은 미번역
Version 0.6

차례
1. 소개
1.1. Legal Blurb (법적문제에 관한 잔소리)
1.2. 서문
1.3. 이 문서에 기여하는 법
2. 어셈블리가 정말로(!) 필요한가?
2.1. Pros and Cons - 득실(어셈블리를 사용함으로써 생기는 장점, 단점)
2.1.1. 어셈블리의 장점
2.1.2. 어셈블리의 단점
2.1.3. 결론
2.2. 어셈블리를 사용하지 않는 방법
2.2.1. 효율이 높은 코드를 생성하기 위한 일반적인 절차
2.2.2. 최적화된 좋은 코드를 생성하는 컴파일러를 가진 언어들
2.2.3. 여러분의 코드의 수행속도를 높이는 일반적인 절차
2.2.4. 컴파일러가 생성한 코드에 대한 고찰
2.3. 리눅스와 어셈블리
3. 가용한 어셈블러들
3.1. GCC 인라인 어셈블러
3.1.1. GCC 를 어디서 구할 것인가?
3.1.2. GCC 인라인 어셈블러에 관한 문서를 어디서 찾을 수 있는가
3.1.3. GCC 를 이용하여 인라인 어셈블리 코드를 생성하기
3.1.4. 매크로의 지원
3.2. GAS
3.2.1. 어디에서 GAS 를 찾을 수 있는가
3.2.2. AT&T 문법
3.2.3. GAS 의 인텔 문법 지원
3.2.4. 16-비트 모드
3.2.5. 매크로 지원
3.3. NASM
3.3.1. NASM을 어디서 구할 수 있는가
3.3.2. NASM 으로 무엇을 할 수 있는가
3.4. AS86
3.4.1. AS86 을 어디서 구할 수 있는가
3.4.2. 어셈블러를 작동시키는 방법 : How to invoke the assembler?
3.4.3. AS86의 문서를 찾을 수 있는 곳
3.4.4. 매크로 지원
3.4.5. 만약 이 새로운 버젼을 이용해서 리눅스를 더이상 컴파일 할 수 없다면 어떻게 해야 하는가 : What if I can't compile Linux anymore with this new version?
3.5. 다른 어셈블러들
3.5.1. Win32Forth 어셈블러
3.5.2. TDASM
3.5.3. Terse
3.5.4. HLA
3.5.5. TALC
3.5.6. x86 용의 프리가 아니거나 32비트가 아닌 어셈블러들
4. 메타프로그래밍
4.1. 외부 필터들
4.1.1. CPP
4.1.2. M4
4.1.3. 여러분이 만든 필터를 이용한 매크로 프로세싱
4.2. 메타프로그래밍
4.2.1. 컴파일러의 백엔드로 제공되는 어셈블러의 이용
4.2.2. 뉴저지 머신-코드 툴킷
4.2.3. TUNES 프로젝트
5. 함수 호출 규칙
5.1. Linux
5.1.1. GCC 로의 링킹 : Linking to GCC
5.1.2. ELF 와 a.out 문제
5.1.3. Direct Linux syscalls
5.1.4. 리눅스에서의 하드웨어 입출력
5.1.5. Accessing 16-bit drivers from Linux/i386
5.2. DOS and Windows
5.3. 여러분이 만든 OS
6. 일단 따라해보자(Quick Start)
6.1. 소개
6.1.1. 필요한 도구들
6.2. Hello, world!
6.2.1. Program layout
6.2.2. NASM (hello.asm)
6.2.3. GAS (hello.S)
6.3. 실행파일 만들기
6.3.1. 목적 코드 생성
6.3.2. 실행파일의 생성
7. Resources
7.1. Pointers
7.2. Mailing list
8. Frequently Asked Questions
A. History
B. Acknowledgements
C. Endorsements
D. GNU Free Documentation License