[Arm프로세서] AAPCS: Armv7: sub 명령어

Guillermo Austin Kim|2021년 6월 2일
Posts

[Arm프로세서] AAPCS: Armv7: sub 명령어

Guillermo Austin Kim|2021년 6월 2일

sub는 지정된 상수만큼 감소시키는 연산을 수행하는 명령어인데, push 명령어 다음에 'sub sp, sp, #28'와 같이 SP 레지스터의 값을 감소시키는 명령어를 볼 수 있습니다. 이와 같은 sub 명령어는 조금 더 확장해 다음과 같이 설명할 수 있습니다. “함수 내에 선언된 지역 변수를 사용하기 위해 스택 공간을 확보한다.” C 프로그래밍에서 "지역 변수는 스택 공간에 저장된다"라는 내용을 배운 적이 있을텐데, SP 레지스터를 빼는 연산이 이에 해당됩니다. [정보]세미나에 받았던 좋은 질문을 소개합니다. "sub 명령어와 함께 SP 레지스터를 0x4나 0x8만큼 감소시키는 동작이 왜 지역 변수를 사용하기 위해 스택 공간을 확보하는 것일까? SP 레지스터를 감