컴퓨터 과학 & 영상처리 관련/임베디드
arm에서의 최적화
꺄뜨르
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. 복잡 한 포인터 체인을 제거한다.
(이건 걍 -> -> -> 이렇게 길게 하면 복잡하니깐 ->이걸 줄이라는 얘기인듯...걍 지역변수로 하나 포인터 만들어서
-> 이렇게 줄일 수 있음)