; 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 값을 백업하고 복구하닝? ㅠㅠ
눈호랭이 바보~!!!
근데 왜 쓰지도 않는 레지스터들은 백업하고 난린겨?