; scan.S


; scan

AREA text, CODE

EXPORT scan

scan

stmfd sp!, {r0, r4-r12, lr}

mov r1, r0

mov r0, #7

swi 0x123456

ldmfd sp!, {r0, r4-r12, pc}

END



; print_helloworld.S


AREA text, CODE

IMPORT print

IMPORT scan

EXPORT print_helloworld

print_helloworld

stmfd sp!, {r4-r12, lr}

bl scan

cmp r0, #49

beq print

adr r0, start_print

ldmfd sp!, {r4-r12, pc}

start_print

DCB "hello world!", 0

END



내가 ARM 어셈은 하나도 모르지만

하나는 분명히 알겠다.

scan 함수에서 리턴 값으로 r0 레지스터에 값을 실을거면서

왜 함수 스택 프레임 만들고 해제할 때 r0 값을 백업하고 복구하닝? ㅠㅠ

눈호랭이 바보~!!!