이 부분은 Assembler directive 부분입니다. 자세한건 reference를 찾아보시구요.. 대강 32bit 코드이고 vectors라는 symbol을 export 하는 부분입니다.
vectors:
PTR(reset_vector)
PTR(start)
여기는 preprocessing 되는 부분인데...
.reset_vector: .word reset_vector
로 변환이 되구요.
.reset_vector라는 label에 reset_vector의 주소를 정의합니다.
아래 있는 start도 마찬가지구요..
.text
.global reset_vector
.global atexit
.type reset_vector, function
이 부분도 마찬가지로 assembler directive구요.
그 아래 코드는 귀차니즘 때문에 간략히 설명만 드리자면.. ^^;
BSS영역 -- .__bss_start label에 들어 있는 값(주소) 부터 .__bss_end label에 들어있는 값(주소) 까지 0으로 초기화를 하고 SP Register에 .StackHigh에 들어있는 값을 넣은 후 link register에 복귀주소를 넣고 StandaloneMain으로 분기하는 코드입니다.
ARM 용 assembly의 exception vector같군요.
이 부분은 C 프리프로세서를 이용하기 위해 매크로를 디파인 한 부분입니다.
이 부분은 Assembler directive 부분입니다. 자세한건 reference를 찾아보시구요.. 대강 32bit 코드이고 vectors라는 symbol을 export 하는 부분입니다.
여기는 preprocessing 되는 부분인데...
로 변환이 되구요.
.reset_vector라는 label에 reset_vector의 주소를 정의합니다.
아래 있는 start도 마찬가지구요..
이 부분도 마찬가지로 assembler directive구요.
그 아래 코드는 귀차니즘 때문에 간략히 설명만 드리자면.. ^^;
BSS영역 -- .__bss_start label에 들어 있는 값(주소) 부터 .__bss_end label에 들어있는 값(주소) 까지 0으로 초기화를 하고 SP Register에 .StackHigh에 들어있는 값을 넣은 후 link register에 복귀주소를 넣고 StandaloneMain으로 분기하는 코드입니다.
댓글 달기