서강대학교 마이크로프로세서응용실험 6주차결과
- 최초 등록일
- 2014.01.02
- 최종 저작일
- 2013.06
- 11페이지/ 한컴오피스
- 가격 2,000원
목차
1. 실험 제목
2. 실험 목적
3. 실험 내용 및 분석
4. 검토사항(exercise)
5. 결론
6. 참고 문헌
본문내용
1. 실험 제목
Subroutines and stacks
2. 실험 목적
Subroutine의 호출 및 복귀와 관련된 명령어들과 그들의 동작에 대해 이해한다.
Stack의 활용방법, 연관 명령어, subroutine과의 연관성 등을 이해한다.
Subroutine으로의 변수 전달 방식에 대해 이해한다.
개별적인 파일에 작성된 subroutine의 assemble/compile 및 link를 위한 directives의 역할을 이해한다.
3. 실험 내용 및 분석
Program 1
STACK_BASE EQU 0x20000100
area lab6_1,code
entry
__main proc
export __main [weak]
start ldr sp,=STACK_BASE
ldr r1,=0x1234
ldr r2,=0x4321
bl swap
ldr r1,=-0x4321
ldr r2,=-0x1234
bl swap
stop b stop
endp
swap proc
push {r3,lr}
cmp r1,r2
bgt r2m
mov r3,r2
mov r2,r1
mov r1,r3
r2m pop {r3,pc}
endp
end
▲ Program 1 사용 코드
이론
BL명령어는 link register에 원래 프로그램의 명령어의 주소를 저장하고 지정된 곳으로 분기를 한다. 이 때 분기하는 곳을 subroutine이라고 한다. subroutine의 목적은 프로그램에서 반복적인 계산이 필요할 때에 사용하거나 여러 사람이 동시에 프로그램을 작성할 때 수행되는 단위별로 구현하기 위한 것(modular programming)이다. 그리고 이것을 subroutine을 호출(call)한다고 말한다. 그리고 pc에 다시 lr의 내용을 복구하면서 원래 프로그램으로 돌아가게 되는데 이를 복귀(return)라고 한다. 그리고 subroutine에서 다시 subroutine을 부를 때 이전에 LR에 저장되어있던 값이 overwrite되므로, stack을 이용하여 주소들을 저장하고 본 프로그램으로 복귀할 수 있다.
참고 자료
김경환,“마이크로프로세서개론” 강의교재Ch.6,Appendix, 서강대학교, 2013.
Yiu, J, "The definitive guide to the ARM Cortex-M3", Newnes. 2010.