์๋
ํ์ธ์, ์ฌ๋ฌ๋ถ! ์ค๋์ ์๋ฒ ๋๋ ์์คํ
์ ์ฌ์ฅ, ๋ถํธ ์ฝ๋๋ฅผ ํํํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณผ ๊ฑฐ์์. ๐ป ๋ง์น ๋ฏธ์ง์ ์ธ๊ณ๋ฅผ ํํํ๋ ํํ๊ฐ์ฒ๋ผ, ๋ถํธ ์ฝ๋๋ฅผ ์ด๋ฃจ๋ ARM ์ด์
๋ธ๋ฆฌ ๋ช
๋ น์ด๋ค์ ํ๋ํ๋ ํํค์ณ ๋ณด๊ฒ ์ต๋๋ค. ์ค๋น๋์
จ๋์? ๐ง
๋ถํธ ์ฝ๋(Boot Code)๋ ์ปดํจํฐ๋ ์๋ฒ ๋๋ ์์คํ ์ด ์ฒ์ ์์๋ ๋ ์คํ๋๋ ์ฝ๋ ์กฐ๊ฐ์ด์์. ๋ง์น ๊ฑด๋ฌผ์ ๊ธฐ์ด ๊ณต์ฌ์ ๊ฐ์์, ์์คํ ์ด ์ ์์ ์ผ๋ก ์๋ํ๊ธฐ ์ํ ์ค๋น ์์ ์ ๋ด๋นํ์ฃ . ๐งฑ ๋ถํธ ์ฝ๋๋ ํ๋์จ์ด๋ฅผ ์ด๊ธฐํํ๊ณ , ์ด์์ฒด์ ๋ฅผ ๋ก๋ํ๊ฑฐ๋ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฑ ์ค์ํ ์ญํ ์ ํด์.
๋ถํธ ์ฝ๋๋ ์ฃผ๋ก ์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ก ์์ฑ๋๋๋ฐ, ์ค๋์ ๊ทธ์ค์์๋ ARM ์ํคํ ์ฒ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ๋ช ๋ น์ด๋ค์ ํจ๊ป ์ดํด๋ณผ ๊ฑฐ์์. ๋ง์น ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ, ์ด ๋ช ๋ น์ด๋ค์ ์กฐํฉํ์ฌ ๋ถํธ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ต๋๋ค! ๐งฑ
ldr r1, [r0]
(Load Register): r0
๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ ๊ฐ์ ์ฝ์ด r1
๋ ์ง์คํฐ์ ์ ์ฅํด์. ๋ง์น ์ฑ
์ฅ์์ ์ฑ
์ ๊บผ๋ด์ด ์ฝ๋ ๊ฒ๊ณผ ๊ฐ์์! ๐str r1, [r0]
(Store Register): r1
๋ ์ง์คํฐ์ ๊ฐ์ r0
๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ์ฅํด์. ๋ง์น ์ฝ์ ์ฑ
์ ๋ค์ ์ฑ
์ฅ์ ๊ฝ์๋๋ ๊ฒ๊ณผ ๊ฐ์ฃ ! ๐r0
, r1
: ARM ์ฝ์ด์ ์ ์ฅ ๊ณต๊ฐ! ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฐ์ฐ์ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ๋ค์ด์์. ๋ง์น ์ปดํจํฐ์ ์์
๋์ ๊ฐ์ฃ ! ๐งฐsub sp, sp, #4
: ์คํ ํฌ์ธํฐ(sp)๋ฅผ ๊ฐ์์์ผ ์คํ์ 4๋ฐ์ดํธ ๊ณต๊ฐ์ ํ ๋นํด์. ๋ง์น ์๋์ ํ ์นธ ํ์ฅํ๋ ๊ฒ๊ณผ ๊ฐ์์! ๐๏ธstmf sp!, {r0-r3, lr}
(Store Multiple Full descending): ์ฌ๋ฌ ๋ ์ง์คํฐ ๊ฐ๋ค์ ์คํ์ ์ ์ฅํ๊ณ , ์คํ ํฌ์ธํฐ๋ฅผ ๊ทธ๋งํผ ๊ฐ์์์ผ์. ์ค์ํ ๋ฌผ๊ฑด๋ค์ ์๋์ ์ฐจ๊ณก์ฐจ๊ณก ๋ฃ์ด๋๋ ๊ฒ๊ณผ ๊ฐ์์! ๐๏ธldmf sp!, {r0-r3, pc}
(Load Multiple Full ascending): ์คํ์์ ์ฌ๋ฌ ๋ ์ง์คํฐ ๊ฐ๋ค์ ๋ก๋ํ๊ณ , ์คํ ํฌ์ธํฐ๋ฅผ ๊ทธ๋งํผ ์ฆ๊ฐ์์ผ์. ์๋์ ๋ฃ์ด๋ ๋ฌผ๊ฑด๋ค์ ๊บผ๋ด๋ ๊ฒ๊ณผ ๊ฐ์ฃ ! ๐๏ธmrs r0, cpsr
(Move from Status Register): ํ์ฌ ํ๋ก๊ทธ๋จ ์ํ ๋ ์ง์คํฐ(cpsr) ๊ฐ์ r0
๋ ์ง์คํฐ์ ๋ณต์ฌํด์. ๋ง์น ํ์ฌ ์์คํ
์ ์ํ๋ฅผ ์ค๋
์ท์ผ๋ก ์ฐ๋ ๊ฒ๊ณผ ๊ฐ์์! ๐ธbic r0, r0, #0x1F
(Bit Clear): r0
๋ ์ง์คํฐ์ ํน์ ๋นํธ๋ค์ 0์ผ๋ก ๋ง๋ค์ด์. ๋ง์น ์ค์์น๋ฅผ ๋๋ ๊ฒ๊ณผ ๊ฐ์ฃ ! ๐กorr r1, r1, #0x10
(Bitwise OR): r1
๋ ์ง์คํฐ์ ํน์ ๋นํธ๋ค์ 1๋ก ์ค์ ํด์. ๋ง์น ์ค์์น๋ฅผ ์ผ๋ ๊ฒ๊ณผ ๊ฐ์ฃ ! ๐กlsrl rq, #2
(Logical Shift Right): rq
๋ ์ง์คํฐ์ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก 2๋นํธ ๋งํผ ๋
ผ๋ฆฌ ์ํํธ ์ฐ์ฐํฉ๋๋ค. ๋ง์น ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋ ๊ฒ๊ณผ ๊ฐ์์! ๐งฎmsr cpsr_cxsf, r1
(Move to Status Register): r1
๋ ์ง์คํฐ์ ๊ฐ์ ์ํ ๋ ์ง์คํฐ(cpsr)์ ํน์ ํ๋์ ์ ์ฅํ์ฌ, ํ๋ก์ธ์ ๋ชจ๋๋ ์ธํฐ๋ฝํธ ์ค์ ์ ๋ณ๊ฒฝํด์. ๋ง์น ์์คํ
์ค์ ์ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ ๊ฐ์์! โ๏ธhandel
: ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ์ด๋ธ ๋๋ ์ฃผ์! ๋ง์น ์ง๋์์ ํน์ ์์น๋ฅผ ํ์ํ๋ ๊ฒ๊ณผ ๊ฐ์์. ๐บ๏ธlabel
: ์ฝ๋ ๋ด์์ ํน์ ์์น๋ฅผ ๋ํ๋ด๋ ๋ ์ด๋ธ! ๋ง์น ์ฝ๋์ ํ์งํ๊ณผ ๊ฐ์์. ๐locktime
: ์์คํ
๋ฝ์ด๋ ํ์ด๋จธ ๊ด๋ จ ์ค์ ์ ์ฌ์ฉ๋๋ ๋ณ์! ๋ง์น ์๊ณ์ ์ค์ ๊ฐ๊ณผ ๊ฐ์์. โฑ๏ธrq
: ํน์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ ๋ณ์! ๐งฎmend
: ์ฝ๋ ๋ธ๋ก์ ๋์ ํ์ํ๋ ๋ ์ด๋ธ! ๋ง์น ์ํ์ ์๋ฉ ํฌ๋ ๋ง๊ณผ ๊ฐ์์. ๐ฌ์ด ๋ช ๋ น์ด๋ค์ ๋ง์น ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ ์กฐํฉ๋์ด ๋ค์ํ ๋์์ ์ํํ ์ ์์ด์. ์๋ฅผ ๋ค์ด, ๋ถํธ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์์ฃ .
sub sp!, stmf
์ ldmf
: ์ด ๋ช
๋ น์ด๋ค์ ํจ์ ํธ์ถ ์ ์คํ ํ๋ ์์ ์์ฑํ๊ณ ์ ๊ฑฐํ๋ ๋ฐ ํ์์ ์ด์์. ํจ์ ํธ์ถ ์ ์ ํ์ํ ๋ ์ง์คํฐ ๊ฐ์ ์คํ์ ์ ์ฅํ๊ณ , ํจ์ ์ข
๋ฃ ํ ๋ณต์ํ๋ ์ญํ ์ ํ์ฃ . ๐๏ธcpsr
์กฐ์: mrs
, bic
, orr
, msr
๋ช
๋ น์ด๋ค์ cpsr
๋ ์ง์คํฐ๋ฅผ ์กฐ์ํ์ฌ ํ๋ก์ธ์์ ๋์ ๋ชจ๋, ์ธํฐ๋ฝํธ ์ค์ ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด ์ค๋๋ค. โ๏ธlsrl
: rq
๋ ์ง์คํฐ์ ์ ์ฅ๋ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ํํธํ์ฌ ์ฃผ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํฉ๋๋ค.๐งฎ์ค๋ ์ฐ๋ฆฌ๋ ๋ถํธ ์ฝ๋๋ฅผ ์ด๋ฃจ๋ ARM ์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ด๋ค์ ํจ๊ป ํํํด ๋ดค์ด์. ๐ ์ฒ์์๋ ๋ณต์กํด ๋ณด์์ง๋ง, ํ๋ํ๋ ๋ฏ์ด๋ณด๋ ๋ง์น ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ ์ฝ๊ฒ ์ดํดํ ์ ์์์ฃ ? ๐ ๋ถํธ ์ฝ๋๋ ์์คํ ์ ์์์ ์๋ฆฌ๋ ์ค์ํ ๋ถ๋ถ์ด๋, ์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๋์ฑ ๊น์ด ์๋ ํ์ต์ ์ด์ด๊ฐ์๊ธธ ๋ฐ๋๋๋ค! ๐
๋ ๊ถ๊ธํ ์ ์ด๋ ์ง๋ฌธ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์! ๐โโ๏ธ๐โโ๏ธ