ARM ASSEMBLY |
◉2. 컴파일에 대한 단상
- 메모리에 들어있는 숫자를 해석하기에 따라 다르다.
- CPU가 가져가면 명령어이다.
- 수정하거나 고치면 데이터이다.
- 교차 개발 환경
- cross compile 환경
- ex) 윈도우 환경에서 arm 소스를 작성하는 것이다.
- ARM, ATmega 등은 자체적으로 불가하다.
- 컴파일에 관한 이야기이다.
●armcc
http://wowcat.tistory.com/1961
- ARM ADS
- ARM Developer Suite
- ARM 사에서 제작한 유료 C컴파일러이며, 현재는 단종되었다.
- 버전이 올라가면서 이름이 바뀌었다.
- ADS -> IAR
◉3. 컴파일 공장 이야기
- 윈도우는 PE 파일 형태, 리눅스는 ELF 파일 형태를 지원한다.
- ELF 자체가 오브젝트 파일이다.
●라이브러리
- 소스제공 없이 기계어만 제공하는 것이다.
- 혼자서 완성된 형태가 아니며, 다른 .c를 컴파일한 Object와 연결할 수 있다.
●link
- 여러 개의 .c file을 c-Compiler로 Assembly로 만든다.
- Assembly를 Assembler를 이용하여 Object라는 기계어 형태로 만든다.
- Object들을 연결하는 것이다.
●map file
- 컴파일 된 binary의 메모리 구성을 나타내 주는 text file이다.
- compiler option을 주어야만 만들어진다.
- option은 다음과 같다.
- 메모리 구성은 다음과 같다.
- option을 추가했다.
- 결과
- main.map이라는 파일이 생성되었다.
- 내용은 위의 출력내용과 동일하다.
●전처리기(Preprocessor)
- C processor와 lint Processor을 이용하여 웬만한 syntax적인 것들을 정리해 둔다.
- lint Processor는 UNIX 계열에서 사용되는 syntax 정리기로 보면 된다.
- 역할.
- 1. macro, define 들을 compile하기 전에 모두 바꿔놓는다.
- 2. syntax error가 있는지를 검사한다.
- armcc나 tcc는 Assembly를 만들고, 최적화 하는 것에만 신경 쓰면 된다.
●컴파일 과정
- 1. 전처리를 한다.
- c 형식의 .i file를 만든다.
- 2. 전처리 한 녀석을 mnemonic의 Assembly로 만든다.
- 기계어와 1:1 대응의 .s Assembly를 만든다.
- 3. Assembly를 실제 기계어로 만든다.
- lelf 형식의 .o file를 만든다.
- 그림은 다음과 같다.
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
2015-12-01 ARM Assembly & WinSock Chatting 개인업무일지 - 천정호 (3) | 2015.12.01 |
---|---|
20151201-김재홍-ARM_Assembly (3) | 2015.12.01 |
2015.12.01_[ARM #3][Winsock #2]_이량경_ARM ADS, socket (2) | 2015.12.01 |
20151201 엄민웅 - arm 임베디드레시피 (교제 162~199) WinSock 2일차. (3) | 2015.12.01 |
20151201 - 홍준모(WinSock) - 1일 차 (2) | 2015.12.01 |
2015-11-30 Win32 API Socket 개인업무일지 - 천정호 (5) | 2015.12.01 |
20151130 김태현 업무일지 Winsock #1 (4) | 2015.12.01 |
2015.11.30_[Winsock #1]_이량경_소켓통신 (3) | 2015.12.01 |