2013-11-25 10 views
1

:쓸모 저장 및로드

890c:  e50b0008  str  r0, [fp, #-8] 
8910:  e50b100c  str  r1, [fp, #-12] 
8914:  e51b0008  ldr  r0, [fp, #-8] 
8918:  e51b100c  ldr  r1, [fp, #-12] 

지난 2 LDR의 포인트는 무엇입니까?

답변

4

컴파일러는 완전히 최적화되지 않은 컴파일러를 방출합니다. 디버그 용으로 컴파일 할 때

a = 0; 
return a; 

과 같은 라인은 다소 비슷하게 보입니다.

재 : 의견 :이 경우, 그것은 다른 가능성이 프로그램이 메모리 매핑 된 I/O 레지스터를 수정된다는 것이다 대부분의 호출 순서

a = something; //compiler: calculate in register, write out to memory 
b = something_else; //compiler: calculate in register, write out to memory 
Func(a, b); //compiler: pick up from memory, branch and link to the function 
+0

다음 명령은 모두 설명하는 'bl'입니다. – mathk

0

입니다.

+1

IO에서 [fp, # -8]에 매핑 되었습니까? – mathk

+0

'fp'는 범용 레지스터로 사용할 수 없습니다 – tangrs