꺄뜨르 2012. 6. 6. 21:57

APCS - ARM procedure Call Standard 로 ARM에서 함수를 호출하는 표준을 일컫는다.

r0~r0 함수의 아규먼트 값 전달에 사용

r0,r1 함수의 리턴 값(4바이트 보다 크면 r1까지 사용됨)

r4~r9 지역변수로 사용

r10~r15 특수 레지스터(SL:stack limit, FP:frame point, IP:intra-procedure-call register,LR,PC)

 

ARM 레지스터 활용 팁

1. 지역 변수의 주소를 사용하지 않는다.

 

 

int f2(int a){

f1(&a);

} //이 경우 레지스터에 저장 안됨

int f2(int a){

int temp = a;

f1(&temp);

} //레지스터에 저장된다함?

 

2. 전역 변수를 사용하지 않는다.

 전역 변수는 절대 레지스터에 저장되지 않는다. 전역 변수는 포인터에 의한 간접 접근이나 함수 호출에 의해서 값이 변할 수 있기 때문에 레지스터에 저장될 수 없다.

 

3. 복잡 한 포인터 체인을 제거한다.

(이건 걍 -> -> -> 이렇게 길게 하면 복잡하니깐 ->이걸 줄이라는 얘기인듯...걍 지역변수로 하나 포인터 만들어서

-> 이렇게 줄일 수 있음)