본문 바로가기
임베디드소프트웨어

8-Bit AVR 스택(Stack) 살펴보기

by Go! Jake 2022. 3. 22.

 

스택의 목적

스택은 주로 임시 데이터, 지역 변수, 그리고 서브 루틴 명령이나 인터럽트 이후 리턴 주소를 저장하는 데 사용됩니다. 이는 높은 메모리 위치부터 낮은 메모리 위치 방향으로 구현됩니다. 스택 포인터 레지스터는 항상 스택 최상단을 가리킵니다. 또한 서브루틴과 인터럽트 스택이 위치한 SRAM 데이터 영역을 가리킵니다.

스택 포인터

스택 포인터
스택 포인터

AVR에서 스택 포인터는 I/O 영역에 존재하는 8-bit 레지스터 2개로 이루어져 있습니다. BIT 번호는 구현하기에 따라 다릅니다.

참고: AVR 아키텍처 구현에서 데이터 영역이 매우 작다면 SPL 영역만 필요하고 SPH는 존재하지 않습니다.

 

스택 명령

스택 명령
스택 명령

푸쉬 명령은 스택 포인터 값을 낮춥니다. SRAM 내에 스택은 반드시 서브루틴 명령이나 인터럽트 이전에, 프로그램에 정의되어야 합니다.  초기 스택 포인터 값은 내부 SRAM 마지막 주소값과 같습니다. 그리고 스택 포인터는 반드시 SRAM 시작보다 높은 값에서 시작하여야 합니다.

 

해당 글은 8-Bit AVR® Stack - Developer Help (microchipdeveloper.com)를 참조하였습니다.

 

댓글