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언어 코드
결과