15주차를 마지막으로 교육주가 모두 끝났다. 짧다면 짧고 길다면 긴 교육기간 동안 빠르고 많은 지식을 배울 수 있었다. 교육전에 예상한 내 모습보다 교육에 열심히 참여한 모습에 자부심을 느낀다.
차주부터는 프로젝트 기간으로, 배정된 팀끼리 뭉쳐 한화비전의 카메라를 이용한 서비스 개발을 진행한다. 인생에 몇 없을 오롯이 학습에 집중하는 시간이 평생 기억날 듯 하다.
마지막 주제는 Assembly programming이다. ARM CPU를 사용하는 raspberryPi에서 c언어로 어셈블리 파일을 제작하고, 분석하며, 프로그래밍하며 최적화와 cpu register에 대한 개념을 배웠다.
이번 주제는 강사님과 한화비전에서 특별히 언급하는 만큼 카메라 최적화와 고급프로그래머로 성장하기에 꼭 알아야하는 개념이다. 한번더 복습하고 일상에서 자연스럽게 떠오르게 만들자.
FizzBuzz 프로그램을 Assembly로 작성해보면서 동작하는 방식을 익힌다.
.data
str: .asciz "i:%d\n"
str2: asciz "%s\n"
fmtA: .asciz "FizzBuzz\n"
fmtB: .asciz "Fizz\n"
fmtC: .asciz "Buzz\n"
.global main
.text
main:
stp x29, x30, [sp, -16]!
mov x19, xzr
1:
cmp x19, 100
bgt 10f
mov x20, x19
2:
cmp x20, #15
blt 3f
add x20, x20, #-15
cmp x20, #0
beq printBizzBuzz
bgt 2b
3:
mov x20, x19
4:
cmp x20, #5
blt 5f
add x20, x20, #-5
cmp x20, #0
beq printBuzz
bgt 4b
5:
mov x20, x19
6:
cmp x20, #3
blt end2
add x20, x20, #-3
cmp x20, #0
beq printBizz
bgt 6b
end2:
ldr x0, =str
mov x1, x19
bl printf
end1:
add x19, x19, #1
bl 1b
10:
ret
printBizzBuzz:
ldr x0, =fmtA
bl printf
bl end1
printBuzz:
ldr x0, =fmtC
bl printf
bl end1
printBizz:
ldr x0, =fmtB
bl printf
bl end1