스택 레지스터 란 무엇입니까?
컴퓨터와 관련하여 스택 레지스터는 일반적으로 중앙 처리 장치 (CPU) 또는 관련 처리 하드웨어에있는 메모리 위치로, 스택이라고하는 별도의 컴퓨터 메모리 영역 상단의 현재 주소를 보유합니다. 스택 레지스터는 컴퓨터가 없으면 프로그램 실행 흐름을 추적하는 더 느리고 오류가 발생하기 쉬운 방법을 구현해야하기 때문에 중요합니다. 대부분의 시스템 아키텍처에서 스택 레지스터는 전용 레지스터이므로 다른 메모리 레지스터로 작업 할 때 실수로 액세스되지 않습니다. 더 드물게 스택 레지스터는 일반적으로 프로그램에서 액세스 할 수 있지만 제조업체에서 정의하기 때문에 의도적으로 사용되지 않는 일반 레지스터 일 수 있습니다. 컴퓨터 시스템에 둘 이상의 스택 레지스터가 포함 된 경우 잠재적으로 둘 이상의 스택이있을 수 있으므로 아키텍처를 스택 머신이라고합니다.
가장 낮은 수준의 컴퓨터 프로그래밍에서 스택은 일반적으로 RAM (Random Access Memory)의 메모리 영역으로, 잘 정의 된 유형의 동작이 있습니다. 스택에는 푸시라는 프로세스에서 정보를 추가하거나 해당 정보를 검색 (팝핑이라고 함) 할 수 있습니다. 스택의 모델은 선입 선출 (first-in, last-out)입니다. 즉, 여러 조각의 정보가 스택으로 푸시 된 경우, 가장 먼저 입력 된 요소가 마지막으로 표시되는 요소가되고 마지막으로 입력 된 요소는 pop 명령으로 가장 먼저 검색 할 수 있습니다. 스택 레지스터는 스택의 맨 위에있는 항목을 항상 추적합니다.
컴퓨터 프로그램이 실행 중일 때 실행중인 각 명령에는 프로그램 기간 동안 임시로 저장되는 특정 메모리 주소가 있습니다. 프로그램이 프로그래밍 언어에 따라 서브 루틴 또는 프로 시저, 함수 또는 메소드를 호출하는 경우 프로그램은 서브 루틴 코드의 메모리 주소로 이동하여이를 실행해야합니다. 프로그램 제어 흐름이 중단되어 서브 루틴으로 분기되는 주소는 스택으로 푸시되어 기억됩니다. 서브 루틴의 실행이 완료되면 프로그램은 스택 레지스터가 가리키는 스택의 맨 위에서 코드 주소를 팝핑하여 메인 코드에서 리턴해야하는 위치를 알게됩니다.
동일한 결과를 얻는 데 사용할 수있는 다른 방법이 있지만 스택 및 스택 레지스터를 사용하면 재귀라는 중요한 프로그래밍 개념을 사용할 수 있습니다. 재귀 함수는 자체 코드 내에서 자체를 호출하는 함수입니다. 이 프로세스는 일반적으로 정렬 알고리즘 및 특정 수학 함수에 사용됩니다. 스택 레지스터는 실행이 분기되는 모든 마지막 주소를 추적하므로 함수는 결국 제어가 원점으로 돌아 간다는 지식으로 재귀를 안전하게 구현할 수 있습니다. 전체 스택이 가득 차고 메모리에 공간이 남아 있지 않으면 하나의 합병증이 발생하며,이 경우 스택 오버플로가 발생하여 프로그램 실행이 중단됩니다.