2010-04-11 2 views
5

$gp 레지스터를 사용하여 값을 저장하는 데 위험이 있습니까? 나는 내 질문에 $gp의 진정한 기능이 무엇인지, 그리고 어떻게 든 비하인드 (back-the-scenes)로 불려지는 것 같아서, 만약 내가 그것을 사용한다면, 상황이 매우 잘못 될 수 있겠는가?

답변

5

음, $ gp 레지스터는 전역 영역을 가리 킵니다. Convention은 함수를 작성할 때 저장해야 함을 나타냅니다 (.cprestore 참조).

당신이이 일 remeber, (왜 정직하게, 캔트 참조)를 사용해야하는 경우

:

1) 항상 당신의 스택의 저장 등록 영역에 저장합니다.

2) 스택을 파괴 할 때는 항상 $ gp에 해당 값을로드하십시오.

3) 사용하지 마세요. (즉, 전역 범위에 액세스하지 말 것)

또한 확실하지 않지만 PIC 코드는 잊어 버릴 수 있습니다.

+1

조언 해 주셔서 감사합니다! – Hristo