arm 아키텍처의 lr에 대한 궁금한 점..
글쓴이: maner07 / 작성시간: 화, 2006/04/18 - 9:52오전
lr이라는 것은 함수 호출할 때 돌아갈 주소(pc+#4)를 저장하는 레지스터잖아요?
다음과 같은 경우를 생각해보면..
c()
{
}
b()
{
....
c();
....
}
a()
{
....
b();
....
}
이 경우 a()에서 b()를 호출 했을때 lr에는 b()가 호출된 다음 코드의 주소가 저장이 되겠죠?
그리고 b()안에서 c()가 호출 된다면, lr에 c()가 호출된 다음 코드의 주소가 저장이 될텐데..
그렇다면 b()가 호출되었을때 저장된 lr은 어떻게 될까요?
컴파일러에서 코드를 해석할때 그 값을 보존해주는 추가적인 코드가 삽입되는 것일까요?
만약에 삽입되는 것이라면 어느 위치에 저장되는 것일까요?
Forums:
stack에..
해당 process의 stack영역에 저장됩니다. ^^;
arm assembly는 아니지만
arm assembly는 아니지만 보편적인 거니까 아래에 가서 programming from the ground up이라는 문서를 받아서 chapter 4. all about functions를 보시면 도움이 되지 않을까 싶습니다.
http://savannah.nongnu.org/projects/pgubook/
----------------------------------------------------------------------------------------
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
댓글 달기