System Programming(ARM)

5. 작성한 C 코드를 어셈블러로 변환하기 (arm)

suhwanc 2020. 12. 15. 18:58

이번 챕터는 실생활에 아주 필요한 방법이다. 이걸 가지고 어셈블리어 실습 때 몰래 쓰윽 바꿔서 제출할 수도 있고,

틀린 부분을 보거나, 기계는 이 코드를 어떻게 처리할 지 알아볼 수 있어서 좋다.

 

 

이번에 알아볼 코드는 단 두가지 밖에 안된다.

 

첫 번째, 작성한 C 코드를 어셈블리어로 바꾸는 방법은 다음과 같다.

 

"gcc -marm -O1 -c -o code.o code.c"

 

이 형식만 기억하면 된다.

 

두 번째, 바꾼 오브젝트 파일의 내용을 확인하는 방법은 다음과 같다.

 

"objdump -d code.o"

 

 

바로 실습으로 넘어가보자.

 

1. sum 함수

 

c언어 코드

변환 과정

vi로 코드를 작성 후 다음과 같이 명령어를 입력한다.

 

어셈블러 코드

그다음 objdump 명령어를 치면 다음과 같은 화면이 나타난다.

 

엄밀히 말하자면 첫 번째 "marm ~ " 코드는 c언어 코드를 오브젝트 파일로 바꾸어 준 것이고,

두 번째 objdump 파일은 바꾼 오브젝트 파일을 disassembling (분해) 한 결과이다.

 

추가로 -marm 은 arm 코드로 만들어주는 명령어이고

-S는 어셈블리 코드를 생성해주는 명령어이다.

 

 

2. swap 함수

 

c언어 코드

결과