본문 바로가기
코스웨어/15년 스마트컨트롤러

20151201 - 권오민 - ARM ASSEMBLY 4일차/WinSock 2일차

by 알 수 없는 사용자 2015. 12. 1.
728x90
반응형

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를 만든다.

- 그림은 다음과 같다.

728x90