-------------------------------------------------------------------- ARM7 ๊ฐ์ข [1] : ๊ฐ์ข ์๊ฐ -------------------------------------------------------------------- โ ๊ฐ์ข ์๊ฐ RISC์นฉ ์ค์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์ ํ๋์ธ ARM7์ ๋ํ์ฌ ๋ค๋ฃจ์ด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ถ์กฑํ ์ ์ด ๋ง๊ฒ ์ง๋ง, ์ด ๊ฐ์ข๋ฅผ ํตํด ARM7์ ๊ณต๋ถํ์๋ ๋ถ๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์์ผ๋ฉด ํ๊ณ , ์์ธ๋ฌ ์ ์ญ์ ์ด๋ค ๋ณด๋์ ์ป์ ์ ์์์ผ๋ฉด ํฉ๋๋ค. โ ๊ฐ์ข์์ ๋ค๋ฃจ๊ณ ์ ํ๋ ๋ด์ฉ๋ค - ๊ฐ์ - ๊ตฌ์กฐ - ๋ ์ง์คํฐ - Exception(1) - Exception(2) - Instruction Set(1) - Instruction Set(2) - Instruction Set(3) - StrongARM ์ฌ์ค ARM ์ํคํ
์ฒ์ ๊ฒฝ์ฐ์ ๊ด๋ จ ๋ฌธ์๊ฐ ์์ฃผ ์ ๋ง๋ค์ด์ ธ ์์ต๋๋ค. www.arm.com ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ฉด ํด๋น ๋ฌธ์๋ฅผ PDFํํ๋ก ๋ฐ์ ๋ณผ ์ ์๊ณ ๋ด์ฉ๋ ์์ฃผ ์ ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ๊ฐ์ข๋ฅผ ํตํด ์ด๋ ์ ๋ ๊ธฐ๋ณธ์ ์ตํ๊ณ ํด๋น ์๋ฃ๋ฅผ ์ฐพ์ ๊ณต๋ถํ์ ๋ค๋ฉด, ๋น ๋ฅธ ์์ผ ๋ด์ ARM์ ์ตํ ์ ์์ผ๋ฆฌ๋ผ ์๊ฐ๋ฉ๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [2] : ๊ฐ์ -------------------------------------------------------------------- โ ARM7์ ํน์ง ARM์ ๊ฐ์ฅ ํฐ ํน์ง์ ์ ๋ ฅ์ ์กฐ๊ธ๋ง ์๋ชจํ๋ค๋ ๊ฒ์
๋๋ค. ์ผ์ค์ ์ํ๋ฉด, ARM์ ์ค๊ณํ ๋, ์์ฆ CPU๋ฅผ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ฒ๋ผ VHDL๋ฑ์ ์ฌ์ฉํ ๊ฒ์ด ์๋๋ผ ์ผ์ผ์ด ํ๋ก๋ฅผ ๊ทธ๋ ค๊ฐ๋ฉด์ ํ๋ค๋ ์ค๋ ์์ต๋๋ค. ์ฌ์ค์ด์ผ ์ด๋ป๋ , ARM์ ์ -์ ๋ ฅ ์ค๊ณ๊ธฐ์ ์ ๋๋ฆฌ ์๋ ค์ง ์ฌ์ค์
๋๋ค. ์ด๋ฐ ์ด์ ๋๋ฌธ์, ARM CPU๋ ์๋์ ์ผ๋ก ์ ๋ ฅ์ด ์ค์ํ๊ฒ ์ฌ๊ฒจ์ง๋ ํด๋์ฉ ๋จ๋ง๊ธฐ์ ๋ง์ด ์ฑํ๋๊ณ ์์ต๋๋ค. ์ด์ ์ด๋ฐ ์ผ๋ฐ์ ์ธ ๋ด์ฉ๋ง๊ณ , ์ข ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ผ๋ก ๋ค์ด๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ๋ค์์ ARM7์ ํน์ง๋ค์
๋๋ค. 1. 32 Bit RISC ํ๋ก์ธ์ : ARM7์ ๋ด๋ถ์ ์ผ๋ก 32Bit์ ๋ฐ์ดํฐ ๋ฒ์ค์ 32Bit์ ์ด๋๋ ์ค ๋ฒ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ด๋ถ์ ์ด๋ ๋ง์, ARM7์ด Core ํํ๋ก ์ฌ๋ฌ ์ข
๋ฅ์ ์นฉ์ ํ์ฌ๋๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ด๋ค ์นฉ์ ์ด๋๋ ์ค ๋ผ์ธ์ ๋ด๋ถ์ ์ผ๋ก๋ 32๋นํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ธ๋ถ์ ์ผ๋ก๋ ๋ฉ๋ชจ๋ฆฌ ๋งค๋์ง๋จผํธ ์ ๋์ ํตํด 24๋นํธ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์๋ ค์ ธ ์๋ฏ์ด ARM์ ๋ํ์ ์ธ RISC ์ฝ์ด์
๋๋ค. 2. Big/Little Endian ๋ชจ๋์ง์ : ์๋์์ด๋ผ๋ ๊ฒ์, ํํ ์ญ-์๋ ๋ฐฉ์์ด๋ผ๊ณ ๋งํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ์ธํ
๊ณ์ด์ CPU์์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ๋ฐ์ดํธ์ ๋ด์ฉ์ ์ ์ฅ ํ ๋, ํ์ ๋ฐ์ดํธ๊ฐ ๋จผ์ ์ค๊ณ ์์ ๋ฐ์ดํธ์ผ ์๋ก ๋ค์ ์ค๋๋ฐ, ์ด๋ฐ ํํ๋ฅผ Little Endian์ด๋ผ๊ณ ํฉ๋๋ค. ๋ ๋ชจํ ๋กค๋ผ ๊ณ์ด์ CPU์ฒ๋ผ ๊ฐ์ฅ ์์ ๋ฐ์ดํธ๊ฐ ๋จผ์ ์ค๋ ๋ฐฉ์์ด Big Endian์
๋๋ค. ํด๋น ์ค์ ์ ARM7์ด ๊ตฌํ๋ ์นฉ์ ๋ฐ๋ผ ํ๋ฆฌ์ง๋ง, ๋ณดํต ์นฉ ์ธ๋ถ์์ ํ ์
๋ ฅ์ ๋ฐ์ ๊ฒฐ์ ๋ฉ๋๋ค. 3. High Performance RISC : ARM7 ์ ๊ฒฝ์ฐ 3V๋ฅผ ์ฌ์ฉํ๊ณ 25MHz์ Clock์ ์ฌ์ฉํ ๋ ์ฝ 17MIPS๊ฐ ๋์จ๋ค๊ณ ํฉ๋๋ค. 4. Fast Interrupt Response : ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒ ํด ์ค ์ ์๋ FAST์ธํฐ๋ฝํธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ํ์ ๋ ์ง์คํฐ ๋ถ๋ถ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ง๋ง, ๋ ์ง์คํฐ ์
์ ๋ฐ๋ก ์ ๊ณตํด์, ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฃจํด์์ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅ, ๋ณต๊ตฌํ๋ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ์์
๋๋ค. 5. Excellent high level language support : ์ธ์คํธ๋ญ์
์
์ ์ดํผ๋ฉด, C๋ ๋ค๋ฅธ ์ธ์ด์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ ๋ฐ๋ก ๊ตฌํํ ์ ์๋ ๋ช
๋ น์ด๋ค์ด ์ ๊ณต๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ณ์์ ์, ๋ค์ ++๋ --๋ฅผ ๋ถ์ด๋ ํ์์ ์คํผ๋ ์ด์
์ ์ ๊ณตํฉ๋๋ค. 6. Simple & Powerful Instruction Set : ARM์ ๋ช
๋ น์ด๋ ๊ทธ ์ข
๋ฅ๊ฐ ์ ์ผ๋ฉด์๋, ๋ค์ํ๊ฒ ์ ์ฉ์ํฌ ์ ์๋ ํน์ง์ด ์์ต๋๋ค. ์ดํ์ ๋ค๋ฃจ๊ฒ ๋๋ฉด ์ฌ๋ฌ๋ถ๋ค๋ ๋๋ผ์๊ฒ ์ง๋ง, ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ , ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ค๋์ ARM7์ ์ ๋ฐ์ ์ธ ๋ด์ฉ์ ๋ํด ๊ฐ๋จํ ์ธ๊ธํ์ต๋๋ค. ์ฌ์ค ARM์ ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ ์ฝ์ง ์์ ์ผ์
๋๋ค. ์๋ํ๋ฉด, ARM์ ์ฌ์ฉํ ์นฉ์ ๊ตฌํ๊ธฐ๊ฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ธ๋ฐ์, ์ต๊ทผ CPU์ธ ๋งํผ, ๋์ค๋๋ผ๋ SMDํ์
์ผ๋ก ๋์ค๋ ๊ฒ์ด ๋ง๊ณ ์๋์ผ๋ก ๊ตฌ๋งคํ๊ธฐ๊ฐ ์ฝ์ง๊ฐ ์์ต๋๋ค. ํ์ง๋ง, ์ฌ๋ฌ๋ถ๋ค์ด ํ์ฌ์์ ์ผ์ ํ๊ฒ ๋๋ฉด, ์ฌ์ ์ด ๋ฌ๋ผ์ง๋๋ค. ARM์ ๋น๊ต์ ์ ๋ ดํ๋ฉด์๋ ๊ฐ๊ฒฉ์ ๋นํด ์ข์ ์ฑ๋ฅ์ ๋ณด์ด๊ณ , ๊ฒ๋ค๊ฐ ์ -์ ๋ ฅ ์๋ชจ๋ผ๋ ๊ฐ๋ ฅํ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ตญ๋ด ๋ฐ๋์ฒด ์
๊ณ์์๋ LG, ์ผ์ฑ, ํ๋ ๋ฑ, ๋ชจ๋ ARM ์ฝ์ด๋ฅผ ์ฌ์ฉํ ์นฉ์ ์์ฐํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ , ARM์ ์ฌ์ฉํ ๋์ ์ฅ์ ์ค์ ํ๋๋, ARM์ฌ์์ ๊ฐ๋ฐํ๊ฒฝ๊ณผ ๋ํ๋จผํธ ๋ฑ์ ์ ๊ณตํ๋ค๋ ๊ฒ์
๋๋ค. ๋ด์ฉ์ ๋๋๋ก ์ฝ๊ฒ ์ฐ๋ ค๊ณ ๋
ธ๋ ฅํ๋๋ฐ, ์ด๋ ๋์ง ๋ชจ๋ฅด๊ฒ ๊ตฐ์. ๊ทธ๋ฌ๋ฉด ๋ค์ ๊ฐ์ข์์ ๋ต๊ฒ ์ต๋๋ค. ๋ค์ ๊ฐ์ข์์๋ ARM7์ ๋ธ๋ก ๊ตฌ์กฐ์ ๋ํด์ ์ดํด๋ณผ ์๊ฐ์
๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [3] : ARM7์ ๊ตฌ์กฐ -------------------------------------------------------------------- โ ARM7์ ๊ตฌ์กฐ 1. ๋ ์ง์คํฐ : ARM7์๋ 31๊ฐ์ 32Bit ๋ ์ง์คํฐ๊ฐ ์์ต๋๋ค. ๋, ๋์๋ชจ๋์ ๋ฐ๋ฅด๋ -์ฌ๊ธฐ์ ๋์๋ชจ๋๋ Exception๋ถ๋ถ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.- 6๊ฐ์ Status ๋ ์ง์คํฐ๊ฐ ์์ต๋๋ค. 2. ALU : 32Bit ์ฐ์ฐ์ด ๊ฐ๋ฅํ ALU๊ฐ ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ํน์ดํ ๊ฒ์ ALU์ ํ์ชฝ ์
๋ ฅ์ Barrel Shifter๋ผ๋ ๊ฒ์ด ์ฐ๊ฒฐ๋์ด ์์ด์ ALU์ ์ธ์ ํ๋๋ ๋ ์ง์คํฐ์์ ๋ฐ๋ก ๋ค์ด์ค๊ณ , ๋ค๋ฅธ ํ๋๋ ๋ ์ง์คํฐ๋ ๋ฒ์ค์์ Barrel Shifter๋ผ๋ ๊ฒ์ ๊ฑฐ์ณ ์
๋ ฅ๋๋๋ก ๋์ด ์์ต๋๋ค. ์ด๋ฐ ์ด์ ๋ก ARM7์์๋ ์ 2 ์คํผ๋๋๋ฅผ ์ง์ ํ ๋, ํด๋น ๊ฐ์ ์ฌํํธ ์์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณดํต ๋ค๋ฅธ CPU์์๋ ์ฌํํธ ๋ช
๋ น์ด ๋ฐ๋ก ์์๋๋ฐ, ARM7์์๋ ๋ฐ๋ก ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ ๋๋ถ๋ถ์ ๋ช
๋ น์์ ์ต์
์ผ๋ก ์ ์ฉ์ํฌ ์ ์์ต๋๋ค. 3. Booth's ๊ณฑ์
๊ธฐ : ๊ณฑ์
๊ธฐ๋ฅ์ ์ ๊ณตํ๋ 32 ๋นํธ Booth's ๊ณฑ์
๊ธฐ๊ฐ ์์ต๋๋ค. ๊ณฑ์
๊ธฐ๋ 32 ๋นํธ ์ฐ์ฐ์ ์ง์ํ๋ฉฐ, 32๋นํธ์ ๋ ์
๋ ฅ์ ๋ฐ์์ ๊ณฑํ์ฌ, ๊ฒฐ๊ณผ๊ฐ 32๋นํธ๋ฅผ ๋๋๋ผ๋ ๋๋ ๋ถ๋ถ์ ๋ฒ๋ฆฌ๊ณ 32๋นํธ๋ง์ ๋จ๊น๋๋ค. ์ด๋ฐ์ ์ธ์คํธ๋ญ์
๋์ฝ๋์ ์ธํฌ๋ฆฌ๋ฉํฐ๊ฐ ๋ฌ๋ฆฐ ์ด๋๋ ์ค ๋ ์ง์คํฐ ๋ฑ์ด ์๊ณ , ๋ด๋ถ์ ์ผ๋ก๋ ์ง๋๋ฒ์๋ ๋งํ๋ฏ์ด 32๋นํธ์ ์ด๋๋ ์ค & ๋ฐ์ดํฐ ๋ฒ์ค๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋, ARM7์ ํ์ดํ๋ผ์ธ์ ์ ๊ณตํ๊ณ , ์ถ๊ฐ์ ์ผ๋ก StrongARM๊ณผ ๊ฐ์ ์นฉ์์๋ ์บ์ฌ ๊ธฐ๋ฅ๊ณผ MMU ๊ธฐ๋ฅ ๋ฑ๋ ์ ๊ณตํฉ๋๋ค. ์ ์ ๋ง์ ๋๋ ธ์ง๋ง, ARM7์ CPU์ ์ฝ์ด๋ฅผ ๋งํฉ๋๋ค. ์ฆ, ํน์ ์นฉ์ ์ผ์ปซ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์, ํํ CPU๋ฅผ ์ ํ ๋ ๋ค๋ฃจ๊ฒ ๋๋ I/O์ ์ด๋ ํ์ด๋จธ, ์ธํฐ๋ฝํธ ๋ถ๋ถ ๋ฑ์ ๊ฐ์ข์์ ์๊ฐ๋์ง ์์ต๋๋ค. ์๋ํ๋ฉด, ๊ฐ์ ARM7 ์ฝ์ด์ CPU๋ผ ํ๋๋ผ๋ ํด๋น ๋ถ๋ถ๋ค์ด ๊ฐ๊ธฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ๋ถ๋ค์ด ARM7 ์ฝ์ด๋ฅผ ์ฌ์ฉํ ์นฉ์ ๊ณต๋ถํ์๊ณ ์ ํ ๊ฒฝ์ฐ์, ๋จผ์ ์ด ๊ฐ์ข์ ๋ด์ฉ์ธ ARM7 ์ฝ์ด์ ๋ํ ๋ถ๋ถ์ ๊ณต๋ถํ๊ณ , ๋ค์์ ํด๋น ์นฉ์ ๋ฐ์ดํฐ์ํธ๋ฅผ ๋ณด์
์ผ ํฉ๋๋ค. ์ฐธ๊ณ ๋ก, ์ ๊ฐ ๊ณต๋ถํ๋ ์นฉ์ ์คํ์์ ๋์จ LH77790 ์ด๋ผ๋ ์นฉ๊ณผ Strong ARM ์ฝ์ด๋ฅผ ์ฌ์ฉํ ์ธํ
์ SA1100 ์ด๋ผ๋ ์นฉ ๋ ๊ฐ์ง ์
๋๋ค. StrongARM์ Digital ์ฌ์์ ARM7 ์ฝ์ด๋ฅผ Licence ์ป์ด์ ํ์ฅํ ํํ์ธ๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๊ฑฐ์ ์ ์ฌํ๊ณ MMU๊ฐ์ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๊ฐ ๋ ์ฝ์ด์
๋๋ค. ํ์ฌ๋ Intel์ด Digital๋ก๋ถํฐ Licence๋ฅผ ๊ตฌ์
ํ์ฌ ์์ฐํ๊ณ ์๊ณ , SA110 ์ด๋ SA1100, SA1111 ๋ฑ์ ์นฉ์ผ๋ก ์ ์๋์ด ํ๋งค๋๊ณ ์์ต๋๋ค. ํ์ฌ ์๊ฐ์ผ๋ก๋ ๊ฐ์ข์ ๋ ๋ถ๋ถ์ ๊ฐ์ StrongARM์ธ SA1100์ ๋ํด์๋ ์กฐ๊ธ ๋ค๋ฃจ์ด ๋ณผ ์๊ฐ์
๋๋ค. ๊ทธ๋ผ ์ค๋ ๊ฐ์ข๋ ์ด๋ง ์ค์ด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ค์ ๊ฐ์ข์์๋ ARM7์ ๋ ์ง์คํฐ์ ๋ํ ๋ด์ฉ์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [4] : ๋ ์ง์คํฐ -------------------------------------------------------------------- โ ARM7์ ๋ ์ง์คํฐ ์ง๋ ๊ฐ์ข์์ ARM7์๋ 31๊ฐ์ General Purpose ๋ ์ง์คํฐ์ 6๊ฐ์ Status ๋ ์ง์คํฐ๊ฐ ์๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค. ๋ฌผ๋ก ๋ชจ๋ 32๋นํธ ๋ ์ง์คํฐ์
๋๋ค. ๊ทธ๋ฐ๋ฐ, ARM7์ ์ด์
๋ธ๋ฌ์์ ์ฌ์ฉํ๋ ๋ฒ์ฉ ๋ ์ง์คํฐ ํค์๋๋ r0์์ r15๊น์ง 16๊ฐ ๋ฐ์๋ ๋์ง ์์ต๋๋ค. ์ฆ, ๋ค์ ๋งํด์ ์ฌ์ฉ์๊ฐ ํ๋ฒ์ ์ฌ์ฉํ ์ ์๋ ๋ ์ง์คํฐ๋ 16๊ฐ ์
๋๋ค. ๊ทธ ์ค์ ๋ช ๊ฐ๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ (PC) ๋ ์คํ ํฌ์ธํฐ(SP) ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋๋จธ์ง ๋ ์ง์คํฐ๋ CPU ๋์ ๋ชจ๋(Exception)๊ณผ ๊ด๋ จ๋์ด r0-r15๋ก ๋ฆฌ-๋งตํ๋์ด ์ฌ์ฉ๋๋๋ฐ ์ด๋ ๋ค์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค. 1. Special Purpose General Register ์ ๋ถ๋ถ์์ ์ ์ ์ค๋ช
๋๋ ธ์ง๋ง, User๊ฐ ํ๋ก๊ทธ๋จ ํ ๋ ๋ ์ง์คํฐ ์ง์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ํค์๋๋ r0์์ r15๊น์ง ์
๋๋ค. ๊ทธ ์ค์ ๋ช ๊ฐ์ง๋ ํน๋ณํ ๋ชฉ์ ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. - Program Counter (r15) : r15๋ ๋ค๋ฅธ CPU์์ PC์ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ๋ค๋ง ์ฐจ์ด๊ฐ ์๋ค๋ฉด r15๋ฅผ ์ผ๋ฐ ๋ค๋ฅธ ๋ ์ง์คํฐ์ฒ๋ผ ์คํผ๋๋๋ก ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ด๊ณ (๋ค๋ฅธ CPU๋ ๋ง์ฐฌ๊ฐ์ง์ธ๊ฐ์?) ARM์ด์
๋ธ๋ฌ์์๋ pc๋ผ๋ ํค์๋์ r15๋ฅผ ๋์ผํ๊ฒ ์ทจ๊ธํฉ๋๋ค. - Stack Pointer (r13) : ARM7์๋ Stack์ ์ํ ๋ช
๋ น์ด๊ฐ ๋ฐ๋ก ์์ต๋๋ค. ์ฆ, Push ๋ Pop๋ฑ์ ๋ช
๋ น์ด๊ฐ ์ ๊ณต๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ sp๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ r13์ ์ธ ์ ์๋๋ฐ, ๋ฌต์์ ์ผ๋ก r13์ ์คํํฌ์ธํฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ ํด ๋์ ๋ฏ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ํํ์ด๋ฉด r0๋ r1์ด ์๋๊ณ r13์ sp๋ผ๊ณ ๋ถ๋ฅด๋๊ฐ ํ๋ฉด, ์ญ์ Exception๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ์ด๋ฏ๋ก ์ ์ ํ์(ํน์ ๋ค์๊ฐ์ข์) ์ค๋ช
ํ๋๋ก ํ์ง์. ๊ทธ๋ฆฌ๊ณ , Push ๋ช
๋ น์ด๋ Pop ๋ช
๋ น์ด ์์ผ๋ฏ๋ก, ARM7์์๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ผ๋ฐ ๋ฐ์ดํฐ ์ ์ก ๋ช
๋ น์ ํตํด ํด๊ฒฐํฉ๋๋ค. ARM7์ ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์ Auto Increment ๊ธฐ๋ฅ์ด ์์ด์ ํ๋์ ์ธ์คํธ๋ญ์
์ผ๋ก Push๋ Pop๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ์ํ ํ ์ ์์ต๋๋ค. - Link Register (r14) : r14๋ ๋งํฌ ๋ ์ง์คํฐ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ด ๋ ์ง์คํฐ๋ 8086๋ฑ์์๋ ๋ณด์ง ๋ชปํ๋ ๊ธฐ๋ฅ์ ๋ ์ง์คํฐ์
๋๋ค. 8086๋ฑ์ ํ๋ก์ธ์๋ ์๋ธ๋ฃจํด์ ํธ์ถํ ๊ฒฝ์ฐ CALL์ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ํ๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ฅผ ์คํ์ ๋ฃ๊ณ , ํธ์ถ๋ ๋ฒ์ง๋ฅผ ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ๋ฃ๋ ๋์์ ํ๋๋ฐ, ARM7์์๋ CALL๊ณผ RET์ ๊ฐ์ ๋ช
๋ น์ด ์์ต๋๋ค. ๋์ Branch with Link ๋ผ๋ ๋ช
๋ น(BL)์ด ์๋๋ฐ, ํด๋น ๋ช
๋ น์ ์ํํ๋ฉด, CALL๊ณผ ๋น์ทํ๊ฒ ๋ค์์ ์ํ๋ pc(r15)๊ฐ์ ์คํ์ด ์๋๋ผ lr(r14)์ ๋ฃ๊ณ ๋ถ๊ธฐ ๋ฒ์ง๋ฅผ pc(r15)์ ๋ฃ์ด ๋ถ๊ธฐํฉ๋๋ค. ์ฆ, ์คํ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด์ง์. ๋ณต๊ทํ ๋๋ RET๋์ mov pc,lr ์ด๋ผ๋ ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์ผ๋ก ๋ณต๊ทํฉ๋๋ค. ์ด๋ฐ ๋ฐฉ์์ ๋๋ฆ๋๋ก ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์ฐ์ ๋จ์ ์ ๋งํ์๋ฉด, ์ด๋ค ์๋ธ๋ฃจํด์ด ์ฝ ๋์์ ๋, ์๋ธ๋ฃจํด์์๋ ๋ณต๊ท๋ฒ์ง๊ฐ r14์ ๋ค์ด์๋ ์ํ๊ฐ ๋ฉ๋๋ค. ๋ฌธ์ ๋ ํด๋น ์๋ธ๋ฃจํด์์ ๋ค์ ํ๋ฒ ๋ค๋ฅธ ์๋ธ๋ฃจํด์ ์ฝ ํ๋ค๋ฉด, ์๋ r14์ ๋ณด๊ด๋์ด ์๋ ๋ณต๊ท ๋ฒ์ง ๊ฐ์ด ๋ฎ์ด์์์ง๋ ๊ฒฐ๊ณผ๊ฐ ์๊น๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์, ์๋์ผ๋ก sp(r13)๋ฅผ ์ด์ฉํ์ฌ ์คํ์ r14 ๊ฐ์ ๋ณด๊ดํด ๋์ด์ผ ํฉ๋๋ค. ์ฆ, Callํ๊ธฐ ์ ์ r14๋ฅผ ์คํ์ ๋ณด๊ดํด ๋๊ณ , ๋ฆฌํดํด์ ๋ณต๊ตฌํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ์
์ด์ง์. ๊ทธ๋ฌ๋ฉด ๊ตฌํ์ฌ ์ ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๊น์. ์ด๋ฏธ ๋์น์ฑ์ ๋ถ๋ค๋ ๊ณ์๊ฒ ์ง๋ง, ๊ทธ๋ ๊ฒ Call์ ์ฐ์์ ์ผ๋ก ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋, ํ๋ฒ๋ง Call ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ์คํ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ, ๊ทธ ์๋์์ ์ด์ต์ ์ป๊ฒ ๋๋ ๊ฒ์ด์ฃ . ๊ฐ์ธ์ ์ผ๋ก๋ ๊ธฐ๋ฅ์ด์ผ ์ด๋ป๋ , Call๊ณผ Ret ๋ง์ ์์ด์ ์ฝ๋๋ฅผ ์ฝ๊ธฐ๊ฐ ์๋นํ ์ข์ง ์๋ค๋ ์๊ฐ์
๋๋ค. ์ฝ๋๋ฅผ ๋ณด๊ณ ์ด๋์ ์ด๋๊น์ง๊ฐ ํ ํ๋ก์์ ์ธ์ง ์ฝ๊ฒ ๋ถ๊ฐ์ด ์ ๊ฐ ๊ฒฝ์ฐ๊ฐ ๋ง๊ฑฐ๋ ์. 2. ARM7 Status Register ์ด์ Status ๋ ์ง์คํฐ๋ฅผ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ARM7์๋ 32๋นํธ์ Status ๋ ์ง์คํฐ๊ฐ 6๊ฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ 6๊ฐ ๋ชจ๋๋ฅผ ํ๊บผ๋ฒ์ ์ฌ์ฉํ์ง๋ ๋ชปํ๊ณ , ๋ ๊ทธ๋ด ํ์๋ ์์ฃ . ์ผ๋จ์ ํ๋์ 32๋นํธ Status ๋ ์ง์คํฐ๋ง ์๊ฐํ๋ฉด ๋ฉ๋๋ค. Status ๋ ์ง์คํฐ๋ PSR์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก CPSR์ด๋ผ๊ณ ํ์ฌ Current Processor Status Register๋ก ๋ถ๋ฆ
๋๋ค. PSR์ ํฌ๊ฒ Flag Bits๋ถ๋ถ๊ณผ Control Bits๋ถ๋ถ์ผ๋ก ๋๋ฉ๋๋ค. - Flag Bits : ์ด๋ค ์ธ์คํธ๋ญ์
์ ๊ฒฐ๊ณผ ๋ฑ์ ๋ํ๋ด๋ ๋ถ๋ถ์ผ๋ก 4 ๋นํธ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ CPU์ ๊ทธ๊ฒ๊ณผ ์ ์ฌํ๋ฐ, ๊ฐ๊ฐ N, Z, C, V ์ 4๊ฐ์ง์
๋๋ค. 1) Negative/Less Than Flag : N์ผ๋ก ํ๊ธฐ๋๋ ์ด ํ๋๊ทธ๋ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ง์ด๋์ค์ธ ๊ฒฝ์ฐ์ ์ธํธ๋ฉ๋๋ค. 2) Zero Flag : Z๋ก ํ๊ธฐ๋๋ ์ด ํ๋๊ทธ๋ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋์์ ๊ฒฝ์ฐ์ ์ธํธ๋ฉ๋๋ค. 3) Carry/Borrow/Extend Flag : C๋ก ํ๊ธฐ๋๋ ์ด ํ๋๊ทธ๋ ์๋ฆฌ์ฌ๋ฆผ์ด๋ ๋ด๋ฆผ์ด ๋ฐ์ํ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ Shift ์ฐ์ฐ ๋ฑ์์ ์ฌ์ฉ๋ฉ๋๋ค. 4) Overflow Flag : V๋ก ํ๊ธฐ๋๋ ์ด ํ๋๊ทธ๋ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ค๋ฒํ๋ก์ฐ ๋์์ ๊ฒฝ์ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด์์ Flag Bit๋ค์ ๋ค๋ฅธ ์นฉ์ ์ํ ๋ ์ง์คํฐ์ ๋ค๋ฅด์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ดํด๋ฅผ ํ๋ ๋ฐ์๋ ๋ณ ๋ฌด๋ฆฌ๊ฐ ์์ผ๋ฆฌ๋ผ ์๊ฐ๋๋ฉฐ, ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด, ๊ฐ ๋ช
๋ น์ด์ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์๊ธธ ๋ฐ๋๋๋ค. - Control Bits : ์ปจํธ๋กค ๋นํธ๋ค์ ์ธํฐ๋ฝํธ๋ฅผ ์ ์ดํ๋ ๋นํธ์ ๊ณ์ํด์ ์ธ๊ธ๋๊ธฐ๋ง ํ๊ณ ์ค์ฒด๋ฅผ ๋๋ฌ๋ด์ง ์๊ณ ์๋ Exception๊ณผ ๊ด๋ จ๋ CPU ๋์๋ชจ๋๋ฅผ ์ค์ ํ๊ฑฐ๋ ํ์ธํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ง Bit๊ฐ ์์ต๋๋ค. 1) IRQ / FIQ Disable Bit : ARM7์ ์ธํฐ๋ฝํธ ์ค์์ IRQ์ FIQ๋ฅผ ๊ธ์ง์ํฌ ์ ์๋ ํ๋๊ทธ์
๋๋ค. ์ธํฐ๋ฝํธ์ ์ข
๋ฅ๋ ์ด๋ฐ์๋ ๋ช ๊ฐ์ง๊ฐ ๋ ์๋๋ฐ, ๊ทธ ์ค์์ IRQ, FIQ๋ PSR์ ํตํด ๊ธ์ง์ํค๊ฑฐ๋ ๊ฐ๋ฅํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค. 2) Mode Bits : M0 ์์ M4๊น์ง์ ๋ชจ๋ ๋นํธ๋ CPU์ 6๊ฐ์ ๋์ ์ํ๋ฅผ ๋ํ๋
๋๋ค. ์ฆ, ๊ฐ๋จํ๋ง ๋งํ์๋ฉด ARM7์ 6๊ฐ์ ๋์ ๋ชจ๋๋ฅผ ๊ฐ์ง๋๋ฐ, ์ด๋ฅผํ
๋ฉด User๋ชจ๋์ ์ธํฐ๋ฝํธ ๋ชจ๋ ๋ฑ์
๋๋ค. ์ญ์ ์์ธํ ๋ด์ฉ์ ๋ค์ ๊ฐ์ข๋ฅผ ํตํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด์ Status ๋ ์ง์คํฐ๋ฅผ ํ๋ฒ ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค. +----------------------------------------------------------------+ | N | Z | C | V | ... | I | F | | M4 | M3 | M2 | M1 | M0 | +----------------------------------------------------------------+ Bit 31 30 29 28 7 6 4 3 2 1 0 ์ค๋์ ARM7์ ๋ ์ง์คํฐ์ ๋ํด ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์์๋ณด์์ต๋๋ค. ํ์ง๋ง ๋ง์ ๋ถ๋ถ์์ ARM7์ ๋์ ๋ชจ๋์ ๊ด๋ จ๋๋ ๋ถ๋ถ์ด ๋์์ง์. ๋๋ฌธ์ ๋ค์ ์๊ฐ์ผ๋ก ๋ฏธ๋ฃฌ ๋ถ๋ถ๋ค์ด ๋ง๊ตฐ์. ๋ค์ ๊ฐ์ข์์๋ ARM7 Exception์ ๋ํด์ ๋ค๋ฃจ๋ ค๊ณ ํฉ๋๋ค. ์ค๋์ ์ด๋ง ์ค์ด๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [5] : Exception (1) -------------------------------------------------------------------- โ Exception ์ฐ์ Exception์ด ๋ฌด์์ ๋งํ๋์ง๋ฅผ ์ด์ ๋ถํฐ ์ ๋ฆฌํด ๋ณด๊ณ ์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ธํฐ๋ฝํธ์ ์ ์ฌํ ๊ฐ๋
์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ป๊ฒ ๋ณด๋ฉด ์ธํฐ๋ฝํธ๋ณด๋ค๋ ์กฐ๊ธ ํฐ ๊ฐ๋
์ด๋ ์๋ ์๊ณ , ์ ํํ ์ ์์ ๋ํด์๋ ๋ง์์ ๋๋ฆฌ์ง ๋ชปํ๊ฒ ๊ตฐ์. ๊ฐ๋
์ ARM7์์์ Exception์ผ๋ก ํ์ ํด์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ARM7์๋ FIQ(Fast Interrupt reQuest)์ IRQ(Interrupt reQuest), Abort, Software Interrupt, Undefined Instruction Trap์ 5๊ฐ์ง Exception์ด ์๊ณ , ๊ฐ๊ฐ Exception์ด ๋ฐ์ํ๋ฉด CPU๋ ๋์ํ๋ ๋์๋ชจ๋๋ก ์ ํ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๋ณดํต ๋์์ํ์ธ User ๋์๋ชจ๋๊ฐ ์ถ๊ฐ๋์ด ๋์ ๋ชจ๋๋ ์ด 6๊ฐ๊ฐ ์์ต๋๋ค. - IRQ : ์ผ๋ฐ์ ์ผ๋ก I/O ์ฅ์น๋ก๋ถํฐ์ ์
๋ ฅ์ด ๋ค์ด์ค๋ฉด ๋ฐ์์ ํ๋ ํํ ๋งํ๋ ์ธํฐ๋ฝํธ Exception์
๋๋ค. IRQ์ ์ข
๋ฅ๋ก๋ ๋ด๋ถ ํ์ด๋จธ๋ ์๋ฆฌ์ผ, ํน์ ์ธ๋ถ IRQ์
๋ ฅ ๋ฑ์ด ๋ ์ ์์ต๋๋ค. - FIQ : ๊ฐ๋
์ ์ผ๋ก๋ IRQ์ ๊ฑฐ์ ์ ์ฌํ๋ฐ, ๋ค๋ง ๋ณด๋ค ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ์ ๊ณต๋๋ Exception์
๋๋ค. IRQ์ ์์ค๋ ๋๋ถ๋ถ FIQ๋ก๋ ๋งคํ ๋ ์ ์์ต๋๋ค. ์ฆ, ํ์ด๋จธ ์ธํฐ๋ฝํธ๋ฅผ IRQ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋, ํน์ FIQ๋ก ์ฒ๋ฆฌํ ์๋ ์๋ค๋ ์๋ฏธ์
๋๋ค. - Abort : CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ์ธ์คํธ๋ญ์
์ ๊ฐ์ ธ์ค๊ฑฐ๋, ํน์ ์ธ์คํธ๋ญ์
์ ๋์์ํค๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๊ฒฝ์ฐ, ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ธ์ค ํ ์ ์๋ค๋ฉด Abort Exception์ด ๋ฐ์ํฉ๋๋ค. ์์ ์ ์ํ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ ๋์ํ์ฌ Prefetch Abort์ Data Abort๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. - Software Interrupt : ํ๋ก๊ทธ๋จ์์ ์์๋ก ์ธํฐ๋ฝํธ๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ์
๋๋ค. ARM Instruction SWI๊ฐ ์ด์ ํด๋นํฉ๋๋ค. ์ด Exception์ด ๋ฐ์ํ๋ฉด CPU๋์๋ชจ๋๊ฐ Supervisor ๋ชจ๋๋ก ๋ฐ๋๋๋ก ๋์ด ์๊ณ , ๋ณดํต OS์ ์์คํ
Call์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. - Undefined Instruction Trap : ARM7 ์ ์ ์๋์ด ์์ง ์์ ๋ช
๋ น์ด๋ฅผ ๋ง๋ฌ์ ๊ฒฝ์ฐ ๋ฐ์ํ๋ Exception์
๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฝํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๊ด๋ จ๋์ด ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค. ์์์ ์ธ๊ธํ 5์ข
๋ฅ์ Exception์ ๋ช ๊ฐ์ง๋ฅผ ๋ํ์ฌ, ํด๋น ์ฒ๋ฆฌ๋ฅผ ์ํด ARM7์ 0๋ฒ์ง์ ๋ฒกํฐ ํ
์ด๋ธ์ ์ ์งํฉ๋๋ค. ์ฆ, ํด๋น Exception์ด ๋ฐ์ํ๋ฉด ์ ํด์ ธ ์๋ ๋ฒกํฐ ๋ฒ์ง๋ก ์คํ์ ์ฎ๊น๋๋ค. ํด๋น ๋ฒ์ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Address Exception Mode on entry ----------------------------------------------------- 0x0000.0000 Reset Supervisor 0x0000.0004 Undefined Instruction Undefined 0x0000.0008 Software Interrupt Supervisor 0x0000.000C Abort(prefetch) Abort 0x0000.0010 Abort(data) Abort 0x0000.0014 --reserved-- -- 0x0000.0018 IRQ IRQ 0x0000.001C FIQ FIQ
ํ๊ฐ์ง ์ฃผ์ํ ์ ์ 8086์ ๊ฒฝ์ฐ์ ํด๋น ๋ฒกํฐ์ ADDRESS๋ฅผ ๋ฃ์ด ๋๋ฉด, ์ธํฐ๋ฝํธ ๋ฐ์ ์์ ํด๋น ์ฃผ์๋ฅผ ๊ฐ์ ธ๋ค๊ฐ PC์ ๋ฃ์ด์ฃผ๋ ์ผ์ด ๋ฐ์ํ์ง๋ง, ARM7์ ๊ฒฝ์ฐ์ ๊ทธ๋ฅ ํด๋น ๋ฒกํฐ๋ก ์ ํ๋ฅผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด IRQ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋ค์์๊ฐ์ pc(r15)๊ฐ์ 0000.0018 ์ด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํด๋น ๋ฒกํฐ ๋ฒ์ง์๋ ๋จ์ํ ๋ฒ์ง๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ ์ ํ๋ช
๋ น ๊ฐ์ ๊ฒ์ด ๋ค์ด๊ฐ๋๋ค. โ ๋์๋ชจ๋ ์์ Exception๊ณผ ๊ด๋ จ๋์ด CPU์ ๋์๋ชจ๋ ๋ช ๊ฐ์ง๊ฐ ๋ํ๋ ์์ต๋๋ค. ์ ์๋ ๋ช ๋ฒ ๋งํ๋ฏ์ด ARM7์๋ 6๊ฐ์ง์ ๋์ ๋ชจ๋๊ฐ ์์ต๋๋ค. ํด๋น ๋ชจ๋๋ User Mode, FIQ Mode, IRQ Mode, Supervisor Mode, Abort Mode, Undefined Mode ๋ฑ์ 6๊ฐ์ง์
๋๋ค. - ๋์๋ชจ๋์ ๋ฒ์ฉ ๋ ์ง์คํฐ ๋์๋ชจ๋๊ฐ ์ ์๋ ๊ฑธ๊น์? ARM7์ ๊ฐ ๋์๋ชจ๋์ ๋ฐ๋ผ์ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ฅ ํฐ ๊ฒ์ผ๋ก ๋ ์ง์คํฐ๋ฅผ ๋ฆฌ-๋งตํ์ํค๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ข ๋ค๋ฅด๊ฒ ์ค๋ช
ํ๋ฉด, ๊ฐ ๋ชจ๋๋ง๋ค ์ ์ฉ ๋ ์ง์คํฐ๊ฐ ๋ฐ๋ก ์๋ค๊ณ ๋ ํํํ ์ ์๊ฒ ๋๋ฐ์, ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช
ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. CPU์ ๋์๋ชจ๋๋ ๋ณดํต ๋๋ User ๋ชจ๋์
๋๋ค. ์ด ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก r0์์ r15๊น์ง๋ฅผ ์ฌ์ฉํ๊ณ ์๊ฒ ์ฃ . ๊ทธ๋ฌ๋ค ๊ฐ๋ น FIQ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ฉด ๋์ ๋ชจ๋๊ฐ FIQ ๋ชจ๋๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค. ์ด์ ๋์์ r8๋ถํฐ r14๊น์ง์ 7๊ฐ์ ๋ ์ง์คํฐ๋ FIQ ์ ์ฉ ๋ ์ง์คํฐ๋ก ๋ฆฌ-๋งตํ๋ฉ๋๋ค. ์ฆ, User๋ชจ๋์ ๋ ์ง์คํฐ์๋ ๋ณ๊ฐ์๋ ๋ ์ง์คํฐ 7๊ฐ๊ฐ r8๋ถํฐ r14๊น์ง์ ์์น์ ๋ฐฐ์น๋๋ ๊ฒ์ด์ฃ . ๋ฌผ๋ก ๊ธฐ์กด์ User๋ชจ๋์์ ์ฌ์ฉํ๋ r8-r14๊น์ง์ ๋ ์ง์คํฐ์๋ ๋ณ๊ฐ์ ๋ ์ง์คํฐ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ ์ฅ์ ์ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ํํ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๋ฃจํด์ ์์ฑํ ๊ฒฝ์ฐ ์ธํฐ๋ฝํธ ๋ฐ์ ์ ๊ฐ์ฅ๋จผ์ ํ๋ ์ผ์ด ์ฌ์ฉ ์ค์ด๋ ๋ ์ง์คํฐ๋ฅผ ์คํ์ ์ ์ฅํ๊ณ , ๋ ์ฒ๋ฆฌ๋ฃจํด์ด ์ข
๋ฃ๋ ๋๋ ๋ค์ ๋ณต๊ตฌ์ํค๋ ์ผ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ ARM7์์ FIQ์ ๊ฒฝ์ฐ๋ฅผ ์ดํผ๋ฉด, FIQ ์ฒ๋ฆฌ ๋ฃจํด์ ์ฝ๋ฉ ์์๋ r8๋ถํฐ r14๊น์ง๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๊ณ , ๋ ์ ์ฅ๊ณผ ๋ณต๊ตฌ ๊ณผ์ ์ ์๋ตํด๋ ์ข์ต๋๋ค. CPU๋ชจ๋๊ฐ ๋ฐ๋์ ๋ฐ๋ผ ๋ ์ง์คํฐ ์์ฒด๊ฐ ๋ณ๊ฐ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๋์๊ธฐ ๋๋ฌธ์
๋๋ค. ํด๋น ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ----------------------------------------------------- User FIQ Super Abort IRQ Undefined ----------------------------------------------------- r0 . . . . . r1 . . . . . r2 . . . . . r3 . . . . . r4 . . . . . r5 . . . . . r6 . . . . . r7 . . . . . r8 r8_fiq . . . . r9 r9_fiq . . . . r10 r10_fiq . . . . r11 r11_fiq . . . . r12 r12_fiq . . . . r13 r13_fiq r13_svc r13_abt r13_irq r13_und r14 r14_fiq r14_svc r14_abt r14_irq r14_und r15(PC) . . . . . ----------------------------------------------------- ์์ ๊ทธ๋ฆผ์ด ๊ฐ ๋ชจ๋์ ๋ฐ๋ผ ๋ฆฌ-๋งตํ๋๋ ๋ ์ง์คํฐ๋ค์ ๋ํ๋ธ ๊ทธ๋ฆผ์
๋๋ค. FIQ๋ชจ๋์์๋ 7๊ฐ, ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง ๋ชจ๋์์๋ 2๊ฐ์ฉ์ ๋ ์ง์คํฐ๊ฐ ๋ฆฌ-๋งตํ๋ฉ๋๋ค. ์ด ๊ฐ๋
์ด ์ดํดํ๊ธฐ๊ฐ ์ข ์ด๋ ค์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๊ตฐ์. ์๊ฐ์ ๊ฐ์ง๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ์๊ฐํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ๋ค๋ฅธ ๋ชจ๋๋ค์์๋ r13๊ณผ r14๋ฅผ ๋ฐ๋ก ๋์์๊น์? ๊ทธ๊ฒ์ ๊ทธ ๋ ์ง์คํฐ๋ค์ด ํน๋ณํ ๋ชฉ์ ์ ์ํด ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ ์ง์คํฐ์ฐจ์์์ ์ด๋ฒ์๋ IRQ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ช
ํด ๋ณด๊ฒ ์ต๋๋ค. r14๋ Link ๋ ์ง์คํฐ๋ก์จ Call๊ณผ ๊ฐ์ ์ธ์คํธ๋ญ์
์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋ณต๊ท ํ ๋ฒ์ง๋ฅผ ์ ์ฅํด ๋๋ ๋ ์ง์คํฐ์
๋๋ค. ๋ค์์ IRQ ๋ฐ์ ๊ณผ์ ์
๋๋ค. 1) User๋ชจ๋์์ r0-r15๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. 2) IRQ ๋ฐ์ 3) ARM CPU๋ ๋์๋ชจ๋๋ฅผ IRQ ๋ชจ๋๋ก ๋ฐ๊พผ๋ค. ( ์ด๋ r13๊ณผ r14๋ IRQ ์ ์ฉ ๋ ์ง์คํฐ๋ก ๋์น๋๋ค.) 4) ์ด ์์ ์ PC ๊ฐ์ IRQ ์ฒ๋ฆฌ ์ดํ ๋ณต๊ทํ ๋ฒ์ง์ด๋ค. ๊ทธ ๊ฐ์ r14 (์ด๋ฏธ IRQ๋ชจ๋๊ฐ ๋์์ผ๋ฏ๋ก r14_irq) ์ ๋ฃ๋๋ค. 5) ๋ง์ฝ์ r0๋ถํฐ r12๊น์ง๋ฅผ IRQ์ฒ๋ฆฌ ๋ฃจํด์์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ํด๋น ๋ ์ง์คํฐ๋ฅผ sp(r13, ์ญ์ r13_irq)๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ ๋ฃ๋๋ค. ..... ์ฌ๊ธฐ์ 5)๋ฒ ๊ณผ์ ์ ๋ ์ฌ๊ฒจ ๋ณผ ํ์๊ฐ ์์ ๋ฏ ํฉ๋๋ค. r13์ด ์คํ ํฌ์ธํฐ๋ก ์ฌ์ฉ๋จ์ ์ง๋ ๊ฐ์ข์์ ๋ง์๋๋ ธ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ๊ฐ ๋ชจ๋๋ง๋ค r13์ ๋ฐ๋ก ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก, ์คํ์ CPU ๋์๋ชจ๋๋ง๋ค ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆผ์ด๋ผ๋ ๊ทธ๋ ค์ ์ค๋ช
์ ๋๋ฆฌ๋ฉด ์ข์ ๋ฏ ํ๋ฐ, ํ
์คํธ๋ก๋ง ์ค๋ช
ํ๊ธฐ๊ฐ ์ฌ์ด ์ผ์ด ์๋๊ตฐ์. r14๋ ๋ณต๊ท๋ฒ์ง๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ํญ์ ๋ํดํธ๋ก ์ฌ์ฉ๋๋ฏ๋ก ์ฌ๋ถ์ ๋ ์ง์คํฐ๊ฐ ํ์ํ๊ฒ ์ฃ . ๊ทธ๋ฐ ์ด์ ๋ก r13๊ณผ r14๋ฅผ ๊ฐ ๋ชจ๋๋ง๋ค ๋ฐ๋ก ๋ ๊ฒ์
๋๋ค. ํน์ ์ดํด๊ฐ ๋์๋์? FIQ๋ชจ๋๋ ๊ทธ ์ด๋ฆ์์๋ ๋ํ๋ ์๋ฏ์ด 7๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ๋ฐ๋ก ๋์ด์ ๋ ์ง์คํฐ ์ ์ฅ ๋ณต๊ตฌ ๊ณผ์ ์ ๊ฑฐ์ ์๋ตํ ์ ์๋๋ก ํ ๊ฒ์ด์ฃ . ๊ทธ๋ฆฌ๊ณ ์ฐธ๊ณ ๋ก Exception์์ ๋ณต๊ทํ ๊ฒฝ์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก๋ ํด๋น ๋ชจ๋์ r14 ๋ฒ์ง์ ๋ด์ฉ์ r15๋ฒ์ง๋ก ๋ฃ๋๋ฐ, ๊ฐ ๋ชจ๋๋ง๋ค ์กฐ๊ธ์ฉ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋งจ ์ฒ์ ARM7 ์ ์๊ฐํ ๋ ๋ฒ์ฉ ๋ ์ง์คํฐ๊ฐ 31๊ฐ๋ผ๊ณ ๋ง์๋๋ ธ์๋๋ฐ, ์ง๊ธ ๋ค์ ๊ณ์ฐ์ ํด๋ณด๋ฉด, User๋ชจ๋์ ๋ํดํธ 16๊ฐ + FIQ ๋ชจ๋ 7๊ฐ + ๋๋จธ์ง 4๊ฐ์ ๋ชจ๋ *2 =8๊ฐ ํด์ 16+7+2+2+2+2=31 ๊ฐ๋ก ๊ณ์ฐ์ด ๋ฉ๋๋ค. - ๋์ ๋ชจ๋์ PSR(Status ๋ ์ง์คํฐ) ๋ฒ์ฉ๋ ์ง์คํฐ์ ๋น์ทํ๊ฒ PSR ์ญ์ ๋์๋ชจ๋๋ง๋ค ๋ฐ๋ก ๊ด๋ฆฌ๊ฐ ๋ฉ๋๋ค. ํด๋น ๋ ์ง์คํฐ๋ ๋ค์ ๋ชจ๋ ์ด๋ฆ์ ๋ถ์ฌ์ SPSR_fiq, SPSR_svc, SPSR_abt, SPSR_irq, SPSR_und ์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ถ๋ฆ
๋๋ค. ๋ฐ๋ผ์ PSR ๊ฐ์๋ CPSR์ ํฌํจํ์ฌ ์ด 6๊ฐ๊ฐ๋ฉ๋๋ค. SPSR์ CPSR๊ฐ์ ์ ์ฅํด ๋๋ ์ญํ ์ ํฉ๋๋ค. ๋ฒ์ฉ๋ ์ง์คํฐ๊ฐ ์์ ๋งตํ์ด ๋ฐ๋๋๋ฐ ๋ฐํด, ๋ชจ๋๊ฐ ๋ฐ๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด IRQ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ๊ธฐ์กด์ User๋ชจ๋์์ ์ฌ์ฉํ๋ CPSR๊ฐ์ SPSR_irq์ ์ ์ฅ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ IRQ ๋ชจ๋์์๋ CPSR๊ณผ SPSR_irq๋ฅผ ๋ ๋ค ๋ณผ ์ ์์ต๋๋ค. ํ์ IRQ๊ฐ ๋๋๋ ์์ ์์ SPSR_irq์ ๋ด์ฉ์ CPSR๋ก ๋ณต๊ตฌํ๋ฉด ์๋์ CPSR๊ฐ์ด ์ ์ง๋๋ ๊ฒ์ด์ฃ . ๊ฐ๋งํ ์๊ฐํด๋ณด๋ฉด Exception์ด ๋ฐ์ํ์ ๋ ํด๋น ์ฒ๋ฆฌ ๋ฃจํด์๋ ๊ทธ ์๊ฐ์ CPSR๊ฐ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ ์
์ด์ง์. ๋ค๋ง ์์ํ ๋ ํด๋น ๊ฐ์ SPSR์ ์ ์ฅํด ๋์๊ธฐ ๋๋ฌธ์ IRQ ์ฒ๋ฆฌ๋ฃจํด์์ ์์ ์ด ๋๋ค๊ณ ํด๋, ๋ณต๊ทํ ๋ SPSR์์ CPSR๊ฐ์ ๋ค์ ๊ฐ์ ธ์ค๋ฏ๋ก, ์คํ ์ค์ด๋ ํ๊ฒฝ์ ๊ทธ๋๋ก ์ ์ง๊ฐ ๋๋ ๊ฒ์
๋๋ค. ์ด๋ ๋ฏ ARM7์์๋ Exception์ฒ๋ฆฌ์ ์์ด ๋๋๋ก ์คํ ์ฌ์ฉ์ ์ต์ํํ๋ ค๋ ๋
ธ๋ ฅ์ ์ฟ๋ณผ ์ ์์ต๋๋ค. ์ค๋ ๊ฐ์ข ๋ด์ฉ์ ์ข ์ด๋ ค์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ฅธ CPU์๋ ์๋ ๊ฐ๋
(?)์ ์ค๋ช
ํ๋๋ผ ๊ทธ๋ฐ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ์ด์ ๊ธธ์ด์ง๊ธฐ ์ ์ ์ค๋์ ์ด๋ง ์ค์ด๋ ค ํฉ๋๋ค. ๋ค์ ๊ฐ์ข์์๋ Exception๋ถ๋ถ์์ ์ข ๋ ์์์ผ ํ ๋ช ๊ฐ์ง ์ฌํญ์ ๊ฐ๋จํ ์ธ๊ธํ๋๋ก ํ๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [6] : Exception (2) -------------------------------------------------------------------- โ Exception Overview Exception์ ์ฒ์๋ถํฐ ์์ ํ ์ดํด ํ ํ์๊ฐ ์๋ค๊ณ ๋ ์๊ฐํ์ง ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒ๋ค์ด ๊ทธ๋ฌํ๋ฏ ์ฐ์ ์ ์ด๋ฐ ๊ฒ์ด ๋ญ๋ค ๋ผ๊ณ ํ์
๋ง ํ๊ณ ์๋ค๋ฉด, ์ ์ ํ์ํ ๊ฒฝ์ฐ์ ๋ค์ ์์ธํ ์ดํด๋ณด์๋ ์ข์ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ์ทจ์ง์์ Exception์ ๋ฐ๋ผ๋ณธ๋ค๋ฉด, ARM 7์๋ ์ฌ์ฏ ๊ฐ์ง์ CPU ๋์ ๋ชจ๋๋ฅผ ์ง์ํ๋ค๋ ์ฌ์ค๊ณผ, ์ฐจํ MMU ๊ฐ์ ๊ฒ์๋ ๊ทธ ๋์๋ชจ๋๊ฐ ๊ด์ฌํ๋ค๋ ๊ฒ. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ชจ๋๋ง๋ค ์คํ์ ๋ฐ๋ก ์ค์ ํด ์ค๋ค๋ ๊ฒ... ๋ฑ. ๊ผญ ์์์ผ ํ ๊ฒ์ด ์๋ค๋ฉด IRQ๋ FIQ ์ ๋๊ฐ ๋๊ฒ ์ง์. ํํ ๋งํ๋ ์ธํฐ๋ฝํธ ๊ด๋ จ ๋ถ๋ถ์ด ๋ฐ๋ก ์ด ๋ถ๋ถ์
๋๋ค. ์ค์ ์ฝ๋ฉ์ ํ ๊ฒฝ์ฐ์๋ CPU์์ ์ ํด์ ธ ์๋ IRQ, FIQ๊ด๋ จ ๋ ์ง์คํฐ๋ฅผ ์ค์ ํ๊ณ , ํด๋น ๋ฒกํฐ ๋ฒ์ง๋ฅผ ๋ฐ๊พธ๋ ์ ๋... ๊ทธ๋ฆฌ๊ณ ์ด๊ธฐํ ์์ ํด๋นํ๋ ์คํ ๊ณต๊ฐ์ ๋ฐ๋ก ์ก์์ฃผ๋ ์ ๋๋ง ์ ๊ฒฝ์ ์ฐ๋ฉด ๋ฉ๋๋ค. ์๋๋ ๊ฐ Exception ๋ชจ๋๋ง๋ค ์ข
๋ฃ ๋ฐฉ๋ฒ์ด ๊ฐ๊ธฐ ๋ค๋ฆ์ ์ค๋ช
ํด ๋๋ฆฌ๋ ค๊ณ ํ๋๋ฐ, (๊ตฌ์ฒด์ ์ผ๋ก๋ FIQ๋ ์๋น์ค ์ข
๋ฃ ์์ SUBS pc,r14_fiq,#4)๋ผ๋ ๋ช
๋ น์ ์ฌ์ฉํด์ผ ํฉ๋๋ค, ํน์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ์ ๊ฒฝ์ฐ์ MOVS pc,r14_svc ๋ฅผ ์ฌ์ฉํฉ๋๋ค.) ๊ตณ์ด ๊ทธ๋ฐ ๋ด์ฉ๊น์ง ๋ค๋ฃฐ ํ์๋ ์์ ๋ฏ ํ๋ค๋ ์๊ฐ์
๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋ํ๋จผํธ๋ฅผ ์ฐธ์กฐํ๋ฉด ์์ธํ ๋์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก ๊ทธ๋ ๊ฒ ๊ฐ๊ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ณต๊ท ๋ฐฉ๋ฒ์ด ๋ค๋ฅธ ์ด์ ๋ ์ถ์ธกํ์๋ฉด ํ์ดํ๋ผ์ธ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด, ๋ค์ ์์ผ๋ก ๋์๊ฐ์, Exception๊ณผ CPU๋์๋ชจ๋์ ์ฐ๊ด์ฑ์ ๋ํด ๋ง์ ์๊ธฐํด ๋ณด๋ ค ํฉ๋๋ค. CPU๋์ ๋ชจ๋๋ ์ผ๋ฐ์ ์ผ๋ก๋ Exception์ ์ํ์ฌ ๋ฐ๋๊ฒ ๋๊ณ , User๋ชจ๋๊ฐ ์๋๋ผ๋ฉด ํ๋ก๊ทธ๋จ์ ์ํด ๊ฐ์ ๋ก ๋ฐ๊ฟ์๋ ์์ต๋๋ค. ์ ์ ์ดํด๋ณด์๋ CPSR(์คํ
์ดํฐ์ค ๋ ์ง์คํฐ)๊ณผ ๊ด๋ จ๋์ด, CPSR์ ๋ชจ๋๋นํธ ๋ถ๋ถ์ ํ์ฌ CPU์ ๋์๋ชจ๋๋ฅผ ๋ํ๋ด๋ ๋นํธ๋ค์ด ์๋๋ฐ, ํด๋น ๋นํธ๋ฅผ ๋ณ๊ฒฝ์ํด์ผ๋ก์ ํ๋ก๊ทธ๋จ์์ ๋์๋ชจ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค. OS๋ฅผ ํฌํ
ํ ๊ฒฝ์ฐ ๋์๋ชจ๋์ ๊ด๋ จํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๊ธฐ๋ฅ ๋ฑ๋ ๊ตฌํ๋ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ช ๊ฐ์ง ์ฌํญ๋ง ๋ง์๋๋ฆฌ๊ณ ์ค๋ ๊ฐ์ข๋ฅผ ๋ง์น๋ ค ํฉ๋๋ค. ์ฐ์ , Exception๊ฐ์ ์ฐ์ ์์ ๋ฌธ์ ์ธ๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ARM7์ IRQ, FIQ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ํด๋น ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด CPU๋ CPSR์ ์ธํฐ๋ฝํธ ๊ธ์ง ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค. ๋ง์ฝ ๋์ค์ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ๊ณ ์ถ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ํด๋น ํ๋๊ทธ๋ฅผ ํด๋ฆฌ์ด ํด์ฃผ์ด์ผ ํฉ๋๋ค. ๋, ๋์์ ์ฌ๋ฌ ๊ฐ์ Exception ์ด ๋ฐ์ํ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ทธ ์ฐ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1) Reset (๊ฐ์ฅ ๋์ ์ฐ์ ์์) 2) Data abort 3) FIQ 4) IRQ 5) Prefetch abort 6) Undefined Instruction, Software Interrupt Exception ๋ถ๋ถ์ ์ค๋ช
ํ๋ค ๋ณด๋ ๊ฐ์ข๊ฐ ์์นซ ๋๋ฌด ๋ฑ๋ฑํด์ง๋ ๊ฐ์ด ์์ด์ ๊ทธ๋ฅ ์ด์ฏค์์ ๋ง๋ฌด๋ฆฌ๋ฅผ ์ง์ผ๋ ค ํฉ๋๋ค. ๋ค์ ๊ฐ์ข๋ถํฐ๋ ์ข๋ ๊ตฌ์ฒด์ ์ธ ARM7์ ์ธ์คํธ๋ญ์
์ ๋ํด ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๋ช
๋ น์ด๊ฐ ๋ช ๊ฐ ๋์ง ์๊ธฐ ๋๋ฌธ์ 3ํ ์ ๋๋ก ๋ค๋ฃฐ ์๊ฐ์
๋๋ค.. ๊ทธ๋ผ ๋ค์ ๊ฐ์ข์ ๋ต๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [7] : Instruction Set (1) -------------------------------------------------------------------- โ ARM7 ๋ช
๋ น์ด์ ํน์ง AMR7์ 32 Bit ์ฝ์ด์
๋๋ค. ํน์ง์ ์ธ ๊ฒ์ ๋ชจ๋ ๋ช
๋ น์ด๊ฐ 32Bit ํ๋์ Word๋ก ๊ตฌ์ฑ๋๋ค๋ ๊ฒ์
๋๋ค. 8086์ ๊ฒฝ์ฐ์ ๋ช
๋ น์ด์ ๋ฐ๋ผ 1๋ฐ์ดํธ ๋ช
๋ น๋ถํฐ 5๋ฐ์ดํธ๊น์ง ์๋์? ๊ทธ๋ฐ๋ฐ, ARM7์ ๋ชจ๋ ๋ช
๋ น์ด๋ฅผ ํ ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ผ๋จ์ ๋ช
๋ น์ด์ ๊ฐ์๊ฐ ๋ช ์๋๊ณ , ์ฃผ์๋ ์๋์ฃผ์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ์ฌ์ง์ด๋ Immediate ์์ ๊ฐ๋ 32๋นํธ ๊ฐ์ ๊ทธ๋๋ก ๋ฃ์ ์ ์์ต๋๋ค. ๋ฌด์จ ์ด์ผ๊ธฐ์ธ๊ฐ ํ๋ฉด, ๋ง์ฝ r0์ 32๋นํธ ์์๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด, ๋ช๋ช ์์ธ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฏธ๋ฆฌ ๋ฃ์ด๋๊ณ ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ์ฃผ์๋ก ์ฐธ์กฐํด์ ์ป์ด ์์ผ ํ๋ค๋ ๋ป์
๋๋ค. ์ญ์ ์ฅ๋จ์ ์ด ์๊ฒ ์ง๋ง, ์ฅ์ ์ผ๋ก๋ ๋ชจ๋ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ์ฌ์ด์ฆ๋ก ์ฒ๋ฆฌํจ์ ๋ฐ๋ผ ํ์ดํ๋ผ์ธ ๊ตฌํ์ด ์ฉ์ดํ๋ค๋ ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช
๋ น์ด ํด์๊ธฐ๋ฅผ ์ค๊ณํ ๊ฒฝ์ฐ ์์ธ ์ฒ๋ฆฌ๋ถ๋ถ์ด ์์ผ๋ฏ๋ก, ์ฝ๊ณ ๊ณ ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ์ง์. ๋จ์ ์ ์์์๋ ๊ฐ๋จํ ์ธ๊ธํ์ง๋ง ์ฝ๋ฉ ์์ ๋ช๋ช ์ ํ์ด ๋ฐ๋ฅธ๋ค๋ ์ ์
๋๋ค. ์๋ ์ฃผ์ ์ง์ ๋ฐฉ์์, ์ด๋ ์ฌ์ฉํ๋ Offset์ด 24+2=26 ๋นํธ์ด๋ฏ๋ก, ์๋์ฃผ์๋ผ๊ณ ๋ ํ์ง๋ง ๊ฑฐ์ ๋ถํธ์ด ์๊ณ , ๋ค๋ง Immediate ์คํผ๋๋๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ์ ์ข ๋ฒ๊ฑฐ๋กญ๋ค๋ ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ 8๋นํธ์ ํด์๋๋ฅผ ๊ฐ์ง๋ ์คํผ๋๋๋ผ๋ฉด ํ ์๋ ๋ด์์ ์ฒ๋ฆฌ ๊ฐ๋ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ARM ๋ช
๋ น์ด์ ๋ค๋ฅธ ํน์ง์ผ๋ก๋ ๋ชจ๋ ๋ช
๋ น์ด๋ฅผ ์กฐ๊ฑด์ ์ผ๋ก ์คํ์ํฌ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ ์ ๊ฒฝ์ฐ์ ์ด ๋ถ๋ถ์์ ๋๋จํ ๊ฐ๋ช
์ ๋ฐ์๋๋ฐ์ ์๋ฅผ ๋ค์ด, 8086์์๋ jz, jc ์ ๊ฐ์ ์ ํ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ ์๋ฏธ๋ ์ ๋ก ํ๋๊ทธ๊ฐ ์ค์ ๋์ด ์์ผ๋ฉด ์ ํ๋ฅผ ํด๋ผ, ํน์ ์บ๋ฆฌ ํ๋๊ทธ๊ฐ ์ค์ ๋์ด ์์ผ๋ฉด ์ ํ๋ฅผ ํด๋ผ.. ๋ผ๋ ์๋ฏธ์์ ์์ค ๊ฒ์
๋๋ค. ๊ทธ๋ฅ ๋ฌด์กฐ๊ฑด ์ ํ์ ๊ฒฝ์ฐ์ jmp๋ฅผ ์ฐ์ง์. ARM์ ๊ฒฝ์ฐ์ ๊ทธ๋ฐ ํ๋๊ทธ์ ์ฌ์ฉ์ด ์ ํ๋ช
๋ น์ ๊ตญํ๋์ง ์๊ณ , ์์ธ ์์ด ๋ชจ๋ ๋ช
๋ น์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ex) BEQ jmp_1 ; Branch if Z flag set to jmp_1 MOVEQ r0,r1 ; r0 := r1 if Z flag set... ์์ ๊ฒฝ์ฐ๋ฅผ ๋ณด์๋ฉด jmp์ ํด๋นํ๋ B๋ช
๋ น๋ฟ๋ง ์๋๋ผ MOV ์ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์๋ ํ๋๊ทธ ์ต์
์ ์ฌ์ฉํ์์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ์ฅ์ ์ ์ ๊น๋ง ์๊ฐํด ๋ณด์๋ ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด C ์ฐ์ฐ์ ์ค์ ? ์ฐ์ฐ์๋ฅผ ์ปดํ์ผ ํ๋ค๊ณ ์๊ฐํด ๋ด
์๋ค. ex) a=(b==c) ? d:e; (ํธ์์ ๋ณ์๋ฅผ ๋ ์ง์คํฐ๋ก ๋ฐ๊พธ์ด ์๊ฐํ๊ฒ ์ต๋๋ค.) CMPS r2,r3 MOVEQ r1,r4 MOVNE r1,r5 ์์ง ๋ช
๋ น์ด๋ฅผ ์ ๋ค๋ฃจ์์ผ๋ฏ๋ก ๋์ถฉ ์๋ฏธ๋ ์ถ์ธก ํด ๋ณด์ธ์. 8086์ด๋ ๋์ถฉ์ ๋น์ทํ๋๊น ์ด๋ ค์ด ์ผ์ ์๋ ๊ฒ์
๋๋ค. r2์ r3๋ฅผ ๋น๊ตํด์, ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค๋ฉด r1์ r4๋ฅผ ๋ฃ๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด r1์ r5๋ฅผ ๋ฃ๋ ์ฝ๋์
๋๋ค. ๋ง์ฝ ๊ฐ์ ์ผ์ 8086๋ฑ์์ ํ๋ ค๋ฉด ์ ํ ๋ช
๋ น์ด ํ ๊ฐ ์ด์์ ๋ค์ด๊ฐ์ผ ํ๊ฒ ์ฃ . ๋ค์ ํ๋ฒ ๊ฐ์กฐํ์ง๋ง ARM7์์๋ ์ด์ ๊ฐ์ ์กฐ๊ฑด ์ต์
์ ๋ชจ๋ (!) ๋ช
๋ น์ด์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์ค์ ๋ก ๋ชจ๋ OP ์ฝ๋์ ์์ 4๋นํธ๋ ์ด๋ฐ ์กฐ๊ฑด์ต์
์ ๋ํ๋ด๋๋ฐ ์ฌ์ฉ๋๋ ๋นํธ์
๋๋ค. ๊ฐ ์กฐ๊ฑด์ ์ฌ์ฉ๋๋ ์ ๋ฏธ์ฌ ๋ชฉ๋ก์
๋๋ค. 0 EQ Z Set equal 1 NE Z Clear not equal 2 CS C Set unsigned higher or same 3 CC C Clear unsigned lower 4 MI N Set negative 5 PL M Clear positive or zero 6 VS V Set overflow 7 VC V Clear no overflow 8 HI C Set and Z Clear unsigned higher 9 LS C Clear or Z Set unsigned lower or same 10 GE N Set and V Set or greater or equal N Clear and V Clear 11 LT N Set and V Clear or less than N clear and V set 12 GT Z clear and greater than ether N set and V set or N Clear and V clear 13 LE Z Set or less than or equal N set and V clear or N clear and V set 14 AL always 15 NV never ๋ท๋ถ๋ถ์ ๊ฐ์๋ ๋ฌด์ง ๋ณต์กํ์ฃ ? ์ ๋ ์น๋ฉด์ ์ด๊ฑธ ๊ผญ ์ณ์ผ ํ ํ์๊ฐ ์์๊น ์๊ฐ์ ํ์ต๋๋ค๋ง, ์ด์ ์์ํ๋ ๊ฑฐ.. ํ๋ฉด์ ๋ค ์ณค๊ตฐ์. ์์ธํ๊ณ ์ ํํ ๋ด์ฉ์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์๊ธธ ๋ฐ๋ผ๊ณ ์ฌ๊ธฐ์๋ ๊ทธ๋ฅ ์ด๋ฐ ๊ฒ๋ค์ด ์๊ตฌ๋ ํ๋ ์ ๋๋ง ์์๋์ธ์. ๋ค์์ผ๋ก ๋ง์๋๋ฆด ๋ช
๋ น์ด์ ํน์ง์ ๋๋ถ๋ถ์ ๋ช
๋ น์ด์ S๋ผ๋ ์ ๋ฏธ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋๊ทธ ๋ ์ง์คํฐ์ ์ํฅ์ ์ค์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ํนํ ์ฐ์ฐ๋ช
๋ น์ ์ํํ ๋ 'S'๋ฅผ ๋ถ์ด๋ฉด ํด๋น ๊ฒฐ๊ณผ์ ๋ฐ๋ผ์ ํ๋๊ทธ ๊ฐ๋ค์ด ๋ณํ๊ฒ ๋๊ณ , ๋ถ์ด์ง ์์ผ๋ฉด ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ ์ ์์ต๋๋ค. 8086์์๋ ์ฐ์ฐ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํญ์ ํ๋๊ทธ ๊ฐ์ด ์ํฅ์ ๋ฐ์ฃ ? ์ฌ๊ธฐ์๋ ๋ฐ์ง ์๊ฒ ํ ์๋ ์๋ค๋ ์ ์ ๋ง์๋๋ ธ์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ช
๋ น์ด์ ์ธ๋ถ์ฌํญ์ ์ฐธ์กฐํ์ธ์. ๋ช
๋ น์ด์ ํน์ง์ ๋ง์๋๋ฆฌ๋ ์ค์ธ๋ฐ, ์์ผ๋ก๋ ์คํผ๋๋ ์ฌ์ฉ ๋ฑ์ ๋ํด ๋ง์๋๋ฆด ๊ฒ์ด ๋ง์ด ๋จ์์๋ค์... ๊ทธ๋ฐ๋ฐ ๋ถ๋์ ์ ์ ๋์ด๋๊ณ ... ARM์ ์ง๊ธ ๋ง์๋๋ฆฌ๋ ๊ท์น๋ค์ด ๊ฑฐ์ ์์ธ ์์ด ์ ์ฉ๋ฉ๋๋ค. ๋ช
๋ น์ด๊ฐ ๊ฐ๋จํ ๋์ ์ต์
์ด ๋ง๊ฑฐ๋ ์...๊ทธ๋ฆฌ๊ณ ์ง๊ธ ๊ทธ ์ต์
๋ ๊ฐ์ง๋ฅผ ๋ง์๋๋ ธ๊ณ ์. ์ค๋์ ๊ทธ๋ฅ ๋๋ด๊ธฐ๋ ์์ดํ๋๊น ์ ํ ๋ช
๋ น ํ๋๋ง ๋ง์๋๋ฆฌ๊ณ ๋ง์น๊ฒ ์ต๋๋ค. โ Branch and Branch with link (B, BL) +------------------------------------------------------------------+ | Cond | 101 | L | | +------------------------------------------------------------------+ Cond ๋ถ๋ถ์ ์์์ ๋ง์๋๋ฆฐ ์กฐ๊ฑด ์ต์
์
๋๋ค. 101์ B ๋ช
๋ น ์ฝ๋์
๋๋ค. L ๋ถ๋ถ์ 1์ผ ๊ฒฝ์ฐ BL ์ด ๋๋ ๊ฒ์ด๊ณ 0์ด๋ฉด B ๋ช
๋ น์
๋๋ค. B๋ JMP๋ผ๊ณ ์๊ฐํ์๋ฉด ๋๊ณ , BL์ CALL๋ก ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ๋ค๋ง BL์ ๊ฒฝ์ฐ์ PC๊ฐ์ ์คํ์ ๋ฃ๋ ๊ฒ์ด ์๋๋ผ r14(lr)์ ๋ฃ๋๋ค๋ ๊ฒ์ด ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋๋จธ์ง ํ์ 24๋นํธ๊ฐ Offset์ผ๋ก ์ฌ์ฉ๋๋๋ฐ, ARM7์ ๋ชจ๋ ๋ช
๋ น์ด๋ค์ด Word๋จ์์ด๋ฏ๋ก ์ด +/- 32๋ฉ๊ฐ ๋ฐ์ดํธ ์์ญ์ ์ปค๋ฒํฉ๋๋ค. ์ข ์ด์์ ํ ๋๋์
๋๋ค๋ง. ์ค๋์ ์ด๋ง. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [8] : Instruction Set (2) -------------------------------------------------------------------- ์ด๋ฒ ๊ฐ์ข์์๋ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์ ๋ํด ๋ค๋ฃจ๋ ค ํฉ๋๋ค. ํด๋น ๋ช
๋ น์ ARM7์ 50%์ ๋์ ํด๋นํ๋ ๋ช
๋ น์
๋๋ค. ์ค์ ๊ฐ์๋ 16๊ฐ์ด๊ณ , ์ฐ์ฐ๋ช
๋ น๊ณผ ๋น๊ต๋ช
๋ น, ๋นํธ ์ฐ์ฐ๋ช
๋ น, ๋ฐ์ดํฐ ์ ์ก ๋ช
๋ น ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. โ Data Processing Instruction ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. +--------------------------------------------------------------------+ | Cond | 00 | I | OpCode | S | Rn | Rd | Operland 2 | +--------------------------------------------------------------------+ 4 2 1 4 1 4 4 12 ์ ์ ์ธ๊ธํ๋ฏ์ด ๋ชจ๋ ์ธ์คํธ๋ญ์
์ ํฌ๊ธฐ๋ 32 Bit ์
๋๋ค. ์์ ๊ทธ๋ฆผ์์ ์ซ์๋ ํด๋น ํ๋์ ๋นํธ ์๋ฅผ ์๋ฏธํฉ๋๋ค. 1) <Cond> [31:28] 4 Bit ํด๋น ๋ช
๋ น์ ์กฐ๊ฑด ์คํ ํ๋๊ทธ์
๋๋ค. ์ง๋ ๊ฐ์ข์์ ์ธ๊ธํ์๋ ๋ถ๋ถ์ธ๋ฐ, ๋ชจ๋ ๋ช
๋ น์ด์ ํฌํจ๋๋ฏ๋ก ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์๋ ํฌํจ๋ฉ๋๋ค. ํน์๋ ํด์ ๋ค์ ๋ง์๋๋ฆฌ๋๋ฐ, ํด๋น ํ๋๊ทธ๋ฅผ ํตํด ๋ช
๋ น์ ํ์ฌ ํ๋๊ทธ ๋ ์ง์คํฐ(CPSR)์ ์ํ์ ๋ฐ๋ผ ์คํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ ํ๋๊ทธ์
๋๋ค. 2) <I> [25] 1 Bit Operland 2๋ก ์ง์ ๋์ด ์๋ ๋ถ๋ถ์ด Immediate Operand ์ธ์ง ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋นํธ์
๋๋ค. Immediate Operand๋ผ ํจ์, ์๋ฅผ ๋ค์ด 8086์์ MOV AX,01234h ๋ผ๊ณ ํ์ ๊ฒฝ์ฐ, 1234h๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ง์
๋๋ค. ์์ธํ ๋ด์ฉ์ Operland2๋ฅผ ์ค๋ช
ํ๋ฉด์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. 3) <OpCode> [24:21] 4 Bit ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น ์ค ์ด๋ค ๋ช
๋ น์ธ์ง๋ฅผ ๋ํ๋ด๋ ํ๋์
๋๋ค. ํด๋น ํ๋์ ๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. <OpCode> Instruction Description ----------------------------------------------------- 0000 AND Rd:=Op1 AND Op2 0001 EOR Rd:=Op1 XOR Op2 0010 SUB Rd:=Op1 - Op2 0011 RSB Rd:=Op2 - Op1 0100 ADD Rd:=Op1 + Op2 0101 ADC Rd:=Op1 + Op2 + C 0110 SBC Rd:=Op1 - Op2 + C - 1 0111 RSC Rd:=Op2 - Op1 + C - 1 1000 TST Op1 AND Op2 -> CPSR 1001 TEQ Op1 XOR Op2 -> CPSR 1010 CMP Op1 - Op2 -> CPSR 1011 CMN Op1 + Op2 -> CPSR 1100 ORR Rd:=Op1 OR Op2 1101 MOV Rd:=Op2 1110 BIC Rd:=Op1 AND (NOT Op2) 1111 MVN Rd:=NOT Op2 ๋ช
๋ น์ด๋ค์ ๊ฐ๋จํ ์ค๋ช
๋ง์ผ๋ก๋ ์ด๋ ์ ๋๋ ์ดํดํ ์ ์์ผ๋ฆฌ๋ผ ์๊ฐํฉ๋๋ค. ๊ฐ๊ฐ์ ๋ช
๋ น์ ๋ํด์๋ ์์ธํ ๋ค๋ฃจ์ง ์๋๋ก ํ๊ฒ ์ต๋๋ค. ๋์ค์ ์์ ๋ฅผ ๋ณด์๊ณ ์ดํดํ ์ ๋๋ผ๋ฉด ์กฑํ๋ค๊ณ ์๊ฐํฉ๋๋ค. 4) <S> [20] 1 Bit S ๋นํธ๊ฐ 1์ธ ๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์ ๊ฒฐ๊ณผ๊ฐ CPSR(ํ๋๊ทธ๋ ์ง์คํฐ)์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฆ, 0์ธ ๊ฒฝ์ฐ์๋ CPSR์ ๋ณํ์ง ์์ต๋๋ค. 5) <Rn> [19:16] 4 Bit ARM ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์ ๊ทธ ๊ฒฐ๊ณผ์ ์ฒซ ๋ฒ์งธ ์คํผ๋๋๋ ํญ์ ๋ ์ง์คํฐ๋ก ์ง์ ํด์ผ ํฉ๋๋ค. Rn์ ์ฒซ ๋ฒ์งธ ์คํผ๋๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ผ๋ก ์์์ Op1์ผ๋ก ํ๊ธฐํ ๊ฒ์ ํด๋นํฉ๋๋ค. ARM์์ ํ๋ฒ์ ๋ณผ ์ ์๋ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ sp, lr, pc ๋ฑ์ ํฌํจํด์ r0์์ r15๊น์ง๋ผ๊ณ ๋ง์ ๋๋ ธ์ต๋๋ค. ์ฆ, 4Bit๋ฅผ ํตํด ๋ ์ง์คํฐ๋ฅผ ๋ํ๋ด๊ฒ ๋ฉ๋๋ค. ํด๋น ํ๋๋ ๋ช
๋ น์ ๋ฐ๋ผ ์ฌ์ฉ๋์ง ์๊ธฐ๋ ํฉ๋๋ค. MOV๋ MVN๋ฑ์ด ์ด์ ํด๋นํฉ๋๋ค. 6) <Rd> [15:12] 4 Bit ์คํผ๋ ์ด์
์ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋ ๋ ์ง์คํฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ญ์ ๋ ์ง์คํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก 4๋นํธ๋ฅผ ์ฌ์ฉํ๊ณ ๋ชจ๋ ๋ช
๋ น์์ ๋ํดํธ๋ก ์ฌ์ฉ๋๋ ํ๋์
๋๋ค. ๋ง์๋๋ ธ๋ฏ์ด ARM์ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์ ๊ฒฐ๊ณผ๋ ํญ์ ๋ ์ง์คํฐ๋ก ๋ค์ด๊ฐ๋๋ค. 7) Operand 2 [11:0] 12 Bit ๋๋์ด ์ค๋์ ๊ฐ์ฅ ํ๋ํ ์ฐ์ธ Operand 2 ํ๋๊น์ง ์๊ตฐ์. ์ค๋ช
๋๋ ค์ผ ํ ๋ถ๋ถ์ด ์ข ๋ง๊ฑฐ๋ ์. ์ด๋ป๊ฒ ์ค๋ช
์ ๋๋ ค์ผ ํ ์ง, ๋ง๋งํ๊ธด ํ์ง๋ง, ์ฉ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช
ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. โ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์ Operand 2 ํ๋ ์คํผ๋๋ 2์ ์๋ฏธ ์์ฒด๋ ๋ณ๊ฒ ์๋๋๋ค. ์๋ง๋ ๋ค๋ค ์์๊ฒ ์ง๋ง, ALU์ ์ฐ์ฐ๋ช
๋ น์ ๋ด๋ฆด ๊ฒฝ์ฐ ํ ์ชฝ ์
๋ ฅ์ ์คํผ๋๋ 1, ๋ค๋ฅธ ์ชฝ์ ์คํผ๋๋ 2 ๊ทธ๋ฆฌ๊ณ , ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ณ ... ์์ ์ค๋ช
ํ ๋ด์ฉ์ ์๊ฑฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํํ ํ ์ ์๊ฒ ์ฃ ?
Op1(Rn) Operand 2 -------------- --------- | | / / | | / / | | / / | / | ALU / | / | / ---------------- Rd ์๋ฅผ ๋ค์ด AND r1,r2,r3๋ผ๋ ๋ช
๋ น์์ Rd = r1 ์ด๊ณ Rn=r2 ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ r3๊ฐ Operand2์ ํด๋นํ๋ ๋ถ๋ถ์ด ๋๊ฒ ์ฃ . ์๋ฏธ๋ r1=r2 & r3 ๋ผ๋ ์๋ฏธ์
๋๋ค. ์ฌ๊ธฐ์ ์ค๋ช
ํ๊ณ ์ ํ๋ ARM7์ ๋ฐ์ดํฐ ํ๋ก์ธ์ฑ ๋ช
๋ น์ Operand2์ ํ์
์ ๋ ๊ฐ์ง ์ข
๋ฅ๊ฐ ์์ต๋๋ค. <I> ํ๋์ ๋ด์ฉ์ ๋ฐ๋ผ ๊ตฌ๋ถ์ด ๋๋๋ฐ, Immediate Operand ํน์ ๋ ์ง์คํฐ Operand์
๋๋ค. 1) Register Operand <I> ํ๋๊ฐ 0์ผ ๊ฒฝ์ฐ์ Op2๊ฐ ๋ ์ง์คํฐ์์ ์๋ฏธํฉ๋๋ค. ๋ ์ง์คํฐ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด์๋ ์์๋ค์ํผ 4๋นํธ๋ง ์์ผ๋ฉด ๋์ฃ ? ๊ทธ๋ฐ๋ฐ Op2๋ฅผ ์ํ ๋นํธ ์๋ ์ด 12 ๋นํธ์
๋๋ค. ๋จ๋๊ตฐ์. ๊ตฌ์ฒด์ ์ผ๋ก ๋ ์ง์คํฐ ์คํผ๋๋2์ ํ์์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. +----------------------------------------------+ | Shift [11:4] | Rm [3:0] | +----------------------------------------------+ ์์ ๊ทธ๋ฆผ์ ๋ณด์๋ฉด Rm์ด๋ผ๊ณ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๋ 4๋นํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด Shift ๋ถ๋ถ์ ๋ญ๊น์? ๊ฐ์ข์ ์๋ถ๋ถ์์ ์ธ๊ธํ๋์? ๋ฌด์จ Shift๊ฐ ALU์ ํ์ชฝ์ ๋ฌ๋ ค ์๋ค๊ณ . ๊ฒฐ๋ก ์ ์ผ๋ก๋ ๋ ์ง์คํฐ๋ฅผ ALU๋ก ๊ทธ๋ฅ ์ง์ด๋ฃ๋ ๊ฒ์ด ์๋๋ผ Shifter๋ฅผ ํตํด์ ๋ฃ์ด์ฃผ๋๋ก ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์, Shift๋ผ๋ ํ๋๋ (8๋นํธ์ฃ ?) ๊ทธ๋ฐ ์ญํ ์ ํด์ฃผ๋ ๊ฒ์ด๊ฒ ๊ตฐ์. ๊ทธ๋ผ ์ 8๋นํธ์ผ๊น์? ์ฌ๊ธฐ์ ๋ค์ ํ๋ฒ Shift๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ๊ทธ์ ์ Shift ํ๋์๋ Shift ํ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ, ์ฒซ ์งธ๋ Shift ํ๋ ์์ ๊ทธ ํ์๋ฅผ ํฌํจ์ํค๋ ๋ฐฉ๋ฒ์ด๊ณ , ๋ ๋ฒ ์งธ๋ Shift ํ์๊ฐ ๋ค์ด์๋ ๋ ์ง์คํฐ๋ฅผ Shift ํ๋ ์์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ๊ฒฝ์ฐ์ ์๊ฐ ์๊พธ ๋์ด๊ฐ๋๊ตฐ์. ํด๋น ํ์
๋ ๊ฐ์ง๋ Shift ํ๋์ ์ตํ์ ๋นํธ์ธ 4๋ฒ ๋นํธ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ๋ค์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค. +-------------------+ +-------------------+ | count |type | 0 | | Rs | 0 |type | 1 | +-------------------+ +-------------------+ 5 2 1 4 1 2 1 ์ตํ์ ๋นํธ์ ๊ฐ์ด 0์ด๋ 1์ด๋์ ๋ฐ๋ผ ๋ ๊ฐ์ง๋ก ๊ตฌ๋ถ์ด ๋์์ต๋๋ค. ์ผ์ชฝ์ ๊ฒฝ์ฐ๊ฐ ์ง์ Shift ํ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, count ๋ถ๋ถ์ด ์ด 5 ๋นํธ๋ก์ ๊ทธ ๊ฐ์ ์๋ฏธํฉ๋๋ค. ARM7์ ๋ ์ง์คํฐ๋ 32๋นํธ์ด๋ฏ๋ก 5๋นํธ๋ ์์ด์ผ Shift ํ์๋ฅผ ํํํ ์ ์๊ฒ ์ง์. ๊ทธ๋ฌ๋ฉด Type์ ๋ญ๊น์? 2๋นํธ์ธ Type์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 00 : logical left (LSL) 01 : logical right (LSR) 10 : arithmetic right (ASR) 11 : rotate right (ROR) ๊ทธ๋ ๊ตฐ์. ๋จ์ํ Shift๋ผ๊ณ ๋ง์๋๋ ธ์ง๋ง ์ค์ ๋ก๋ ์ข, ์ฐ, ๋ถํธ์ ์ฌ๋ถ์ Rotate๊น์ง ํ์์ ์ง์ ํ ์๊ฐ ์์ต๋๋ค. (๋ฌด์ง ๋ณต์กํด์ง๋ ๋ฏํ ๋๋์
๋๋ค.^^) ์ค๋ฅธ์ชฝ์ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๋ ๋ฐฉ์์, 1๋นํธ๊ฐ ๋จ์์ 0์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ๋ง ์ ์ธํ๊ณ ๋ ๋ณ ๋ฌธ์ ๊ฐ ์๊ฒ ์ฃ ? ์๋๋ ์ฌ๊ธฐ์ ์ฌํํธ ๋ฐฉ์ 4๊ฐ์ง์ ๋ํ ์ค๋ช
์ด ๋ค๋ฅผ ์ด์ด์ผ ํ๊ฒ ์ง๋ง. ์ด๋ฌ๋ค ๋ณด๋ฉด ํ๋ ๋๋ ์์ ๊ฒ ๊ฐ๋ค์. 2) Immediate Operand ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ๋ ค๋ค ์๊ฐํ๋ Immediate Operand๋ฅผ ์ค๋ช
์ํ๊ตฐ์. ์ฌ๊ธฐ๊น์ง๋ ํด์ผํ ๊ฒ ๊ฐ์์. ๋ ์ง์คํฐ ์คํผ๋๋์ ๊ฒฝ์ฐ ์ด 12 ๋นํธ ์ค์์ 4๋นํธ๋ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํ๊ณ , ๋๋จธ์ง 8๋นํธ๋ ํด๋น ๋ ์ง์คํฐ ๊ฐ์ Shiftํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋๋ก ๋์ด ์์์ต๋๋ค. Immediate ์คํผ๋๋๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. 32๋นํธ ๋ ์ง์คํฐ์ ๊ฐ์ ์จ๋ฃ๊ณ ์ถ์๋ฐ ๊ณต๊ฐ์ 12๋นํธ ๋ฐ์๋ ์๋ค๋ ๊ฒ์ด์ง์. 8086๋ฑ์์๋ ๊ทธ๋ฅ ์ฌ๋ฌ ๋ฐ์ดํธ๋ก ๋ช
๋ น์ ์ฒ๋ฆฌํ์์ผ๋ ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์์์ง๋ง, ARM์์๋ ์ด๊ฒ ๋๋ฌธ์ ๋ชจ๋ ๋ช
๋ น์ด 32๋นํธ๋ผ๋ ๊ท์น์ ๊นฐ ์๋ ์์๊ฒ ์ง์. ๋ค์์ ๊ตฌ์ฒด์ ์ธ ํํ์
๋๋ค. +----------------------------------------------------------------+ | Rotate [11:8] | Imm [7:0] | +----------------------------------------------------------------+ ์ด์ ๊ณผ ๋น์ทํ ๋ชจ์์ด๊ตฐ์. ์ด๋ฒ์ Rotate ํ๋(4๋นํธ)๊ฐ ์๊ณ , ๋ 8๋นํธ์ Immํ๋๊ฐ ์์ต๋๋ค. Imm์ ๋ง ๊ทธ๋๋ก Immediate Value๋ฅผ ๋ฃ๋ ๊ณต๊ฐ์
๋๋ค. ์ด ๊ณต๊ฐ์ด 8๋นํธ๋ผ์, ๊ฒฐ๊ตญ ARM7์์ ์ด๋ค ์์ ๊ฐ์ ๋ ์ง์คํฐ๋ก ์ ์กํ๊ฑฐ๋ ํ ๊ฒฝ์ฐ 8๋นํธ๊น์ง๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ด ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด Rotate ํ๋์ ํ๋ ์ญํ ์ ๋ฌด์์ผ๊น์? ์ข ๋ณต์กํ๋ฐ์... ARM7๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์จ ์์ต๋๋ค. "Immediate Operand rotate ํ๋๋ ๋ถํธ ์๋ 4๋นํธ ์ ์๋ก์ 8๋นํธ Immediate ๊ฐ์ Shift ์คํผ๋ ์ด์
์ ํ ์ ์๋๋ก ์ฌ์ฉ๋๋ ๊ฐ์ด๋ค. rotateํ๋ *2 ๊ฐ๋งํผ 8Bit Immediate Value ๊ฐ์ Right Rotate ์ํจ๋ค. ๊ฒฐ๊ตญ 8๋นํธ ๊ฐ์ 32๋นํธ๋ก ํ์ฅ์ํค๋ ์ญํ ์ ํ๋ฉฐ ์ด๋ฅผ ํตํด ์์ฃผ ์ฌ์ฉ๋๋ ๋ง์ ์์๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํ๋ค." 8๋นํธ์ ๊ฐ์ด ALU๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ Shifter๋ก ๋ค์ด๊ฐ๋ฉด, ์ด๋ฏธ 32๋นํธ๋ก ํ์ฅ์ด ๋ฉ๋๋ค. ์ดํ ๊ทธ ๊ฐ์ ๊ทธ๋ฅ ์ฐ๋ฉด 8๋นํธ ์์ญ๋ง ํํํ ์ ์์ง๋ง Rotateํ๋ ๊ฐ์ * 2 ํ๋งํผ Rotate Right ์ํจ๋ค ๊ทธ๋ฌ์ผ๋, ์ด๋ค ๋ณํ๊ฐ ์๊ธฐ๊ฒ ์ฃ ? ์ค๋ ๋ถ๋์ด ์ข ๋ง์๋ค์... ์ฐจ๊ทผ์ฐจ๊ทผ... ๋ด์ ๋ ๋ง์๋๋ฆฌ์ฃ .. ๋ญ. ๋ช ๊ฐ์ง ์๋ฅผ ๋ค์ด ๋ณด์ด๋ฉด์. ์ค๋ ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊น ํฉ๋๋ค. ADDEQ r2,r4,r5 : ์ ๋ก ํ๋๊ทธ๊ฐ ์ค์ ๋์ด ์๋ค๋ฉด r2=r4+r5 SUBS r4,r5,r7,LSR r2 : r4=r5-(r7>>r2) & effect CPSR -------------------------------------------------------------------- ARM7 ๊ฐ์ข [9] : Instruction Set (3) -------------------------------------------------------------------- ์ง๋๋ฒ ๊ฐ์ข๋ฅผ ์ฐ๊ณ ๋์ ์ด๊ฒ์ ๊ฒ ์๊ฐ์ ํด๋ดค๋๋ฐ, ๋ด์ฉ์ด ์ข ์ด๋ ต์ง ์์๋ ์ถ๋ค์. ๋ช
๋ น ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์ ๊ทผํ๋ ๋ฐฉ์์ ๋์งํธ ์ชฝ์ ๊ธฐ์ด ์ง์๊ณผ ์ด์
๋ธ๋ฆฌ์ ๋ํ ๋ณดํธ์ ์ธ ์ง์์ ๊ฐ๊ณ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด์ด์, ํน ๊ทธ๋ฐ ๊ธฐ๋ณธ์ง์์ด ์์ผ์ ๋ถ๋ค์๊ฒ๋ ๋ฑ๋ฑํ๊ณ ์ด๋ ต๊ฒ ๋๊ปด์ก์์ง๋ ๋ชจ๋ฅธ๋ค๋ ์๊ฐ์ ํผ์(?) ํ์ต๋๋ค. ๊ฐ์ข์ ๋ํ ํผ๋๋ฐฑ์ด ์์ด์. ๊ทธ๋ฅ ๋๋ฆ๋๋ก ์๊ฐํ๊ณ ์ฐ๊ณ ์๋๋ฐ์. ์ด๋ด ๊ฒฝ์ฐ์ ์ข ์ด๋ ต๋์ง. ๋ฐฉํฅ์ด ํ๋ฆฐ ๊ฒ ๊ฐ๋ค ๋ผ๋ ์์ ์๊ฒฌ์ ๋ค์ ์ ์๋ค๋ฉด ๊ฐ์ข์ ๋ฐฉํฅ์ ์ ํ๋๋ฐ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค. ๊ทธ๊ฐ ๊ฐ์ข๋ฅผ ๋ณด์๊ณ ARM์ ๊ดํ ๋ช ๊ฐ์ง ์ง๋ฌธ๋ค์ ์ฃผ์ ๋ถ๋ค์ด ๊ณ์ ๋ฐ์. ๋ ์ ์์ผ๋ฉด ๋ต๋ณ์ ํด๋๋ฆฌ๋ ค๊ณ ๋
ธ๋ ฅ์ค์ด๊ณ , ๋ ๊ทธ๋ ๊ฒ ํจ์ผ๋ก์จ ๋ณด๋๋ ๋๋ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ email ์ฃผ์๋ zartoven@secsm.org์
๋๋ค. ๊ฐ์ข์ ๊ด๋ จ๋ ์๊ฒฌ์ด๋ ์ง๋ฌธ์ด ์์ผ์ ๋ถ๋ค์ ํด๋น ์ฃผ์๋ก ์ง๋ฌธ์ ์ฃผ์ธ์. ์ ๊ฐ ์ด๋ค ์ฌ๋์ธ์ง์ ๋ํด์๋ ๋ง์์ ๋ชป ๋๋ ธ๋๋ฐ, ๋ชจ ์ ์ํ์ฌ์์ RTOS ์
๋ฌด๋ฅผ ๋ด๋นํ๊ณ ์์ต๋๋ค. ์์ง๊น์ง๋ ์ฃผ๋ก pSOS ๊ด๋ จ์
๋ฌด๋ฅผ ํ๊ณ ์๊ณ ์. ์ฒ์์๋ pSOS๊ด๋ จ ๊ฐ์ข๋ฅผ ์ด์ํด ๋ณผ๊น ์๊ฐ๋ ํด ๋ดค์ง๋ง, ๊ณผ์ฐ ์ผ๋ง๋ ๋ง์ ๋ถ๋ค์ด pSOS๋ฅผ ์ฌ์ฉ ํ์ค์ง ์๋ฌธ์ด ๋ค์ด์ ํฌ๊ธฐํ์ต๋๋ค. ๊ด๋ จํด์ ์ ๊ฐ ์๋ ค๋๋ฆด ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ํ๋ ๋ด์์ ์ต๋ํ ๋
ธ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค. ์ค๋์ ์ํ๋ ์ฌ์ค์ ๊ธธ๊ฒ ๋์ด๋์๊ตฐ์. ์๋ฌด๋๋ ์ง๋ ๊ฐ์ข์ ๋ค๋ฃจ์๋ ๋ด์ฉ์ด ์ข ๋ถ์คํ๋ ๊ฒ ๊ฐ์์, ์ค๋์ ์ข ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋ช
๋ น์ ๋ํ ๋ด์ฉ์ ๋ค๋ฃจ๋ ค๊ณ ํฉ๋๋ค. ์, ๊ทธ๋ผ ์์ํ๊ฒ ์ต๋๋ค. ์ค๋ ๋ค๋ฃฐ ๋ด์ฉ์ ์ฃผ๋ก "The ARM RISC Chip. A Programmer's Guide"๋ผ๋ ์ฑ
์ ๋ด์ฉ์ ์์ฃผ๋ก ํ๊ฒ ์ต๋๋ค. 1) MOV{cond}{S} Rd,Op2 Assembler์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์
๋๋ค. ํด๋น ๋ช
๋ น์ 8086์์์ MOV, Z80์ด๋ 196์์์ LD ๋ช
๋ น๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ๋ค๋ง ์ฐจ์ด๋ผ๋ฉด ARM7์์์ MOV๋ ๊ทธ Target์ด ๋๋ ๋ถ๋ถ์ด ํญ์ ๋ ์ง์คํฐ๋ผ๋ ์ ์
๋๋ค. ์๋ฅผ ๋ค์ด 8086์์๋ MOV AX,[BX] ์ ํํ์ MOV AX, BX์ ๊ฐ์ ๋ช
๋ น์ ํํ๋ฅผ ๊ฐ์ MOV๋ช
๋ น์ ํตํด ํด๊ฒฐํฉ๋๋ค๋ง, ARM์์์ MOV๋ ํ์์ ๊ฒ๋ง์ ์๋ฏธํฉ๋๋ค. ์ฆ, ๋ ์ง์คํฐ๋ Immediate ๊ฐ ๊ฐ์ ๊ฒ๋ค์ ๋ ์ง์คํฐ์ ๋ฃ๋ ๋ช
๋ น์
๋๋ค. ์ ์์ ๊ฒฝ์ฐ์ ๊ฐ์ด ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ก์ธ์คํ๋ ๋ช
๋ น์ ๋ฐ๋ก ์๊ณ , ๋ถ๋ฅ ์์ฒด๋ฅผ ๋ค๋ฅด๊ฒ ํฉ๋๋ค. ์ ๋ชฉ์ ์จ๋์ ๊ฒ์ MOV๋ช
๋ น์ ํ์์ธ๋ฐ์. {cond}๋ถ๋ถ์ ์ง๋๋ฒ ๋ง์๋๋ ธ๋ ์คํ ์กฐ๊ฑด์ ์ ํํ๋ ์ต์
์
๋๋ค. ARM7์์๋ ๋ชจ๋ ๋ช
๋ น์ด์ ํด๋น ์ต์
์ ์ ์ฉ์ํฌ ์ ์๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ EQ, NE, ๋ฑ๋ฑ์ 2์ ์ง๋ฆฌ ์ ๋ฏธ์ฌ ํํ์ด๊ณ , ํด๋น ์กฐ๊ฑด์ ๋ง๋๋ก ํ๋๊ทธ ๋ ์ง์คํฐ๊ฐ ์ค์ ์ด ๋์ด ์์ด์ผ MOV๋ช
๋ น์ด ์ํ๋ฉ๋๋ค. {S}์ต์
์ ํด๋น ๋ช
๋ น์ ๊ฒฐ๊ณผ๊ฐ ํ๋๊ทธ ๋ ์ง์คํฐ์ ์ํฅ์ ๋ฏธ์น ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์ต์
์
๋๋ค. ARM์์์ MOV๋ Data Processing ๋ช
๋ น์ผ๋ก ๋ถ๋ฅ๋์ด Rd์ ๋ค์ด๊ฐ๋ ๊ฐ์ ๋ฐ๋ผ ํ๋๊ทธ ๋ ์ง์คํฐ๊ฐ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. ํ์ง๋ง, ํน๋ณํ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ข ์ด๋ ค์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, Target ๋ ์ง์คํฐ๊ฐ PC์ธ ๊ฒฝ์ฐ S์ต์
์ ์ฌ์ฉํ๋ฉด, Exception๋ชจ๋์์ ๋ณดํต ์ํ๋ก ๋น ์ ธ ๋์ค๋ ์ญํ ์ ํ๊ฒ๋ฉ๋๋ค. ์ง๊ธ ๋ค๋ฃจ๊ธฐ๋ ์ข ๊ทธ๋ ๊ณ ์. ๊ฐ์ข์ ๋ง์ง๋ง์ฏค ํด์ ํ๊บผ๋ฒ์ ๋ค์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ์ง๊ธ์ ๊ทธ๋ฌ๋ ค๋ ํ์๊ธธ ๋ฐ๋๋๋ค. Rd๋ Target์ด ๋๋ ๋ ์ง์คํฐ์
๋๋ค. MOV๋ช
๋ น์ Target์ ํญ์ ๋ ์ง์คํฐ์ด์ด์ผ ํฉ๋๋ค. ๋ฌผ๋ก MOV ๋ฟ๋ง์ด ์๋๋ผ Data Processing ๋ช
๋ น์ผ๋ก ๋ถ๋ฅ๋ ๋ชจ๋ ๋ช
๋ น๋ค(์ง๋ ๊ฐ์ข์์ ์ธ๊ธํ๋)์ด ๋ค ๊ทธ๋ ์ต๋๋ค. Op2๋ MOV๋ช
๋ น์ ์ํด Rd๋ก ๋ค์ด๊ฐ ๋ด์ฉ์ ๊ฐ๋ฆฌํค๋ ์คํผ๋๋์
๋๋ค. ์ง๋ ๊ฐ์ข์์ ์ด๊ฒ์ ๊ฒ ๋ณต์กํ๊ฒ ๋ง์๋๋ ธ์๋๋ฐ์, Op2 ๋ถ๋ถ์๋ ๋จ์ํ ๋ ์ง์คํฐ๊ฐ ๋ค์ด๊ฐ ์๋ ์๊ณ , ์ด๋ค immediate๊ฐ์ด ๋ค์ด๊ฐ ์๋ ์๊ณ , ๋ Shift ์คํผ๋ ์ด์
์ ๊ฐํ ๋ ์ง์คํฐ ๋ด์ฉ์ด ๋ค์ด๊ฐ ์๋ ์์ต๋๋ค. ์์ ๋ฅผ ํตํด ํ์ธํ์๊ธธ ๋ฐ๋๋๋ค. Ex1) MOV r0,r1 : ๋จ์ํ r0:=r1์ ํ๋ ๋ช
๋ น์
๋๋ค. Ex2) MOV r0,#0 : r0์ ์์ 0์ ๋ฃ๋ ๋ช
๋ น์
๋๋ค. ARM์์๋ 196์์์ ๊ฐ์ด ์์์๋ #์ ๋ถ์ฌ์ ์ฌ์ฉํฉ๋๋ค. ๋ ์ง๋ฒ ํํ์ C์์์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ์ฆ MOV r0,#0x30 ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ํน์ &๋ฅผ ๋ถ์ฌ์ 16์ง์๋ฅผ ๋ํ๋ผ ์๋ ์์ต๋๋ค. Ex3) MOV r0,#0xfc000003 : r0์ ์์ ๊ฐ 0xfc000003 ์ ๋ฃ๋ ๋ช
๋ น์
๋๋ค. ์ง๋ ๊ฐ์ข์์ ๋ง์๋๋ ธ์ง๋ง ํด๋น ๊ฐ์ 8๋นํธ ๊ฐ 0xFF๋ฅผ 32๋นํธ๋ก ํ์ฅํ๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ ๋ฒ Rotate ์ํจ ๊ฐ์
๋๋ค. ๊ทธ๋์ ์๋ฌ๊ฐ ๋์ง ์๋ ๊ฒ์ด์ง์. Ex4) MOV r0,r1,LSL #1 : ์ด ๋ช
๋ น์ r0:= r1 <<1 ์ ์ํํ๋ ๋ช
๋ น์
๋๋ค. LSL์ logical Shift Left๋ฅผ ์๋ฏธํ๋ ํค์๋์ด๊ณ , Op2 ๋ถ๋ถ์ ์์ ๊ฐ์ ํ์์ผ๋ก ์ฌ ์ ์์ต๋๋ค. Ex5) MOV r0,r1,LSR r2 : ์ด ๋ช
๋ น์ r0:=r1 >> r2 ์ ํด๋นํ๋ ๋ช
๋ น์ด๊ณ , LSR์ Logical Shift Right๋ฅผ ์๋ฏธํฉ๋๋ค. Ex6) MOV r0,r0,ASR #24 : ์ด ๋ช
๋ น์ r0:=r0 >> 24 ๋ฅผ ์๋ฏธํฉ๋๋ค. ASR์ Arithmetic Shift Right๋ฅผ ์๋ฏธํ๋ฉฐ LSR๊ณผ์ ์ฐจ์ด๋ ์ต ์์ ๋นํธ๊ฐ 1์ธ ๊ฒฝ์ฐ ์๋ก ๊ณ์ ํด๋น ๋นํธ ๊ฐ์ ์ ์ง์ํจ๋ค๋ ๊ฒ์
๋๋ค. Ex7) MOVS r0,r1,LSR #1 : C(flag) := r1[0] MOVCC r0, #10 : if C=0 then r0:=10 MOVCS r0, #11 : if C=1 then r0:=11 Ex8) MOVS r0,r4 : if r4=0 then r0=0 MOVNE r0,#1 : else r0=1 ์ฒซ ๋ฒ์งธ ๋ช
๋ น์์ r4๊ฐ์ r0๋ก ๋ฃ์ ๋ {S}์ต์
์ ๋ฐ๋ผ์ ํ๋๊ทธ ๋ ์ง์คํฐ ๊ฐ์ด ๋ณํํฉ๋๋ค. ๋ค์ ๋ช
๋ น์์ NE ์กฐ๊ฑด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ฐธ๊ณ ๋ก NE๋ Not Equal, Zํ๋๊ทธ๊ฐ 0์ผ ๊ฒฝ์ฐ์
๋๋ค., r4๊ฐ์ด 0์ด์๋ค๋ฉด NE๋ False๊ฐ ๋์ด ๋ ๋ฒ์งธ ๋ช
๋ น์ ์ํํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก๋ r0์ 0์ด ๋ค์ด๊ฐ ์
์ด์ง์. ๋ง์ฝ r4๊ฐ 0์ด ์๋์๋ค๋ฉด ๋ ๋ฒ์งธ ๋ช
๋ น์ด ์ํ๋์ด์ r0์๋ 1์ด ๋ค์ด๊ฐ๋๋ค. ์ค๋ ๊ฐ์ข๋ ์ด๊ฒ์ผ๋ก ์ ๋ฆฌํ๋ ค ํฉ๋๋ค. ๋ค์์ ๋ต๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [10] : Instruction Set(4) -------------------------------------------------------------------- ์ค๋ ๊ฐ์ข์์๋ Data Processing Instruction์ ๋ํด์ ๊ณ์ ์ด์ด๋๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ๋๋๋ก์ด๋ฉด ์ค๋ ์ด ๋ถ๋ถ์ ๋ค ์ปค๋ฒํ๊ณ ์ถ์ต๋๋ค๋ง ํด๋ด์ผ๊ฒ ์ง์. ์ง๋ ๊ฐ์ข์์ ๋ค๋ฃจ์๋ ๋ด์ฉ ์ค ์คํผ๋๋์ชฝ ๋ถ๋ถ์ ๊ณ์ ๊ฒน์น๋ ๋ด์ฉ์ด๋ฏ๋ก ์๋ฌธ์ด ์๊ธฐ์๋ฉด ์ด์ ๊ฐ์ข๋ก ๋์๊ฐ์ ํ์ธํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค. 1) MVN{cond}{S} Rd,Op2 ํด๋น ๋ช
๋ น์ Rd:=NOT Operand2 ์ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋ช
๋ น์
๋๋ค. ๊ธฐ์กด ์ด์
๋ธ๋ฌ์์๋ ๋ณผ ์ ์์๋ ๋ฏ์ ๋ช
๋ น์ด๋ค์. ๊ธฐ๋ฅ์ ์จ ์๋ฏ์ด MOV์ฒ๋ผ ๊ฐ์ ๋ฃ๊ธฐ๋ ๋ฃ๋๋ฐ NOT๋ฅผ ํด์ ๋ฃ๋ ๋ช
๋ น์
๋๋ค. ์ด๋ฐ ๋ช
๋ น์ด ์ ์๋์ง์ ๋ํด์๋ ํ์คํ ๋ชจ๋ฅด๊ธด ๋ชฐ๋ผ๋, ์๋ง๋ ARM7์์ 8๋นํธResolution Immediate ์คํผ๋๋๋ง ๋ค๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์ธ ๋ฏ ํฉ๋๋ค. ํด๋น ๋ช
๋ น์ผ๋ก ์ด๋ ์ ๋ ๊ธฐ๋ฅ์ ํ์ฅํ๋ค๊ณ ํ ๊น์? ๋ฐ๋ก ์์ ๋ก ๋ค์ด๊ฐ๊ฒ ์ต๋๋ค. Ex1) MVN r0,#0 ; r0 := -1 : ์ฌ์ค MVN์ ์ฉ๋๋ก ์์ ๊ฒฝ์ฐ ๋ฐ์๋ ์ฌ์ฉ๋๊ฑธ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋ง์ฝ MOV r0,#0xFFFFFFFF ์ด๋ ๊ฒ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ๋งค๋ฒ ์ค๋ช
๋๋ฆฌ์ง๋ง ARM7์ ๋ชจ๋ ๋ช
๋ น์ด 32๋นํธ ํ ์๋์ด๊ณ Immediate ์คํผ๋๋์ฒ๋ฆฌ๋ฅผ 8๋นํธ ๊ฐ์ Rotate์ํค๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ธ๋ฐ, MVN์ ์ฌ์ฉํจ์ผ๋ก์ ํด๋น ๊ฐ์ ๋ฃ์ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ถ๋ถ์ MOV์ ๋์ผํ๋ฏ๋ก ๊ทธ๋ค์ง ์ด์๊ฐ ๋ ๊ฒ์ด ์์ ๋ฏ ํ๊ตฐ์. 2) ADD{cond}{S} Rd, Rn, Op2 ADC{cond}{S} Rd, Rn, Op2 ๋ํ๊ธฐ ๋ช
๋ น์
๋๋ค. 8086๊ณผ ํฐ ์ฐจ์ด๋ ์คํผ๋๋๋ฅผ 3๊ฐ ์ง์ ํ๋ค๋ ๊ฒ์
๋๋ค. Rd๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋ ๋ ์ง์คํฐ๋ก, Data Processing ๋ช
๋ น ๋ชจ๋๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ ์ง์คํฐ(Rd)๋ก ๋ค์ด๊ฐ์ผ๋ง ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ Rd๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ ๋ ๋ ์ง์คํฐ์ด๊ณ , ๋๋จธ์ง ๋๊ฐ๊ฐ ์๋ก ๋ํด์ง ์คํผ๋๋์
๋๋ค. ๋๊ฐ์ ์คํผ๋๋ ์ค ํ๋๋ ๋ ํญ์ ๋ ์ง์คํฐ์ฌ์ผ๋ง ํฉ๋๋ค. Op2๋ ๊ฑฐ๋ญ ๋ง์๋๋ฆฌ์ง๋ง Shifted Register ํน์ Rotated Immediate Value ์ค ํ๋์
๋๋ค. ADD์ ADC๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋๋ก ๋ํ๊ธฐ, ๋ํ๋๋ฐ ์บ๋ฆฌํ๋๊ทธ๋ ๊ฐ์ด ๋ํ๊ธฐ ์ ๋์
๋๋ค. Ex1) ADD r0,r0,#1 ; r0:=r0+1 Ex2) ADD r0,r1,r2 ; r0:=r1+r2 Ex3) ADDS r0,r1,r1, LSL #2 ; r0:=r1*5 : ์์ ๋ช
๋ น์ ๋ณด๋ฉด ARM ๋ช
๋ น์ด์ ๊ฐ๋ ฅํจ์ ์ ์ ์์ฃ ? ์์์ Rd๋ r0, Rn์ r1, Op2 ๋ถ๋ถ์ด r1,LSL #2 ์
๋๋ค. r1๊ฐ ๋ํ๊ธฐ r1์ ๋ ๋ฒ ์ฌํํธ ํ ๊ฐ, ์ฆ r1*4๊ฐ์ด๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก๋ *5๊ฐ ๋๊ฒ ์ง์. S ์ต์
์ด ์ฌ์ฉ๋์์ผ๋ฏ๋ก ํ๋๊ทธ ๋ ์ง์คํฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ทธ๋ฌ๋ฉด? ์์ 1๋ฒ 2๋ฒ ์์ ๋ ์ํํ๋๋ผ๋ ํ๋๊ทธ ๋ ์ง์คํฐ๋ ์ํฅ์ ์๋ฐ๋๋ค๋ ์๋ฏธ์ง์. ์ฌ์ฉํ๊ธฐ์ ๋ฐ๋ผ์ ๊ฐ๋ ฅํ ์ญํ ์ ํ ์ ์์ ๋ฏ ํฉ๋๋ค. Ex4) in C int addints(int a,int b) { int c; c=a+b; return c; } in ARM7 Assembly ADD r0,r0,r1 ; r0:=r0+r1 MOV pc,lr ; return ์ฌ์ค ์ธ์ ์ ๋ฌ์ ๊ด๋ จ๋ ์ฝ๋๊ฐ ๋ ๋ค์ด๊ฐ์ง๋ง, ์ฝ์ด๋ถ๋ถ์ ๋๊ฐ ์์ ๊ฐ์ต๋๋ค. 3) SUB{cond}{S} Rd, Rn, Op2 SBC{cond}{S} Rd, Rn, Op2 RSB{cond}{S} Rd, Rn, Op2 RSC{cond}{S} Rd, Rn, Op2 ์์ ๋ค ๋ช
๋ น์ ๋นผ๊ธฐ ๋ช
๋ น์
๋๋ค. SUB์ SBC๋ ๊ทธ๋ฐ๋ฐ๋ก ์๋ง ํ๋ฐ, R๋ก ์์ํ๋ ๋๊ฐ๊ฐ ๋ ์๋ค์. R์ ๊ฐ์(?) ์ ํผ๊ฐ์๋ฅผ ๋ฐ๊พธ๋ ์ญํ ์ ํฉ๋๋ค. ์ฆ, SUB ๋ช
๋ น์ด Rd=Rn-Op2 ๋ผ๋ฉด RSC๋ Rd=Op2-Rn ์
๋๋ค. ์ด๋ฐ ๋ช
๋ น์ด ์ ํ์ํ ๊น์? ๊ธ์์. ์ฐ์ Op2๊ฐ Rn์ ๋นํด์ ์๋์ ์ผ๋ก ์ ์ฐ์ฑ์ด ์ข๋ ๋ง์์์ผ๊น์? ์ด๋ป๋ ... ๊ฐ๋
์ ์ด๋ ต์ง ์์ต๋๋ค. SBC์ RSC๋ ์บ๋ฆฌํ๋๊ทธ๊ฐ ๊ด๋ จ๋์ด ์๋ ๋ช
๋ น์
๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ช
๋ น ํด์์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ ์๋ค์. SBC Rd, Rn, Op2 = Rd=Rn-Op2+Carry-1 ์๋ง๋ 8086์์์ Carry์๋ ์ข ๋ค๋ฅธ ๋ชจ์์
๋๋ค. ๋บ์
์ ํ์ ๋ ์๋ฆฌ ๋ด๋ฆผ์ด ๋ฐ์์ ํ๋ฉด Carry๊ฐ ํด๋ฆฌ์ด ๋๋ ๊ตฌ์กฐ์ด๊ตฐ์. ์๋ง๋ 2์ ๋ณด์ ์ฐ์ฐ์ ํ๊ธฐ ๋๋ฌธ์ธ ๋ฏ ํฉ๋๋ค. ์ฆ 1์ ๋นผ๊ณ ์ถ์ ๊ฒฝ์ฐ 1์ 2์ ๋ณด์๋ฅผ ์ทจํด ๋ํด์ฃผ์ฃ . ํด๋น ๊ฐ์ FFFFFFFF ์ด๊ณ , ๋์์ด 0์ด ์๋๋ผ๋ฉด ๋ํ๊ธฐ๋ฅผ ํตํด Carry๊ฐ ๋ฐ์ํ๊ฒ ๊ตฐ์. ๊ทผ๋ฐ ์๋ ํ๊ณ ์ ํ๋ ๊ฒ์ด ๋บ์
์ด์์ผ๋๊น... ํผ๊ฐ์๊ฐ 0์ธ ๊ฒฝ์ฐ์ Carry๊ฐ ๋ฐ์ํ์ง ์์๊ณ , ๋๋จธ์ง์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ Carry๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ธฐ๊ณ์ ์ฌ๊ณ ๋ฐฉ์์๋ ๊ทธ๊ฒ ๋ง๋ ๋ด
๋๋ค. ์ด๋ป๋ ์ค์ํ ๊ฒ์ ๋บ์
์ฐ์ฐ์ ํตํด borrow๊ฐ ๋ฐ์ํ๋ค๋ฉด Carry๋ 0์ด๊ณ ๋ฐ์ํ์ง ์๋๋ค๋ฉด Carry๋ 1์ด ๋๋ ๊ฒ์ด์ฃ . ๋ฐ๋ผ์ SBC์ ๊ฐ์ ๋ช
๋ น์์๋ Carry๋ฅผ ์คํ๋ ค ๋ํด์ฃผ๊ณ ๋ค์ 1์ ๋นผ ์ค์ผ๋ก์จ 8086 ๋ฑ์์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ์ป๊ฒ ๋๋๊ตฐ์. Ex) 64Bit ๋บ์
SUBS r4,r0,r2 SBC r5,r1,r3 : ์ด๋ ๊ฒ ํ๋ฉด [r5:r4]=[r1:r0]-[r3:r2]๊ฐ ๋๊ฒ ๊ตฐ์. {S}์ต์
์ ์ฃผ์ํ์๊ธธ ๋ฐ๋๋๋ค. 4) AND{cond}{S} Rd, Rn, Op2 EOR{cond}{S} Rd, Rn, Op2 ORR{cond}{S} Rd, Rn, Op2 : ์ด๋ฒ์๋ Bit์ฐ์ฐ์ ๊ด๋ จ๋ ๋ช
๋ น์ด๋ค์
๋๋ค. AND๋ ๊ทธ๋๋ก AND, EOR์ XOR์ฏค์ผ๋ก, ORR์ OR๋ก ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. B๋ช
๋ น์ ์ ์ธํ๊ณ ๋ ์ฌ๋งํ ๋ช
๋ น์ด๋ ๋ชจ๋ 3๊ธ์์ธ๋ฐ, ๊ทธ๋์ ORR๋ก ํ๊ธฐํ๋ ๋ฏํฉ๋๋ค. ์ญ์ ์คํผ๋๋๋ ๊ฐ์ ์๋ฏธ์
๋๋ค. Ex1) AND r0,r0,#0xFF : r0์ 8๋นํธ๋ง ๋จ๊ธฐ๋ ๋ช
๋ น์
๋๋ค. Ex2) ANDCSS r0,r1,r2,ASR r3 : ๋ง์ฝ ์บ๋ฆฌ ํ๋๊ทธ๊ฐ ์ค์ ๋์ด ์๋ค๋ฉด...(CS) r1 AND (r2>>r3) ์ ๋๋ฅผ ํ๋๋ฐ, ํด๋น ๋ช
๋ น์ ๊ฒฐ๊ณผ๊ฐ ํ๋๊ทธ ๋ ์ง์คํฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ASR๊ณผ LSR์ ์ฐจ์ด๋ ASR์ ๊ฒฝ์ฐ ์ต์์ ๋นํธ๊ฐ 1์ด๋ผ๋ฉด ํด๋น ๋นํธ๋ ๊ณ์ 1๋ก ์ ์ง๋ฅผ ํ๋ ๊ฒ์ด์ฃ . LSR์ด๋ผ๋ฉด ์๋ก ๋ค์ด์ค๋ ๋นํธ๋ ํญ์ 0์
๋๋ค. ์ด๊ฒ์ ์์๋ฅผ 2์ ๋ณด์๋ก ์ฌ์ฉํ๋ ์์คํ
์์ ํ์ํ ๋ฐฉ๋ฒ์
๋๋ค. ์ฐธ ๊ฒฐ๊ณผ๋ r0์ ๋ฃ๋๊ตฐ์. Ex3) EORS r0,r0,r0 : ํด๋น ๋ช
๋ น์ ์ํํ๋ฉด r0๋ 0์ด ๋ ๊ฒ์ด๊ณ , N ํ๋๊ทธ๋ 0์ด ๋๊ณ Zํ๋๊ทธ๋ 1์ด ๋ฉ๋๋ค. Ex4) MOV r0,#0xFF ORR r0,r0,#0xFF00 : r0์ 0xFFFF๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ์
๋๋ค. 5) BIC{cond}{S} Rd, Rn, Op2 : Rd := Rn AND (NOT Op2) ๋ก ์ค๋ช
์ด ๋์ด ์๋ ๋ช
๋ น์
๋๋ค. ๋ณ๋ณ ๋ช
๋ น์ด ๋ค ์๋ค๋ ์๊ฐ์ด ๋๋๊ตฐ์. ANDํ๊ธฐ ์ ์ NOT์ ํ๋ฒ ํด์ ์ฒ๋ฆฌํ๋ ๋ช
๋ น์
๋๋ค. ์๋ฏธ๋ ๋นํธ๋ฅผ ํด๋ฆฌ์ด ํ๋ ๊ฒ์ด๊ณ , Op2์ ์ง์ ํ ๋นํธ๊ฐ 0์ผ๋ก ์ง์์ง๋ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค. Ex) BIC r0,r1,#3 : r0 := r1 and 0xFFFFFFFC ์ ์๋ฏธ์
๋๋ค. 6) CMP{cond} Rn, Op2 CMN{cond} Rn, Op2 : ๋น๊ต ๋ช
๋ น์
๋๋ค. MOV, MVN์ฒ๋ผ ์ธ์๊ฐ 2๊ฐ์ธ๋ฐ์, ์ด๋ฒ์๋ Rd๊ฐ ๋น ์ก์ต๋๋ค. CMP๋ ํํ ๋ณด๋ ๊ทธ CMP์
๋๋ค. Rn์์ Op2๋ฅผ ๋นผ ๋ณด๋ ๋ช
๋ น์ด์ฃ . ์์๋ค์ํผ ๋ ์ง์คํฐ ๊ฐ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ํ๋๊ทธ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ทธ๋ฌ๊ณ ๋ณด๋ {S}์ต์
๋ ์๋ค์. ์ด ๋ช
๋ น๋ค์ ๋ํดํธ๋ก {S}๋ฅผ ์ค ํจ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค. (์ผ์ค์๋ ์ด์
๋ธ๋ฌ๊ฐ ๊ทธ๋ ๊ฒ ํด ์ค๋ค๊ณ ํ๋๋ฐ, ๊ธฐ๊ณ์ด ์ฝ๋๋ก๋ S์ต์
์ ๊บผ๋์ CMP๋ ๊ฐ๋ฅํ์ง ์์๊น ์ถ๋ค์.) CMN์ ์ข ์๋กญ๊ตฐ์. ์ด ๋ช
๋ น์ CMP๊ฐ ๋นผ๊ธฐ๋ฅผ ํ๋๋ฐ ๋ฐํด, ๋ ์คํผ๋๋๋ฅผ ๋ํด ๋ณด๋ ๋ช
๋ น์
๋๋ค. ์ญ์ ์์ํ ๊ฐ๋
์ธ๋ฐ์. ๊ทธ๋ด ํ์๋ ์์๊น์? ์ด๋ป๋ CMP๊ฐ ๋นผ๊ธฐ๋ฅผ ํด๋ณด๋ ๊ฑฐ๋ผ๋ฉด CMN์ ๋ํ๊ธฐ๋ฅผ ํด ๋ณด๋ ๋ช
๋ น์ด๋๋๋ค. Ex1) CMP r2,#23 MOVEQ r2,#45 : ๋ง์ฝ r2๊ฐ 23์ด๋ผ๋ฉด 45๋ฅผ ๋ฃ์ด๋ผ. Ex2) CMP r0,#0 CMPEQ r1,#0 CMPEQ r2,#0 CMPEQ r3,#0 MOVEQ r4,#12 : r0๋ถํฐ r3๊น์ง ๋ชจ๋ 0์ด๋ผ๋ฉด r4์ 12๋ฅผ ๋ฃ๋ ๋ช
๋ น์
๋๋ค. ์ฐธ ์ฌ๋ฏธ์๋ ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. Ex3) CMN r1,r2 MOVEQ r0,#0 MVNNE r0,#1 : r0 = ((r1+r2)==0) ? 0:-1; ์์์ ์กฐ๊ฑด๋ถ ๋ช
๋ น์ ๊ฐ๋ ฅํจ์ ๋๋ ์ ์๋์? ์๋๋ผ๋ฉด ๋ค์์ ํ๋ฒ ๋ณด์์ฃ . in C while (a!=b) { if (a>b) a-=b; else b-=a; } in ASM with no conditional Instruction gcd CMP a,b JZ end JNZ less_than SUB a,a,b JMP gcd less_than SUB b,b,a JMP gcd end ... โป ARM๋ ์๋๊ณ 8086๋ ์๋๊ณ , ๋ช
๋ น์ด๊ฐ ์ด์ํ๊ฒ ๋์๋ค์. ๋์ถฉ ์๋ฏธ๋ง ํ์
ํ์๊ธธ. in ARM7 gcd CMP a,b SUBGT a,a,b SUBLT b,b,a BNE gcd ์ง์ ๋ณด์๊ณ , ์๊ฐ์. 7) TEQ{cond} Rn, Op2 TST{cond} Rn, Op2 : CMP์ ๊ฑฐ์ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๋ช
๋ น์
๋๋ค. ๊ธฐ๋ฅ๋ ๊ฑฐ์ ์ ์ฌํฉ๋๋ค. CMP๊ฐ -, CMN์ด + ๋ผ๋ฉด, TEQ๋ XOR, TST๋ AND ์ฐ์ฐ์ ํตํด ๊ฐ์ ์ผ์ ํฉ๋๋ค. ํ์ง๋ง ํน์ง์ด๋ผ๋ฉด Logical ์ฐ์ฐ์ด ์ผ์ด๋ ๊ฒฝ์ฐ ํ๋๊ทธ ์ค์์ V ํ๋๊ทธ(์ค๋ฒํ๋ก์ฐ ํ๋๊ทธ)๋ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค. ์ด๊ฑธ ์ ์์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Ex1) CMP r0,#31 ; test r0<=31 ? TEQ r0,#127 ; test r0==127 ? MOVLS r0,#'.' ; if either then r0='.' Ex2) TST r1,#3 ; is r1 word aligned? MOVEQ r0,#1 ; r0:=1 if so MOVNE r0,#0 ; else r0:=0
์ง๋๋ฒ์ ๋ค๋ฃจ์๋ MOV ๋ช
๋ น๊น์ง๋ฅผ ํฉ์น๋ฉด ์ด 16๊ฐ์ ๋ช
๋ น์ ์ค๋ช
๋๋ ธ์ต๋๋ค. ์ด๋ก์ ๊ฐ์ฅ ๋น์ค์ด ํฐ(๋ถ๋์ด ๋ง์?) Data Processing ๋ช
๋ น์ ์ค๋ช
์ ๋ง์ณค๊ตฐ์. ์ฐธ๊ณ ๋ก ๋ค๋ฃจ๊ณ ์๋, ํน์ ์์ผ๋ก ๋ค๋ฃฐ ๋ช
๋ น์ ์ข
๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. (1) Branch ๋ช
๋ น (2) Data Processing ๋ช
๋ น (3) PSR Transfer ๋ช
๋ น (4) Multiply ๋ช
๋ น (5) Single Data Transfer ๋ช
๋ น (6) Block Data Transfer ๋ช
๋ น (7) Swap ๋ช
๋ น (8) SWI ๋ช
๋ น ์ด๋ฐ์๋ ์ฝํ๋ก์ธ์ ๊ด๋ จ ๋ช
๋ น์ด ์๊ธฐ๋ ํ์ง๋ง, ๊ทธ ์ ๋๊น์ง๋ ์ข ๋ฌด๋ฆฌ์ธ ๋ฏ ์ถ์ต๋๋ค. ์์ ์จ ๋์ ๊ฒ์ ๋ณด๋ ๋ฌด์ฒ ๋ง์ ๋ณด์ด๋๋ฐ์, ๋ง์ ์ดํด๋ณด๋ฉด ๋ถ๋ฅ ๋น 1๊ฐ~2๊ฐ์ ๋์ ๋ช
๋ น๋ฐ์๋ ์์ต๋๋ค. ์, ๊ทธ๋ผ ์ค๋ ๊ฐ์ข๋ ์ฌ๊ธฐ์์ ์ค์ด๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [11] : Instruction Set (5) -------------------------------------------------------------------- โ PSR Transfer ๋ช
๋ น ๊ธฐ์ตํ์ค์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง PSR์ด๋ Program Status Register๋ก์ ํ๋๊ทธ ๋นํธ์ Control ๋นํธ๋ค๋ก ๊ตฌ์ฑ๋ ๋ ์ง์คํฐ์
๋๋ค. ํด๋น ๋ ์ง์คํฐ์ ๊ฐ์ ์ผ๋ฐ ๋ ์ง์คํฐ๋ก ์ฎ๊ธฐ๊ฑฐ๋ ๋ฐ๋์ ์ผ์ ํ๋ ๋ช
๋ น์ด PSR Transfer ๋ช
๋ น์
๋๋ค. PSR์ 32๋นํธ ๋ ์ง์คํฐ์
๋๋ค. CPSR๊ณผ SPSR 5๊ฐ๋ฅผ ํฉ์ณ์ ์ด 6๊ฐ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ SPSR ์ Exception๋ชจ๋์ ๋ฐ๋ผ ์ฌ๋ถ์ผ๋ก ์กด์ฌํ๋ PSR์ ๋งํฉ๋๋ค. ์คํ ๋ชจ๋์ ๋ฐ๋ผ์ User๊ฐ ์ ๊ทผํ ์ ์๋ PSR์ ํ ๊ฐ, ํน์ 2๊ฐ๋ก ์ ํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด User๋ชจ๋(๋ณดํต๋ชจ๋)์์๋ CPSR์๋ง ์ ๊ทผ ํ ์ ์๊ณ , IRQ๋ชจ๋์์๋ CPSR๊ณผ SPSR_irq ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ๊น ์ง๋ ๊ฐ์ข์ ๋ด์ฉ์ ๋ ์ฌ๋ ค ๋ณด์ฃ . CPSR์ด๋ผ๊ณ ํจ์ ์ผ๋ฐ์ ์ธ ํ๋๊ทธ ๋ ์ง์คํฐ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, ARM7์์๋ 6๊ฐ์ ๋์ ๋ชจ๋๊ฐ ์๊ณ , Exception(IRQ, FIQ, ABORT ๋ฑ)์ ์ํด ๋์ ๋ชจ๋๊ฐ ์ ํ๋ฉ๋๋ค. ๊ฐ ๋์๋ชจ๋์ ๋ฐ๋ผ์ ๋ช๋ช ๋ ์ง์คํฐ๋ค์ด ๊ต์ฒด๋๊ณ , ์ด ๋๋ถ์ ๊ฐ ๋ชจ๋๋ณ๋ก ์คํ์ ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค. Exception Call์ ๋ฐ๋ฅด๋ ์ํ๋ฒ์ง ์ ์ฅ๋ ์คํ์ ํตํด ํ์ง ์๊ณ r14(lr)์ ํตํด ์ํํฉ๋๋ค. ํ๋๊ทธ ๋ ์ง์คํฐ ์ญ์ Exception์ ๋ฐ๋ผ ์คํ์ ์ ์ฅํ์ง ์์๋ ๋๋๋ก ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด ์ฃผ๋๋ฐ, ์ด๋ฐ ์ญํ ์ ํ๋ ๊ฒ์ด SPSR ์
๋๋ค. SPSR์ ์ด 5๊ฐ๊ฐ ์์ต๋๋ค. User๋ชจ๋๋ฅผ ์ ์ธํ๊ณ ๋๋จธ์ง 5๊ฐ์ ๋์ ๋ชจ๋๋ง๋ค ํ๋์ฉ ์กด์ฌํ๋๋ฐ์. ์๋ฅผ ๋ค์ด IRQ๊ฐ ๊ฑธ๋ ธ๋ค๊ณ ํ๋ฉด, ์ฐ์ CPU๋์๋ชจ๋ IRQ ๋ชจ๋๋ก ๋ฐ๋๊ณ ์ด์ ๋ฐ๋ผ r13_irq, r14_irq ๋ก ๋ ์ง์คํฐ 2๊ฐ๊ฐ ๋์น๋ฉ๋๋ค. ๋ค์ r14_irq์ ๊ธฐ์กด์ pc(r15)๊ฐ์ ์ ์ฅํฉ๋๋ค. ๋ค์ ์ง์ ๋ ๋ฒกํฐ๋ก ์ด๋ํ๊ฒ ์ฃ . ์ด๋ ํ๋๊ทธ๋ ์ง์คํฐ, ์ฆ CPSR์ ๊ฐ๋ ๋ณด์ ํ ํ์๊ฐ ์์ฃ . ๊ทธ๋์ ํ๋ ์ผ์ด CPSR๊ฐ์ pc์ ๋น์ทํ ๋ฉ์ปค๋์ฆ์ผ๋ก SPSR_irq๋ก ๋ฃ์ด๋๋ ๊ฒ์
๋๋ค. r13_irq์๋ ์ข ์ฐจ์ด๊ฐ ์์ฃ . r13๊ณผ ๊ฐ์ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ค์ ๊ฐ ์ํ๋ชจ๋ ๋ณ๋ก ๊ทธ ๊ฐ์ด ๊ณ์ ์ ์ง๊ฐ ๋ฉ๋๋ค๋ง, SPSR์ด๋ r14๋ Exception์์ ๊ธฐ์กด ๋ ์ง์คํฐ ๊ฐ์ ๋ณด๊ด์ ์ํด ์ฌ์ฉ๋๋ ๋ฒํผ ์ญํ ์ ํฉ๋๋ค. ์ด๋ป๋ ๊ฐ์... ์ค๋ ์ค๋ช
ํ ๋ช
๋ น์ด๋ ๋๊ฐ์ง์
๋๋ค. ์ฌ์ค ๊ทธ๋ค์ง ์ฐ์ผ ์ผ์ ์๊ณ , CPU๋์๋ชจ๋๋ฅผ ์์๋ก ์ค์ ํ๊ฑฐ๋, ํ์ฌ ๋์๋ชจ๋๋ฅผ ํ์ธํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. 1) MRS{cond} Rd,<psr> : Transfer PSR contents to a register MSR{cond} <psr>,Rm : Transfer register contents to PSR MSR{cond} <psrf>,Rm : Transfer register contents to PSR flag bits only MRS๋ช
๋ น๊ณผ MSR๋ช
๋ น์ ์๋ฏธ๊ฐ ํ๊ฐ๋ฆด ์ ๋ ์๋๋ฐ์, M์ Move๋ก, R์ ๋ ์ง์คํฐ๋ก, S๋ฅผ PSF๋ก ํ์
ํ๋ฉด, MRS์ ๊ฒฝ์ฐ์ Move Reg,PSR์ด ์ ๋๋ก ์๊ฐํ ์ ์์ต๋๋ค. ์ฆ, ๋ ์ง์คํฐ์ PSR๊ฐ์ ๋ฃ๋ ๋ช
๋ น์ด์ฃ . MSR์ ๊ฒฝ์ฐ์ ๋ฐ๋๋ก ์๊ฐ ํ ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก CPSR์ ์ปจํธ๋กค๋นํธ๋ฅผ ๋ฐ๊พธ๋ฉด CPU์ ๋์๋ชจ๋๋ฅผ ์์๋ก ์ค์ ํ ์ ์์ต๋๋ค๋ง, USER๋ชจ๋์์๋ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Ex1) MSR CPSR_all,r0 : ํด๋น ๋ช
๋ น์ด USER๋ชจ๋์์ ์ํ๋์๋ค๋ฉด Control Bit๋ค์ ์ํฅ์ ๋ฐ์ง ์๊ณ Flag Bits[31:28]๋ง ์ํฅ์ ๋ฐ์ต๋๋ค. ๋ง์ฝ USER๋ชจ๋๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋์์ ์ํ๋์๋ค๋ฉด CPSR์ ๋ชจ๋ ๋นํธ๋ค์ด ๋ณํํ๊ฒ ๋ฉ๋๋ค. Ex2) MSR CPSR_flg,r0 : CPSR์ ์ ๋ฏธ์ฌ _flg๋ฅผ ๋ถ์ฌ์ฃผ์ด์ ๋ชจ๋์ ์๊ด์์ด Flag ๋นํธ๋ค๋ง ์ํฅ์ ๋ฐ๋๋ก ํฉ๋๋ค. Ex3) MRS r0,CPSR : CPU๋์๋ชจ๋์ ์๊ด์์ด CPSR์ ๋ชจ๋ ๋นํธ๋ค์ r0๋ก ๋ณต์ฌํฉ๋๋ค. Ex4) MSR SPSR_all,r0 : r0์ ๊ฐ์ SPSR์ ๋ชจ๋ ๋นํธ์ ๋ฐ์ํฉ๋๋ค. ํด๋น ๋ช
๋ น์ USER๋ชจ๋์์๋ ์ํ ๋ถ๊ฐ๋ฅํฉ๋๋ค. USER๋ชจ๋์์๋ ์ ๊ทผ ๊ฐ๋ฅํ SPSR ์์ฒด๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค. Ex5) MSR SPSR_flg,#0xC0000000 : SPSR์ N, Zํ๋๊ทธ๋ฅผ ์ธํธํ๊ณ C, Vํ๋๊ทธ๋ฅผ ํด๋ฆฌ์ด ํ๋ ๋ช
๋ น์
๋๋ค. ์์ ๊ฐ์ด MSR๋ช
๋ น์ Flag๋นํธ์ ์ ํ์ ๋์ด ์ฌ์ฉํ ๊ฒฝ์ฐ์ Immediate ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ํฉ๋๋ค. ์ค๋ ๊ฐ์ข๋ ๊ฐ๋จํ๊ฒ ๋ง์น๋ ค๊ณ ํฉ๋๋ค. ์ค๋๋ง์ ๊ฐ์ข๋ผ ๊ธฐ๋๋ฅผ ๋ง์ด ํ์ ๋ถ๋ค์ด ํน(?) ๊ณ์๋ค๋ฉด ์ฃ์กํ๊ณ ์. ์์ฆ ๋ค์ด์ ์ฃผ๋ณ์ํฉ์ด ์ข ์ด์์ ํด์ ์กฐ๋ง๊ฐ ๋ค์ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [12] : Instruction Set (6) -------------------------------------------------------------------- ์ ๋ง ์ค๋๋ง์ ๊ฐ์ข๋ฅผ ์ฐ๋๊ตฐ์. ์ํ์ ์ฌ์ ๊ฐ ์ข ์์ด์ ๊ฐ์ข๋ฅผ ์์ํ๋๋ฐ ์์๋ณด๋ค ๊ฐ์ข๊ฐ ๊ธธ์ด์ง๊ณ ๋๋ถ์ด ์ ์ ๋ค๋ฅธ ์ผ๋ค์ด ์๊ฒจ์ ์์ฆ์๋ ํต ์๊ฐ์ ๋ผ ์๊ฐ ์์์ต๋๋ค. ํน, ๊ฐ์ข๋ฅผ ๊ธฐ๋ค๋ฆฌ์ ๋ถ์ด ๊ณ์๋ค๋ฉด ์ฃ์กํ๋ค๋ ๋ง์์ ๋๋ ค์ผ๊ฒ ๊ตฐ์. ์๋ฌด๋๋ ๊ฐ์ข๋ฅผ ๋นจ๋ฆฌ ์ ๋ฆฌํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค. ์๊พธ ๋์ด์ง๋๊น, ์ ๋ ๋ถ๋ด์ค๋ฝ๊ณ , ์ฝ์ผ์๋ ๋ถ๋ค์๊ฒ๋ ํ๋ฅผ ๋ผ์น๋ ๊ฒ ๊ฐ์์. ๋จ์ ๋ถ๋ถ์ ๋ํด์๋ ์ต๋ํ ํต์ฌ๋ง ์๊ธฐํ๋ ค ํฉ๋๋ค. ์ฌ์ค ๋ช
๋ น์ด ํ๋ํ๋์ ๋ํด ํ๋ํ๋ ์ค๋ช
ํ๋ค๋ ๊ฒ์ด... ๋ญ ๊ทธ๋ค์ง ์๋ฏธ ์๋ ์ผ ๊ฐ์ง๋ ์๊ณ , ์ด์ฏค๊น์ง ์๋ค๋ฉด ๋์ถฉ ์ด๋ค ๋ช
๋ น์ด๋ค์ด ์๋์ง ํ์
ํ์๊ณ , ๋์ค์ ํ์ํ์ค ๋ ๋ฐ์ดํฐ์ํธ ์ฐพ์๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์์. ์ ๋ฆฌ๋ฅผ ํด๋ณด์๋ฉด, ์ด์ ๋ง์๋๋ฆด ๋ช
๋ น์ ๊ณฑํ๊ธฐ ๋ช
๋ น (MUL,MLA), ๋ฐ์ดํฐ ์ ์ก ๋ช
๋ น (LDR, STR), ๋ธ๋ก ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น (LDM, STM), ๊ธฐํ ๋ช
๋ น(SWP, SWI) ์ ๋์
๋๋ค. Coprocessor ๋ช
๋ น์ ์๋ตํ๋๋ก ํ๊ณ , ๋ช
๋ น์ด ๋๋๋ฉด ์ค์ ์ผ์ด์ค๋ก ๊ฐ๋จํ ์์ ์ค๋ช
์ ํ๋ ๋๋ฆฌ๋ ค๊ณ ํ๊ณ , ๋ง์ง๋ง์ผ๋ก StrongARM์ Spec ์ ๋๋ฅผ ๊ฐ๋จํ ์ธ๊ธํ๊ฒ ์ต๋๋ค. ๋จ์ ๋ถ๋ถ์ด ์์ผ๋ก ๋ช ๋ฒ์ ๊ฑธ์ณ์ ๋งค๋ญ์ง์ด์ง์ง๋ ํด๋ด์ผ๊ฒ ์ง๋ง, ์ต๋ํ ์คํผ๋ํ ์งํ์ ํ๋ ค ํฉ๋๋ค. ์ฐจํ์ ๊ธฐํ๊ฐ ๋๋ฉด MMU ๋ถ๋ถ ๊ฐ์ ๊ฒ๋ค์ ์งง๊ฒ ๋ค๋ฃฐ ์๋ ์๊ฒ ์ง์. ์, ์ด์ ์์ํ๊ฒ ์ต๋๋ค. โ ๊ณฑํ๊ธฐ ๋ช
๋ น(MUL, MLA) ARM7์์์ ๊ณฑํ๊ธฐ ๋ช
๋ น์ ํฌ๊ฒ ๋ ์ข
๋ฅ๊ฐ ์์ต๋๋ค. ํ๋๋ ๊ทธ๋ฅ ๊ณฑํ๋ ๊ฒ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ๊ณฑํด์ ๋ํ๋ ๊ฒ์
๋๋ค. ^^ ๋ช
๋ฃํ์ฃ ? 1) MUL{cond}{S} Rd,Rm,Rs cond ๋ถ๋ถ์ ํด๋น ๋ช
๋ น์ ์คํ ์กฐ๊ฑด์
๋๋ค. Sํ๋๊ทธ๋ ๊ฒฐ๊ณผ๊ฐ ํ๋๊ทธ ๋ ์ง์คํฐ์ ์ํฅ์ ๋ฏธ์น ์ง์ ์ฌ๋ถ๋ผ๊ณ ๊ณ์ ๋ง์ ๋๋ ธ์ฃ ? ๋ค์์ผ๋ก ๋ ์ง์คํฐ 3๊ฐ๋ฅผ ์ง์ ํ๋๋ก ๋์ด์๋๋ฐ, Rd๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋ ๋ ์ง์คํฐ์ด๊ณ , Rm๊ณผ Rs๋ ๊ณฑํด์ง ๋๊ฐ์ ๋ ์ง์คํฐ์
๋๋ค. ๋ณด์
จ๋ฏ์ด ์ด ๋ช
๋ น์์๋ ๋ ์ง์คํฐ๋ง์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. Ex) MUL R1,R2,R3 ; R1:=R2*R3 # ์ฐธ๊ณ ๋ก ๊ณฑํ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ 32๋นํธ๋ฅผ ๋๋๋ค๋ฉด, ํ์ 32๋นํธ๋ง ๊ฒฐ๊ณผ ๋ ์ง์คํฐ์ ๋จ์ต๋๋ค. 2) MLA{cond}{S} Rd,Rm,Rs,Rn ์์ ๋น์ทํฉ๋๋ค๋ง, ์ด๋ฒ์๋ ๋ ์ง์คํฐ๊ฐ 4๊ฐ์
๋๋ค. ๋จ์ ๋ช
๋ฃํ๊ฒ ์๋ฏธ๋ฅผ ๋ง์๋๋ฆฌ๋ฉด, Rd := Rm * Rs + Rn ์ ์๋ฏธ์
๋๋ค. โ Single Data Transfer (LDR, STR) ํด๋น ๋ช
๋ น์ ๋ ์ง์คํฐ์ ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ ์ ์ก์ ๋ด๋นํ๋ ๋ช
๋ น์
๋๋ค. ๋ฌด์ฒ ์ฌ์ฉ๋น๋๊ฐ ๋์ ๋ช
๋ น์
๋๋ค. 86์์๋ MOVํ๋๋ก ๋ ์ง์คํฐ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก๊ณผ, ์ธ๋ถ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ ์ ์ก์ ๋ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์ง๋ง, ARM7 ์์๋ ๊ตฌ๋ถ์ด ๋์ด์์ต๋๋ค. ์ฆ, MOV๋ช
๋ น์ ๋ ์ง์คํฐ๊ฐ์ ์ ์ก๋ช
๋ น์ผ๋ก ๋ถ๋ฅ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ช
๋ น์ผ๋ก ๋ถ๋ฅ๋๊ณ , ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์ผ๋ก๋ LDR๊ณผ STR์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ ์ต์
์ด ๋ง์๋ฐ์, ์ฐ์ , LDR์ ๋ก๋๋ผ๋ ์๋ฏธ์ด๋ฏ๋ก ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๋ ์ง์คํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ช
๋ น์ด๊ณ , STR์ ๋ฐ๋์ ๊ธฐ๋ฅ์ ํ๋ ๋ช
๋ น์
๋๋ค. - ๋ช
๋ น ํ์ LDR{cond}{B} Rd, address{!} Rd:= contents of address LDR{cond}{B} Rd, =expression Rd:= expression STR{cond}{B} Rd, address{!} contents of address := Rd LDR๊ณผ STR์ Single Data ์ ์ก ๋ช
๋ น์
๋๋ค. ๋น์ทํ ๋ช
๋ น์ผ๋ก LDM, STM์ ์ฌ๋ฌ ๊ฐ์ ๋ ์ง์คํฐ ๋ด์ฉ์ ์ ์กํ ์ ์๋ ๋ช
๋ น์
๋๋ค. ์ด๋ฐ์ SWP๋ผ๋ ์ค์ ๋ช
๋ น์ด ์๋๋ฐ, ํด๋น 5๊ฐ์ ๋ช
๋ น๋ง์ด ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ง์คํฐ๊ฐ์ ์ ์ก์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ช
๋ น์
๋๋ค. LDR๊ณผ STR์ ๊ฒฝ์ฐ ์ ์ก ๋จ์๋ฅผ ๋ฐ์ดํธ, ํน์ ์๋(32Bit)๋จ์๋ก ์ํ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํธ ๋จ์ ์ ์ก์ ๊ฒฝ์ฐ ํด๋น ๋ ์ง์คํฐ์ ์ด๋ค ๋ถ๋ถ์ด ์ฌ์ฉ๋ ์ง์ ์ฌ๋ถ๋ ํด๋น ํ๋ก์ธ์์ Endian์ ๋ฌ๋ ค ์์ต๋๋ค. ๋, ์๋ ์ ์ก ๋ช
๋ น์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ ์ด๋๋ ์ค๋ Word align์ด ๋์ด์ผ ํฉ๋๋ค. ๋ค์ ํ๋ LDR๊ณผ STR์์ ์ฌ์ฉํ๋ ์ ์ก ๋ชจ๋๋ฅผ ๋ํ๋ธ ๊ฒ์
๋๋ค. -------------------------------------------------------------------- Mode Effective address Indexing -------------------------------------------------------------------- [Rn] Rn none [Rn,+- expression] Rn +- expression Pre-indexed [Rn,+- Rm] Rn +- Rm Pre-indexed [Rn,+- Rm, shift cnt] Rn+-(Rm shifted by cnt) Pre-indexed [Rn],+-expression Rn Post-indexed [Rn],+-Rm Rn Post-indexed [Rn],+-Rm,shift cnt Rn Post-indexed -------------------------------------------------------------------- # Rn : base ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ์ง์คํฐ Rm : r15๋ฅผ ์ ์ธํ ๋ ์ง์คํฐ(Offset), ๋ถํธ ๊ฐ ์ฌ์ฉ expression : -4095 - +4096 ๋ฒ์์ Immediate ๊ฐ(12Bit) shift : LSL, LSR, ASR, ROR, RRX cnt : 1..31 ์ฌ์ด์ ๊ฐ. ์๋นํ ๋ณต์กํ ๋ด์ฉ์
๋๋ค. ํ์์ Mode ๋ถ๋ถ์ด ์ค์ ์ด์
๋ธ๋ฌ์์ ์ฌ์ฉํ๋ ๋ช
๋ น์ ํ์์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. ๊ฐ ๋ชจ๋๋ณ๋ก ์์ ๋ฅผ ๋ค์ด์ ์ค๋ช
ํ๋๋ก ํ์ฃ . 1) Pre-Indexed Addressing Mode ์ด ๋ชจ๋์์๋ Rn์ ๋ฒ ์ด์ค ์ฃผ์๋ก ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ํด์ Offset์ ์ง์ ํ๊ฑฐ๋, ํน์ ์ง์ ํ์ง ์์ ์ ์์ต๋๋ค. Offset์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ํด๋น Offset์ ๋ฒ ์ด์ค ์ฃผ์์์ ๋ํ๋๋ก ํ๊ฑฐ๋ ๋บ ์ ์๋๋ฐ, ์์ ํ์์ +, - ๊ธฐํธ๊ฐ ๊ทธ๊ฒ์ ์๋ฏธํฉ๋๋ค. Offset์ ๋ถํธ๊ฐ ์๋ 12Bit Immediate๊ฐ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ ์ง์คํฐ๋ฅผ ์ง์ ํด์ ํด๋น ๋ ์ง์คํฐ์ ๋ด์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๋ ์ง์คํฐ๋ฅผ Offset์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ Shift ์์ผ์ ์ ์ฉ์ํฌ ์ ์์ต๋๋ค. ๊ด๋ จ ๋ด์ฉ์ ๋ค์ ํ์ธํ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ๋ฐ์ดํฐ ์ ์ก๋ช
๋ น์ ์คํผ๋๋ 2์ ๋ํ ์ค๋ช
์ ๋ค์ ํ์ธํ์๊ธธ ๋ฐ๋๋๋ค. Ex) LDR r0,[r1] ; r1์ ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ๊ณ Offset์ ์ง์ ํ์ง ์๋ ํํ์
๋๋ค. r0์ r1์ ๋ฒ์ง๋ก ํ๋ ์๋(4๋ฐ์ดํธ)๋ฅผ ์ฝ์ด๋๋ฆฝ๋๋ค. LDR r0,[r1,#132] ; ์ด๋ฒ์๋ Offset์ผ๋ก 132๋ฅผ ์ง์ ํ ํํ์
๋๋ค. STR r0,[r1,r2] ; ๋ฒ ์ด์ค๋ r1, Offset์ r2๋ฅผ ์ฌ์ฉํ ํํ์
๋๋ค. ์ฆ *(r1+r2)=r0 ์ ๊ฐ์ ์๋ฏธ. LDR r0,[r1,r2,LSL #2] ; ๋ฒ ์ด์ค r1, Offset์ r2<<2 ์ ํํ. ์ด๋ฒ์๋ Write-Back ๊ธฐ๋ฅ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. LDR๋ช
๋ น์ ๊ฒฝ์ฐ ์ต์
์ผ๋ก Write-Back์ ์ง์ ํ ์ ์๋๋ฐ, ์ง์ ํ ๊ฒฝ์ฐ ์๋ ๋ฒ ์ด์ค์ Offset์ ๋ํ ๊ฐ์ ๋ค์ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ก ๋ฃ๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค. ์ ์๊ฐ์๋ ์ด ๊ธฐ๋ฅ์ด C์์ ++์ ๊ฐ์ ์๋ฏธ๋ผ ์๊ฐ๋๋๋ฐ์. ๊ธ์, ์ฐ๊ธฐ ๋๋ฆ์ด๊ฒ ์ง์. ๋ค์์ ์์ ์
๋๋ค. Ex) 1: LDR r0,=table_end 2: LDR r1,=table 3: 4: MOV r2,#0 5:loop STR r2,[r0,#-4]! 6: 7: ADD r2,r2,#1 8: CMP r0,r1 9: BNE loop 10: 11: ... 12: 13: ALIGN 14:table % table_length*4 15:table_end ์์ ๊ฐ ์ข ๊ธธ๊ตฐ์. ์ฃผ์ํด์ ๋ณด์ค ๋ถ๋ถ์ 5๋ฒ ๋ผ์ธ์
๋๋ค. ํด๋น ๋ช
๋ น์ STR r2,[r0,#-4]! ์ด์ฃ . r2๋ฅผ r0๋ฅผ ๋ฒ ์ด์ค๋ก ์ผ๊ณ Offset์ผ๋ก -4๊ฐ์ ์ฌ์ฉํ๊ตฐ์. r0๊ฐ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๊ฐ ์ค์ ๋ฒํผ๋ก ์ฌ์ฉํ ๊ณต๊ฐ์ด ๋๋ ๋ฐ๋ก ๋ค์์ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฏ๋ก -4๋ฅผ ํ๋ฉด ๋ง์ง๋ง ์๋ ์ํธ๋ฆฌ ํฌ์ธํธ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ์ํ์ค ์ ์ !๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๋ฐ์. ์ด๊ฒ์ด ๋ฐ๋ก Write-Back๊ธฐ๋ฅ์
๋๋ค. ์์ ์ค๋ช
์ ๋์์๋ฏ์ด ๋ฒ ์ด์ค ๊ฐ(์ฌ๊ธฐ์๋ r0๊ฐ ๋๊ฒ ๊ตฐ์.)์ ๊ฐฑ์ ํ๋ ๊ฒ์ธ๋ฐ์... ์๋ฅผ ๋ค์ด 1000๋ฒ์ง๋ถํฐ 2๊ฐ์ entry๋ฅผ ๊ฐ์ ํ๋ค๋ฉด, table์ 1000์ด ๋ ๊ฒ์ด๊ณ table_end๋ 1008 ๋ฒ์ง๊ฐ ๋ ๊ฒ์
๋๋ค. ์ด๋ STR๋ช
๋ น์์ 1008์ ๋ฒ ์ด์ค๋ก -4๋ฅผ Offset์ผ๋ก ์ค์ ํ์ผ๋ฏ๋ก ์ค์ ๋ก r2๊ฐ์ 1004๋ฒ์ง๋ถํฐ 4๋ฐ์ดํธ์ ๊ธฐ๋ก์ด ๋ ๊ฒ์
๋๋ค. ์ดํ Write-Back ์ต์
์ด ์ ์ฉ๋์ด ํด๋น ๋ช
๋ น์ด ๋๋๋ฉด r0๊ฐ์ 1004๋ก (1008-4) ๋ฐ๋๊ฒ ๋ฉ๋๋ค. ์ฐธ, ์ฌ๊ธฐ์ Pre-Index Mode์ด๊ธฐ ๋๋ฌธ์ ์ค์ ์ฃผ์๋ฅผ ๊ตฌํ ๋ Offset์ ๋จผ์ ๋นผ ์ฃผ์๊ตฐ์. ์๋ฌด์ชผ๋ก ์ดํด ํ์
จ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ ต๋๋ค. 2) Post-Indexed Addressing Mode Post์ธ๋ฑ์ค ๋ชจ๋์ ๊ฒฝ์ฐ์๋ Pre์ธ๋ฑ์ค ๋ชจ๋์ ๋นํด Effective Address๋ ํญ์ Rn, ์ฆ ๋ฒ ์ด์ค ์ด๋๋ ์ค๋ฅผ ๋ํ๋ด๋ ๋ ์ง์คํฐ์ ๊ฐ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๊ฐ์ง ์ฃผ์ํ์ค ์ ์ Post์ธ๋ฑ์ค ๋ชจ๋์ ๊ฒฝ์ฐ์ ๋ฐ๋ก !๋ฅผ ์ฌ์ฉ ํ์ง ์๋๋ผ๋ ๋ํดํธ๋ก Write-Back ๋ชจ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ ๊ฒ ์ฃ ? Post์ธ๋ฐ Write-Back์ด ์๋๋ค๋ฉด, Offset์ ์ฌ์ฉํ ์ด์ ๊ฐ ์๊ตฐ์. Ex) LDR r0,[r1],r2 ; ๋๊ดํธ์ ์ฌ์ฉ์ด Pre ์ธ๋ฑ์ค์ ๊ฒฝ์ฐ์ ๋ค๋ฆ
๋๋ค. ์ค์ ์ํ๋๋ ๊ฒ์ r0์๋ค r1์ ์ฃผ์๋ก ํ์ฌ ๊ฐ์ ์ฝ์ด์ค๊ณ ๋ค์ r1์๋ r2๋ฅผ ๋ํด์ฃผ๋ ์ผ์ ํฉ๋๋ค. STR r0,[r1],#20 ; [r1]:=r0, r1:=r1+20 1: LDR r0,=table 2: LDR r1,=table_end 3: 4: MOV r2,#0 5:loop STR r2,[r0], #4 6: 7: ADD r2,r2,#1 8: CMP r0,r1 9: BNE loop 10: 11: ... 12: 13: ALIGN 14:table % table_length*4 15:table_end ๋ง์ง๋ง ์์ ๋ ์์์ ๋์๋ ์์ ์ ๋น์ทํ๋ ์ ๋ถ์ํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค. 3) Relative Addressing Mode ํด๋น Addressing ๋ชจ๋๋ ์ด์
๋ธ๋ฌ๊ฐ ์ ์ ํ ์ง์ํ์ฌ ๋ณํํด ์ฃผ๋ ๋ชจ๋๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. Ex) LDR r5,ThreeCubed ... ThreeCubed DCD 27 ์์ ๊ฐ์ ๊ฒฝ์ฐ ์ค์ ๋ก๋ LDR r5,[PC,#constant] ํํ์ ์ฝ๋๋ก ๋ฒ์ญํด ์ค๋๋ค. ์ฆ PC๋ฅผ ๋ฒ ์ด์ค๋ก ์ผ์์ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ด์ง์. ๋ง์ฝ ํด๋น Symbol์ด ์ง์ ํ๋ ๋ฒ์๊ฐ ๋๋ฌด ์ปค์ ์์๋ก ์ง์ ํ ์ ์๋ค๋ฉด ์ด์
๋ธ์ ํ ๋ ์๋ฌ๋ฅผ ๋ด๊ฒ ๋ฉ๋๋ค. ๋ ๋ง์ด ์ฌ์ฉ๋๋ ํํ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํํ์ด ์์ต๋๋ค. Ex) LDR r0,=0x12345678 ์ฌ์ค์ ์์ ์์์๋ ์ฌ์ฉํ์๋๋ฐ์. ์ด ๊ฒฝ์ฐ ์ด์
๋ธ๋ฌ๊ฐ ํด๋น ์์ ๊ฐ์ ํน์ ๊ณต๊ฐ์ ๋ชจ์์ ์ฝ์
ํด ์ฃผ๊ณ (์ด๊ณต๊ฐ์ Literal Pool์ด๋ผ ํ๋๊ตฐ์) ์ญ์ ๋ง์ฐฌ๊ฐ์ง๋ก PC๋ฅผ ๋ฒ ์ด์ค๋ก ํด์ ๋ช
๋ น์ฝ๋๋ฅผ ๋ง๋ญ๋๋ค.
์.. ์ค๋์ ์ด๋ง ์ฐ๋ ต๋๋ค. ์ฌ์ค ์ด๋๋ฒ์งธ ๊ฐ์ข๋ ์ฐ๊ธฐ ์์ํ์ง ๋ช ์ฃผ๋ง์ ๋๋ด๊ฒ ๋๋๊ตฐ์. ์ค๊ฐ์ ๊ณ์ ์ผ์ด ์๊ฒจ์. ๋ฏธ๋ค๋๊ณ ์๋ค๊ฐ, ๋ฉ์ผ๋ก ๊ฐ์ข๋ฅผ ์ฌ์ดํ์๋ ๋ถ๋ค์ด ๊ณ์
์. ์๋ฌดํผ, ๋ค์๊ฐ์ข์ ๋ต๋๋ก ํ๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [13] : Instruction Set (7) -------------------------------------------------------------------- โ Block Data Transfer ๋ช
๋ น(LDM,STM) ํด๋น ๋ช
๋ น์ ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก ์ฐธ ๋
ํนํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ง๋ ๊ฐ์ข์์ ๋ค๋ฃจ์๋ LDR, STR๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ง์คํฐ์ ๋ด์ฉ์ ์ ๋ฌํ๊ฑฐ๋, ์ ๋ฌ๋ฐ์ ์ ์๋ ๋ช
๋ น์
๋๋ค. ARM7์์๋ ์ด๋ฐ ๋ช
๋ น์ด ๋ช ์๋์ฃ ... LDR๋ช
๋ น์ด ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง์ ๋ด์ฉ์ ์ง์ ๋ ๋ ์ง์คํฐ๋ก ๊ฐ์ ธ์ค๋ ๋ช
๋ น์ด๋ผ๋ฉด LDM์ ๊ฐ์ ธ์ค๊ธด ํ๋๋ฐ, ์ฌ๋ฌ ๊ฐ์ ๋ ์ง์คํฐ์ ๋ด์ฉ์ ํ ํ์ ๊ฐ์ ธ์ค๋ ๋ช
๋ น์
๋๋ค. ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ ์คํ ์ฐ์ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ ๋ง์๋๋ ธ์์ง๋ง, ARM7์๋ Push, Pop ๋ช
๋ น์ด ์์ต๋๋ค. ๋์ LDR์ด๋ STR์ ์ธ ์๋ ์๊ฒ ๊ณ , ๋ LDM์ด๋ STM์ ์ธ ์๋ ์์ฃ . ํ์ ์ชฝ์ด ๋ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฏ ํฉ๋๋ค. 1) <LDM|STM>{cond}mode Rn{!},{reg_list}{^} ์ ๋ช
๋ น์์ {cond}๋ ๋ ๋ณด์์ค๋ ๋ช
๋ น์ด ์คํ ์กฐ๊ฑด์
๋๋ค. Rn์ ์ ์ก์ ์ฌ์ฉ๋ ๋ฒ ์ด์ค ๋ฒ์ง๋ฅผ ์ง์ ํ๋ ๋ ์ง์คํฐ์
๋๋ค. !๋ฅผ ๋ถ์ด๋ฉด Wrte Back ๊ธฐ๋ฅ์ด์ฃ . LDR๊ณผ STR์์ ๋ค๋ฃจ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ธ๊ธํ๋๋ก ํ๊ฒ ์ต๋๋ค. {reg_list} ๋ถ๋ถ์ ์ ์กํ๊ฑฐ๋ ์ ์ก ๋ฐ์ ๋ ์ง์คํฐ์ ๋ชฉ๋ก์ ๋ํ๋ด๋ ๋ถ๋ถ์
๋๋ค. ์๋ฅผ ๋ค์ด 1000๋ฒ์ง์ r1,r2,r3๋ฅผ ์ ์ฅํ๊ณ ์ถ๋ค ํ์ ๊ฒฝ์ฐ์, ์ผ๋จ 1000๋ฒ์ง ๊ฐ์ ์ด๋ค ๋ ์ง์คํฐ์ ๋ฃ์ด๋๊ณ , ์ฌ๊ธฐ์๋ ๊ทธ ๋ ์ง์คํฐ๋ฅผ r13์ด๋ผ๊ณ ํ์ฃ , ๊ทธ๋ฌ๋ฉด Rn์ r13์ด ๋๋ ๊ฑฐ๊ตฌ์, {reg_list}๋ {r1,r2,r3} ์ด ๋๋ ๊ฒ์
๋๋ค. mode ๋ผ๊ณ ๋์ด์๋ ๋ถ๋ถ์ ์ฌ๋ฌ ๊ฐ์ ๋ ์ง์คํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฃ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํ ์ง๋ฅผ ์ง์ ํ๋ ์ ๋ฏธ์ฌ์
๋๋ค. ์ด ์ ๋ฏธ์ฌ ์ข
๋ฅ๊ฐ 8๊ฐ์ง๊ฐ ์๋๋ฐ์. ๋ฌด์งํ๊ฒ ๋ณต์กํด ๋ณด์
๋๋ค. ์ผ๋จ์ ๊ฐ ์์์ ์๋ฏธ๋ง ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๊ณ , ๋ค์์ผ๋ก ๋์ด๊ฐ์ฃ . ๋ง์ง๋ง์ผ๋ก {^}๋ถ๋ถ์... ๊ธ์์ ์ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ์
๋๋ค๋ง, ์ ๊ฐ ๋ณด๋ ์ฑ
๊ณผ ๋ฐ์ดํฐ ์ํธ์์ ์์ ๊ฐ ๋์ ์์ง ์๊ตฐ์. ๊ทธ๋ฅ ๋ฌธ์์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ์ด๋ณด๊ฒ ์ต๋๋ค. {^} if present set S bit to load the CPSR along with the PC, or force transfer of user bank when in privileged mode...(???) ์, ๊ทธ๋ผ ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ค๋ช
์ ๋ค์ด๊ฐ๊ฒ ์ต๋๋ค. ๋จผ์ 1๋จ๊ณ, LDM ๊ณผ STM์ ์๋ฏธ์
๋๋ค. LDM : ๋ฒ ์ด์ค ๋ ์ง์คํฐ(Rn)๋ก ์ง์ ๋ ๋ฒ์ง์์ ๋ ์ง์คํฐ ๋ชฉ๋ก์ผ๋ก ์ง์ ๋ ๊ฐ ๋ ์ง์คํฐ์ ๋ด์ฉ์ ์ฝ์ด๋ค์ด๋ ๋ช
๋ น. STM : LDM๊ณผ ๋ฐ๋. ์ฌ๊ธฐ๊น์ง๋ ๋ณ ๋ฌด๋ฆฌ๊ฐ ์์ผ๋ฆฌ๋ผ ์๊ฐํฉ๋๋ค. ํน์ ์ด ๋ช
๋ น์ 8086๋ฑ์ ์๋ Block Data ์ ์ก๋ช
๋ น ๋ฑ๊ณผ ํผ๋ํ์ง ์์ผ์๊ธธ ๋ฐ๋๋๋ค. ์ด๋ ดํ์ด ๊ธฐ์ตํ๋๋ฐ, 8086๋ฑ์๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก Block ์ ์ก์ ํ ์ ์๋ ๋ช
๋ น์ด ์์ฃ ... ๋๋ ํน์ ๊ธธ์ด๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ค ๊ฐ์ผ๋ก ์ค์ ํ๋ Block ์ค์ ๋ช
๋ น๋ ์์๋ ๋ฏ ํฉ๋๋ค. ARM7์ LDM๊ณผ STM์ Block ์ ์ก์ด ์๋๋ผ Multiple Register ์ ์ก์
๋๋ค. ์ฝ๊ฒ ์๊ฐํ๋ฉด push ax push bx push cx push dx ๊ฐ 8086ํํ๋ผ๊ณ ํ ๋, ARM7์์ Single ๋ฐ์ดํฐ ์ ์ก ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด STR r0,[sp],#4 STR r1,[sp],#4 STR r3,[sp],#4 STR r4,[sp],#4 ๊ฐ ๋๊ฒ ๊ณ , ๋ Multiple ์ ์ก๋ช
๋ น์ ์ฌ์ฉํ๋ฉด, STMEA sp!,{r0,r1,r2,r4} ์ ๊ฐ ๋ฐฉ๊ธ ์ ์ด๋ณธ ๊ฒ์ด๋ผ ๋ง๋ ๊ฒ์ธ์ง ํ์ ์ ์์ต๋๋ค๋ง, ๊ทธ๋ฅ ๊ฐ๋
์ด ์ด๋ ๋ค๋ ๊ฒ๋ง ํ์
ํ์
จ์ผ๋ฉด ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ 2๋จ๊ณ, {Reg_List}๋ฅผ ์์ธํ ๋ค๋ฃจ์ด ๋ณด์ฃ . ์์ ์์์ ๋์์๋ฏ์ด ์ค๊ดํธ ์ฌ์ด์ ์ ์ก ๋์์ด ๋๋ ๋ ์ง์คํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ช ๊ฐ๊น์ง ๊ฐ๋ฅํ ๊ฒ์ผ๊น์? ARM7์์ ํ ์์ ์ ์ฌ์ฉํ ์ ์๋ ๋ ์ง์คํฐ์ ๊ฐ์๋ r0์์ r15๊น์ง ์ด 16๊ฐ์ฃ . LDM์ด๋ STM๋ช
๋ น์์ ์ง์ ํ ์ ์๋ ๋ ์ง์คํฐ์ ๊ฐ์๋ ์ต๋ 16๊ฐ์
๋๋ค. ์ฆ, ํ ๋ช
๋ น์ผ๋ก ๋ชจ๋ ๋ ์ง์คํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋, ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์๋ฏธ์
๋๋ค. ์ฐธ ์ฌ๋ฏธ์๋ ์ฌ์ค์, LDM๋ช
๋ น์ ๋๋ชจ๋์์ 16๋นํธ์ ๊ณต๊ฐ์ด ์์ด์ ๊ฐ ๋นํธ๊ฐ ๋ ์ง์คํฐ r0-r15์ 1:1๋ก ๋์์ด ๋๋ค๋ ์ฌ์ค์
๋๋ค. ๋ฐ๋ผ์ {reg_list}์๋ ์ด๋ ํ ๋ ์ง์คํฐ์ ์กฐํฉ๋ ์ฌ ์ ์์ต๋๋ค. ๊ฐ๋ ! ๊ทธ๋ฆฌ๊ณ ์ด์
๋ธ๋ฌ์ ๋ฌธ์ ๊ฒ ์ง๋ง, {r0,r2} ์ด๋ฐ ํ์๋ฟ๋ง ์๋๋ผ, {r0-r5} ์ ๊ฐ์ ํ์, {r0-r3,r6-r7} ์ด๋ฐ ํ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ํ์ธํ ๊ฒ์, {r3,r2,r1} ์ด๋ ๊ฒ ์ผ์ ๋์ {r1,r2,r3} ์ด๋ ๊ฒ ์ผ์ ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ์์๊ฐ ๋ค๋ฅผ๊น์. ์๋๊น์. ๋ง์๋๋ ธ๋ฏ์ด 16๋นํธ์ ๋นํธํ๋๊ฐ ์กด์ฌํด์ ๊ฐ๊ฐ ๋ ์ง์คํฐ์ 1:1๋์์ด ๋๋ค๊ณ ํ์์ผ๋, ์์ค์ฝ๋์์ ์ด๋ค ํ์์ ์ฐ๋ ์ง ๊ฐ์ ๋๋ชจ๋์ผ๋ก ๋ณํ๋ ๋๋ ๊ทธ ์์๋ ์๋ฌด ์๋ฏธ๊ฐ ์๊ฒ ์ง์. ๊ฒฐ๊ตญ ๊ฐ๋ค๋ ๋ง์
๋๋ค. ์. ์ด๋ฒ์๋ 3๋จ๊ณ์
๋๋ค. ๋์ ๋ชจ๋!!! ์์ STM๋ช
๋ น์์ ์ ๊ฐ STMEA๋ผ๊ณ ๋ช
๋ น์ ์ ์์ต๋๋ค. EA๊ฐ ๋์๋ชจ๋๋ฅผ ์ง์ ํ๋ ๋ถ๋ถ์
๋๋ค. ์ด์ ๊ฐ์ ํค์๋๊ฐ 8๊ฐ์ง๊ฐ ์๊ณ , ๋์๋ชจ๋๋ 4๊ฐ์ง๊ฐ ์์ต๋๋ค. ๋จผ์ 4๊ฐ์ง์ ๋์๋ชจ๋๋ฅผ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. A) Post-Increment Addressing ์ฌ๊ธฐ์ ๋์๋ชจ๋๋ ์ฌ๋ฌ ๊ฐ์ ๋ ์ง์คํฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ก(ํน์ ๋ก๋ถํฐ) ์ ์กํ ๊ฒฝ์ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง๋ฅผ ์ฆ๊ฐ์ํค๋ฉด์ ์ ์ฅํ ์ง, ํน์ ๊ฐ์์ํค๋ฉด์ ์ ์ฅํ ์ง๋ฅผ ์ง์ ํ๋ ๊ฒ๊ณผ, ์ฆ/๊ฐ์ ํ๋๋ฐ, ์ ์ฅํ๊ธฐ ์ ์ ์ฆ/๊ฐ์ ํ ์ง, ์๋๋ฉด ์ ์ฅํ๊ณ ๋์ ์ฆ/๊ฐ์ ํ ์ง๋ฅผ ์ง์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฒ์ ์ค๋ช
ํ ๋์๋ชจ๋๋ ์ ์ฅ ์ดํ ์ฆ๊ฐํ๋ ๋ฐฉ์์
๋๋ค. ์๋ฅผ ๋ค์ด R10์ 0x1000์ด ๋ค์ด์๋ค๊ณ ๊ฐ์ ํ๊ณ R10์ ๋ฒ ์ด์ค๋ ์ง์คํฐ๋ก ์ฌ์ฉํด์ {r1,r2}๋ฅผ ์ ์ฅํ๋ค๋ฉด, Post-Increment๋ชจ๋์์๋, 1. 0x1000 ๋ฒ์ง์ r1์ด ์ ์ฅ๋๋ค. 2. Base ๋ฒ์ง๊ฐ์ด 0x1004๋ก ์ฆ๊ฐํ๋ค. 3. 0x1004 ๋ฒ์ง์ r2๊ฐ ์ ์ฅ๋๋ค. 4. Base ๋ฒ์ง๊ฐ์ 0x1008๋ก ์ฆ๊ฐํ๋ค. ๋ง์ฝ !๋ฅผ ์ฌ์ฉํ๋ค๋ฉด r10์ ๊ฐ์ 0x1008์ด ๋ ๊ฒ์
๋๋ค. B) Pre-Increment Addressing ๋ง ๊ทธ๋๋ก ๋จผ์ ์ฆ๊ฐํ๊ณ ๋ค์์ ์ ์ฅํ๋ ๋์ ๋ชจ๋์
๋๋ค. ์์ ๊ฐ์ ์กฐ๊ฑด์ ๊ฐ์ ํด ๋ด
์๋ค. 1. Base ๋ฒ์ง๊ฐ์ด 0x1004๋ก ์ฆ๊ฐํ๋ค. 2. 0x1004๋ฒ์ง์ r1์ด ์ ์ฅ๋๋ค. 3. Base ๋ฒ์ง๊ฐ์ด 0x1008๋ก ์ฆ๊ฐํ๋ค. 4. 0x1008๋ฒ์ง์ r2๊ฐ ์ ์ฅ๋๋ค. ์ญ์ !๋ฅผ ์ฌ์ฉํ๋ค๋ฉด r10์ ๊ฐ์ 0x1008์ด ๋ฉ๋๋ค. C) Post-Decrement Addressing ์ด๋ฒ์๋ ๋ฒ ์ด์ค ๋ฒ์ง๊ฐ ๊ฐ์ํ๋ ๊ฒฝ์ฐ์ฃ . ์ข ํน์ดํ ๊ฒ์, ๊ฐ์ ๋ชจ๋๋ก ์ ์ฅ(๋ก๋)์ ํ ๊ฒฝ์ฐ ์๊น๋ ๋ ์ง์คํฐ๋ฒํธ๊ฐ ๋น ๋ฅธ ๊ฒ๋ถํฐ ์ ์ฅํ๊ฑฐ๋ ๋ถ๋ฌ๋ค์๋๋ฐ, ์ด๋ฒ์๋ ๊ฑฐ๊พธ๋ก ๋ผ๋ ๊ฒ์
๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ๋ ์ง์คํฐ์ ์์๋ ํญ์ ๋์ผํ๋ค๋ ๊ฒ์ด์ฃ . ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ ์กฐ๊ฑด์์ ์์ ๋ฅผ ๋ค๊ฒ ์ต๋๋ค. 1. 0x1000๋ฒ์ง์ r2๊ฐ ์ ์ฅ๋๋ค.(!!! r1์ด ์๋๋ผ r2) 2. Base๋ฒ์ง๊ฐ์ด 0x0FFC๋ก ๊ฐ์๋๋ค. 3. 0x0FFC๋ฒ์ง์ r1์ด ์ ์ฅ๋๋ค. 4. Base๋ฒ์ง๊ฐ์ด 0x0FF8๋ก ๊ฐ์๋๋ค. ๋ง์ฝ !๋ฅผ ์ฌ์ฉํ๋ค๋ฉด r10์ ๊ฐ์ 0xFF8์ด ๋๋ค. D) Pre-Decrement Addressing 1. Base๋ฒ์ง๊ฐ์ด 0x0FFC๋ก ๊ฐ์๋๋ค. 2. 0x0FFC๋ฒ์ง์ r2๊ฐ ์ ์ฅ๋๋ค. 3. Base๋ฒ์ง๊ฐ์ด 0x0FF8๋ก ๊ฐ์๋๋ค. 4. 0x0FF8๋ฒ์ง์ r1์ด ์ ์ฅ๋๋ค. ๋ง์ฝ !๋ฅผ ์ฌ์ฉํ๋ค๋ฉด r10์ ๊ฐ์ 0xFF8์ด ๋๋ค. ์ฌ๊ธฐ๊น์ง 4๊ฐ์ ๋์๋ชจ๋๋ฅผ ์ค๋ช
ํ์ต๋๋ค. ๋์๋ชจ๋๋ฅผ ๋ํ๋ด๋ ํค์๋๋ 8๊ฐ์ธ๋ฐ์. ๊ฐ๊ฐ์ ๋์๋ชจ๋์ ๋ํด์ ์คํ์ฒ๋ผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํน์ ์๋ ๊ฒฝ์ฐ 2๊ฐ์ง๋ก ๋๋์ด์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค์ ํ๋ ๊ฐ ๋์๋ชจ๋์ ๋ํ ๋ช
๋ น์ด์
๋๋ค. ================================================================== ๋์ Stack Other ------------------------------------------------------------------ pre increment load LDMED LDMIB post increment load LDMFD LDMIA pre decrement load LDMEA LDMDB post decrement load LDMFA LDMDA pre increment store STMFA STMIB post increment store STMEA STMIA pre decrement store STMFD STMDB post decrement store STMED STMDA ================================================================== Stack์ธ ๊ฒฝ์ฐ์ ์๋ ๊ฒฝ์ฐ ํค์๋๊ฐ ๋ค๋ฅธ ๊ฒ์, ๋จ์ง User์ ํธ์๋ฅผ ์ํ ๋ฐฐ๋ ค๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. ์ฆ, ํค์๋๋ฅผ LDMED๋ก ์ผ์ ๊ฒฝ์ฐ๋ LDMIB๋ก ์ผ์ ๊ฒฝ์ฐ, ๋์์์ ์ฐจ์ด๋ ์๋ ๋ฏ ํฉ๋๋ค. ํค์๋๋ฅผ ๋ฌด์์ ๋ถ์ธ ๊ฒ ๊ฐ์ง๋ ์๊ณ ์. ๋จผ์ Other์ ํค์๋๋ฅผ ์ดํผ๋ฉด, I๋ increment๋ฅผ ์๋ฏธํ๊ณ ์. D๋ decrement๊ฒ ์ฃ . ๊ทธ๋ฆฌ๊ณ B๋ Before๋ฅผ, A๋ After๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ง์ฝ LDMDA ๋ post decrement ๋ชจ๋๋ฅผ ์๋ฏธํ๋ ๊ฒ์
๋๋ค. Stack์ ๊ฒฝ์ฐ์, E๋ Empty๋ฅผ F๋ Full์ ์๋ฏธํ๋ต๋๋ค. ์คํ์ ๊ตฌํํ๋ ๊ฒฝ์ฐ ํ์ฌ sp๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฒ์ง์ ๋ด์ฉ์ด ์ฐจ์๋์ง, ๋น์ด์๋์ง๋ฅผ ์๋ฏธํ๋ค๊ณ ๋ณด์๋ฉด ๋ ๋ฏ ํฉ๋๋ค. ๋ฌด์จ ์ด์ผ๊ธฐ์ธ๊ฐ ํ๋ฉด ๋ง์ฝ Post ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์คํ์ ๊ตฌํํ ๊ฒฝ์ฐ, ์ด๋ค ๋ด์ฉ์ ๋ฃ๊ณ ๋ค์์ ๋ฒ์ง๋ฅผ ์ฆ/๊ฐํ๋ฏ๋ก ๊ฒฐ๊ตญ ์ด๋ค ์์ ์์ ์คํํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฒ์ง๋ ๋น์ด์๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ Empty๊ฐ ๋๊ฒ ์ฃ . Load์ ๊ฒฝ์ฐ์ Empty ํํ์ ์คํ์ด๋ผ๋ฉด sp๊ฐ ๊ฐ๋ฆฌํค๋ ๊ณต๊ฐ์ ์๋ฌด ๋ด์ฉ๋ ์์ผ๋ฏ๋ก ๋จผ์ sp๋ฅผ ๋ณํ์ํค๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ๊ฒ ์ฃ . ๊ทธ๋์ Load๋ Pre๊ฐ Empty ์ ๋์์ด ๋ฉ๋๋ค. ํ์ง๋ง ๋ฐ๋๋ก Store์ ๊ฒฝ์ฐ์ Empty ํํ์ ์คํ์ ์ํด์๋ ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ sp๋ฅผ ๋ณํ์์ผ์ผ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด post๋ชจ๋๊ฐ Empty์ ๋์์ด ๋๊ฒ ๊ตฐ์! Full์ ๋ ์ด์ ๋ง ์ํด๋ ๋๋ฆฌ๋ผ ๋ฏฟ์ต๋๋ค. ๋ค์์ผ๋ก D๋ Decending, A๋ Ascending์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ ์คํ์ด ๊ฑฐ๊พธ๋ก ์ปค์ง๋์ง ์๋๋ฉด ๋ฐ๋์ธ์ง์ ๊ด๋ จ์ด ์์ต๋๋ค. 8086์์๋ Push๋ฅผ ํ๋ฉด sp๊ฐ์ด ์์์ง์ฃ ? ๊ทธ๋ ๋ค๋ฉด decending Stack์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. push์ STM์ด ๋์๋๋ฏ๋ก STM์ Decrement ๋ชจ๋๋ D ๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๊ตฐ์. Pop์ ๊ฒฝ์ฐ๋ LDM๊ณผ ๋์๋๊ณ decending stack์์ Pop์ ํ ๊ฒฝ์ฐ sp๊ฐ์ ์ฆ๊ฐ๋์ด์ผ๊ฒ ์ฃ . ๊ทธ๋์ LDM์์๋ increment๋ชจ๋๊ฐ D์
๋๋ค. A๋ ๋ฐ๋์ด๊ฒ ์ฃ . ๊ฒฐ๊ตญ ์คํ๊ด๋ จ ๋ช
๋ น์์๋ LDM์ด๋ STM์์ ๊ฐ์ ์ ๋ฏธ์ฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ ๊ฒ์
๋๋ค. ๋ฌผ๋ก ๋์ ๋ฐฉ์์ LDM๊ณผ STM์์ ๊ฐ๊ธฐ ๋ค๋ฅด์ง๋ง์. ์.. ์ด์ ์์ ๋ฅผ ํ๋ ๋ณด์ด๊ณ ์ค๋ ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ๋ ค ํฉ๋๋ค. STMED sp!,{r0-r3,r14} BL somewhere LDMED sp!,{r0-r3,r15} ์ฒซ ๋ฒ์งธ ๋ช
๋ น์ STMED๋ Empty Decending Stack Operation์ด๋ฏ๋ก ์ค์ ๋ก๋ post-decrement ๋์๋ชจ๋๋ฅผ ์๋ฏธํ์ฃ .. sp(r13)๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฒ์ง์ r0,r1,r3,r14๋ฅผ ์ ์ฅํฉ๋๋ค. BL๋ก ์ด ๋ฃจํด์ ๋ค์ด์๋ค๋ฉด r14์ ๋ณต๊ท ๋ฒ์ง๊ฐ ๋ค์ด๊ฐ ์๋ค๋ ๊ฒ์ ๊ฐ์ํ์ญ์์. BL์์ ๋ญ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ , ๋ง์ง๋ง์ผ๋ก LDMED๋ช
๋ น์์ ๋ ์ง์คํฐ๋ฅผ ๋ณต๊ตฌํฉ๋๋ค. ์ด๋ฒ์๋ pre-Increment ๋์๋ชจ๋์
๋๋ค. ํ๊ฐ์ง ์ฃผ์ํ์ค ์ ์ r14๋์ ์ r15๋ก ๋ณต๊ตฌ๋ฅผ ์์ผฐ๋ค๋ ๊ฒ์
๋๋ค. ARM7์์๋ ret๋ช
๋ น ๋์ mov r15,r14๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๋ง์๋๋ ธ์ฃ . LDMED ๋ช
๋ น์์ ๋ ์ง์คํฐ ๋ณต๊ตฌ์ ์๋ธ๋ฃจํด ๋ณต๊ท๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์
๋๋ค. ์. ์ค๋ ๊ฐ์ข๋ ์ด๋ ๊ฒ ์ ๋ฆฌํ ๊น ํฉ๋๋ค. ๊ฑฐ์ 1๋ฌ๋ง์ ๊ฐ์ข๋ฅผ ์ผ๊ตฐ์. ๊ทธ๋์ ๋ฉ์ผ์ด๋ ๊ฒ์ํ์ ํตํด์ ์ง๋ฌธ๊ณผ ๊ฒฉ๋ ค๋ฅผ ๋ณด๋ด์ฃผ์ ๋ถ๋ค์๊ฒ ์ฃ์กํ๋ค๋ ๋ง์์ ๋๋ ค์ผ๊ฒ ๊ตฐ์. ์ด์ ๊ฐ์ข๋ ์ข
๋ฐ์ ํฅํด ๋ฌ๋ฆฌ๊ณ ์์ต๋๋ค. ์๋ง๋ 2ํ ์ ๋๋ฉด ๊ณํํ๋ ๋ชจ๋๊ฐ ๋์ด ๋ ๊ฒ ๊ฐ๊ตฐ์. ๋ค์ ๊ฐ์ข๋ฅผ ๊ธฐ์ฝํ๋ฉฐ ์ด๋ง ์ค์ด๊ฒ ์ต๋๋ค. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [14] : Instruction Set(8) -------------------------------------------------------------------- ์ค๋ ๋ค๋ฃฐ ๋ช
๋ น์ SWP์ SWI ๋ ๊ฐ์ง์
๋๋ค. Co-Process ๋ช
๋ น์ ์ ์ธํ๋ฉด ์ด ๋ช
๋ น์ด ๋ง์ง๋ง์ด๊ฒ ๊ตฐ์. ์ฝํ๋ก์ธ์๋ ๋ค๋ฃจ์ง ์์ ์๊ฐ์ด๋. ์ฐธ ํ๊ฐ๋ถํ ๋๋์
๋๋ค. 1. Single Data Swap : <SWP>{cond}{B} Rd,Rm,[Rn] ๋ ์ง์คํฐ๋ฅผ 3๊ฐ ์ง์ ํ๋๋ก ๋์ด ์์ต๋๋ค. ์ค์ ๋์์ Rd:=[Rn], [Rn]:=Rm์ด ํ๋ฒ์ ์ผ์ด๋๋ ๋ช
๋ น์
๋๋ค. ์ฌ๊ธฐ์ ํ๋ฒ์ด๋ผ๋ ๋ง์ ํ Clock์ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋ผ, ๋ช
๋ น ๋์ค์ ์ธํฐ๋ฝํธ ๋ฑ์ ์ํด ์ค๋จ๋์ง ์๊ณ ๊ณ์ ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ B์ ๋ฏธ์ฌ๋ ๊ณ์ ๋ณด์ ์๋ฏ์ด ์๋ Operation์ด ์๋๋ผ Byte Operation์ ์๋ฏธํฉ๋๋ค. ์์ ๋ฅผ ๋ณด์ฃ . SWP r0,r1,[r2] ; r0:=[r2], [r2]:=r1 ์
๋๋ค. SWPB r2,r3,[r4] ; r2:=[r4], [r4]:=r3 ์
๋๋ค. ๋ค๋ง B๊ฐ ๋ถ์์ผ๋ฏ๋ก Bit 0์์ 7๊น์ง๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. SWPEQ r0,r0,[r1] ; Flag์ ์ํ๋ฅผ ํ์ธํ์ฌ r0์ [r1]์ ๋ด์ฉ์ ๋ฐ๊พธ๋ ํํ์
๋๋ค. ๋ณด์
จ๋ฏ์ด Rd์ Rm์ด ๊ฐ์ ์๋ ์๊ตฐ์. ํ๊ฐ์ง ๋ ์ธ๊ธํ๊ณ ์ถ์ ๊ฒ์ SWP๋ฅผ ์ธ๋งํฌ์ด ๊ตฌํ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด๋ค ๋ฌธ์์์ ๊ฐ SWP๋ช
๋ น์ด ์ธ๋งํฌ์ด๋ฅผ ๊ตฌํํ๋๋ฐ ์ ์ฉํ๋ค๊ณ ์ฝ์๋๋ฐ, ์ฒ์์๋ ์ดํด๊ฐ ์๋๋๊ตฐ์. ํ์ฐธ ๋ค์ ์ดํดํ ์ ์์์ต๋๋ค. ์ธํฐ๋ฝํธ๋ฅผ ๊ธ์ง์ํค์ง ์๊ณ Semaphore ์ฐ์ฐ์ ํ ์ ์๋ค๋ ๊ฒ์ด SWP๋ช
๋ น์ ๊ฐ์ ์
๋๋ค. ์ฌ๊ธฐ์ Semaphore๋ฅผ ์ค๋ช
๋๋ฆฌ๊ธฐ๋ ์ข ๊ทธ๋ฌ๋, ๊ฐ๋จํ ํต์ฌ๋ง ๋ง์๋๋ฆฌ๊ณ , ์ดํดํ์ค ๋ถ์ ํ์๊ณ , ์ํด๋ ๋ณ ์ ์๊ฒ ์ฃ . ๋ณดํต ์ธ๋งํฌ์ด์ p()์ฐ์ฐ์ ๊ตฌํํ๋ ์์๋ก, ๋จผ์ ์ธ๋งํฌ์ด ๋ณ์๋ฅผ ์ฝ์ด์ค๊ณ , ๋ค์์ ๋น๊ต๋ฅผ ํ์ฃ . ๊ทธ ๊ฐ์ด 0๋ณด๋ค ํฌ๋ค๋ฉด ๊ฐ์๋ฅผ ์์ผ ๋ค์ Writeํฉ๋๋ค. Test and Set ์ฐ์ฐ์ด๋ผ๊ณ ๋ ํ๋๋ฐ์. SWP๋ช
๋ น์ ์ ์ฉ์ํค๋ ค๋ฉด, [Rn]๋ถ๋ถ์ด ๋ณ์๊ฐ ๋์ด์ผ๊ฒ ๊ตฐ์. ๊ทธ๋ฌ๋ฉด Rd์๋ SWP๋ช
๋ น์ ํตํด ์ธ๋งํฌ์ด ๋ณ์ ๊ฐ์ด ๋ค์ด์ค๊ณ ์, ๋ฌผ๋ก ์ธ๋งํฌ์ด ๋ณ์์ ์ํ๋ฅผ ์์ง ๋ชปํ๋ฏ๋ก ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ์ง๋ ๋ชจ๋ฆ
๋๋ค. ๋ฐ๋ผ์ ์ด ๋จ๊ณ์์๋ ์ธ๋งํฌ์ด ๋ณ์์ ์ด๋ค ๊ฐ์ ๋ค์ Writeํด์ผ ํ ์ง๋ ๋ชจ๋ฆ
๋๋ค. ํต์ฌ์ ๋ณ์์ Write๋๋ ๊ฐ์ ๋ฌด์กฐ๊ฑด 0์ผ๋ก ์ค์ ํ๋ค๋ ๊ฒ์ด์ฃ . ์ฆ. r3๊ฐ Semaphore ๋ณ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค๊ณ ํ๊ณ , r2์ ๊ฐ์ 0์ด๋ผ๊ณ ํ๋ค๋ฉด, SWP r1,r2,[r3] ์ ๊ฐ์ ๋ช
๋ น์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์์ ๋ช
๋ น์ ํตํด ์๋ ์ธ๋งํฌ์ด ๋ณ์์ ๊ฐ์ด r1์ผ๋ก ๋ก๋๋ฉ๋๋ค. 0๋ณด๋ค ํฐ ์ง์ ์ฌ๋ถ๋ ์ด์ ๋ถํฐ ๋น๊ตํด์ผ๊ฒ ์ง์. ํ๊ฐ์ง ํน์ดํ ๊ฒ์ ์ธ๋งํฌ์ด ๊ฐ์ ์ฝ์ด์ด๊ณผ ๋์์ 0์ ๋ฃ์ด์ฃผ์๋ค๋ ๊ฒ์
๋๋ค. SWP๋ช
๋ น์ ํน์ฑ์ ์ฝ์ด์ค๋ ๋์๊ณผ 0์ ๋ฃ๋ ๋์ ์ฌ์ด์๋ ์ธํฐ๋ฝํธ ๋ฑ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ด์ , r1์ ์ธ๋งํฌ์ด ๊ฐ์ ๋น๊ตํ๋ ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๋ฉด ๋๋๋ฐ, ์ด ์์ค์ ์ธํฐ๋ฝํธ๊ฐ ๊ฑธ๋ฆฌ๊ณ ๋ค๋ฅธ Task๊ฐ ์ธ๋งํฌ์ด ๋ณ์๋ฅผ Accessํ๋ ค๊ณ ํ๋๋ผ๋ 0์ด ๋ค์ด ์์ผ๋ ์์ฐํ ๋๊ธฐ์ํ๋ก ์ธ์๋์ด ๋ ์ด์ ์งํ์ ํ์ง ๋ชปํ๊ฒ ๋ ๊ฒ์
๋๋ค. ์ด๋ฐ์๋ v()์ฐ์ฐ์์๋ ๋ญ๊ฐ ๋ ํด์ฃผ์ด์ผ ํ๊ฒ ์ง๋ง. (๊ดํ ์๊ธฐ๋ฅผ ๊บผ๋๋ ํ๋ ํํ๊ฐ ์์ตํ๋ ์ค์
๋๋ค...^^)
2. Software Interrupt : SWI{cond} <expression> SWI๋ช
๋ น์ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ ๋ช
๋ น์
๋๋ค. 8086์๋ INT ๋ช
๋ น์ด ์์ฃ ? Exception ํํธ๋ฅผ ๋ณด์๋ฉด ์ธ๊ธ์ด ์์์ต๋๋ค. SWI๋ช
๋ น์ด ๊ฑธ๋ฆฌ๋ฉด ๋์๋ชจ๋๊ฐ ๋ณํํฉ๋๋ค. Supervisor ์ํ๋ก ์ง์
์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ํน์ฑ ๋๋ฌธ์ pSOS์ ๊ฒฝ์ฐ๋ System Call์ ์ง์
๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ช
๋ น์ ํ์์ ๋ณด์๋ฉด <expression>๋ถ๋ถ์ด ์๋๋ฐ, ๋ฌด์จ ์ญํ ์ ํ๋ ๊ฒ์ผ๊น์? 8086๊ณ์ด์ฒ๋ผ INT 21H ๋๋ INT 10H ์ด๋ฐ ์์ผ๋ก ์ธ์๋ฅผ ์ฃผ๋ ๊ฒ์ผ๊น์? 8086์ด์ผ Interrupt ๋ฒกํฐ๋ฅผ ์ง์ ํ๋ ๊ฒ์ด์์ง๋ง, ARM7์๋ ํด๋น Vector๋ ๊ณ ์ ์ด ๋์ด ์์ต๋๋ค.(Software Exception ํ๊ฐ์ง๋ก) CPU๋ expression์ ๋ํ ์๋ฌด๋ฐ ์ผ๋ ํ์ง ์์ต๋๋ค. ์ค์ ๋ช
๋ น์ด ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ์ด 32๋นํธ ์ค ์์ 4๋นํธ๋ ์กฐ๊ฑด Flag์ ์ฌ์ฉ๋๊ณ , ๋ค์ 4๋นํธ๊ฐ ๋ชจ๋ 1111 ์ด๋ฉด SWI๋ช
๋ น์ผ๋ก ํ๋จ๋ฉ๋๋ค. ์ดํ 24๋นํธ๋ ์ค์ ๋ก๋ ๋ฌด์๋๋ ๋ด์ฉ์
๋๋ค๋ง... ์์ ๊ฐ์ด ์จ์ฃผ๋ฉด expression์ ๋ด์ฉ์ด SWI๋ช
๋ น์ Low 24Bit๋ถ๋ถ์ ์ธ์ฝ๋ฉ ๋ฉ๋๋ค. ํ์ง๋ง ๋ง์ ๋๋ ธ๋ฏ์ด ARM7์ SWI๋ช
๋ น์ Low 25Bit๋ด์ฉ์ด ๋ญ๋ ๊ฐ์ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค. ๊ทธ๋ผ ์ ๊ทธ๋ ๊ฒ ์ฐ๋๊ฑธ๊น์? ์์ ๋ฅผ ๋ณด๋ฉด SWI๋ช
๋ น์ ๋ง๋๋ฉด ์ํํธ์จ์ด Exception Handler๋ก ์ด๋ํ๊ณ ๋ณต๊ท๋ฒ์ง๋ r14_svc๋ก ์ ์ฅ์ด ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ Handler ๋ถ๋ถ์์ ๋ณต๊ท ๋ฒ์ง๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๋ช
๋ น์ ์ง์ ์ฝ์ด๋ค๊ฐ Low 24 Bit ๋ถ๋ถ์ ์ธ์๋ก ํด์ํด์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์
๋๋ค. ๋ฌผ๋ก ์ด๋ฐ ์ผ๋ค์ ARM7์ด ํด์ฃผ๋ ๊ฒ์ด ์๋๋ผ User๊ฐ Handler์์ ์ง์ ํ๋ก๊ทธ๋จ ํ๋ ๊ฒ์ด์ฃ . ๋ค์์ Handler ๋ถ๋ถ์ ์์ ์
๋๋ค. STMFD r13,{r0-r2,r14} LDR r0,[r14,#-4] BIC r0,r0,#0xFF000000 ... ์์์ ๋ณด์๋ฉด ๊ฒฐ๊ตญ r0์ SWI๋ช
๋ น์ low 24Bit๊ฐ ์ป์ด์ง์ฃ . ์ค๋ ๊ฐ์ข๊น์ง ๊ธธ๊ณ ๊ธธ์๋ ์ ๋ง ๊ธธ์๋ ARM Instruction ๋ถ๋ถ์ ๋๋์ต๋๋ค. ๊ณํํ๋ ๋ถ๋์ 3ํ์๋๋ฐ... ๊ฒฐ๊ตญ 8ํ ๋ถ๋์ผ๋ก ๋์ด๋๊ณ ๋ง์๊ตฐ์. ์ด๊ฒ์ ๊ฒ ํํ๊ฐ ๋ง์๋ ๋ถ๋ถ์ด์์ต๋๋ค. ์ด๋ ๊ฒ ์ ๋ ๊ฒ ์์ ํ๋ฏ์ด ์ฌ๊ธฐ๊น์ง ํด์น์ฐ๊ณ ๋... ๋ค์์ ๋ฌด์์ ์จ์ผ ํ ์ง... ๊ณ ๋ฏผ์ ํ๊ฒ ๋๋๊ตฐ์. ๋ญ๊ฐ ๋์๋ ๋ค์ ๊ฐ์ข๋ก ARM7 ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค. (๋ง์์ ์ค๋น๋ฅผ...^^) ๊ทธ๋ผ ์ด๋ง. -------------------------------------------------------------------- ARM7 ๊ฐ์ข [15] : ์ต์ข
ํ -------------------------------------------------------------------- ๋๋์ด ARM7๊ฐ์ข ์ต์ข
ํ๋ฅผ ์ฐ๊ฒ ๋์์ต๋๋ค. ์ ๊ฐ ARM7์ ๊ธฐ์ค์ผ๋ก ๊ฐ์๋ฅผ ํด ์์ง๋ง, ์ค์ ๋ก ์ฌ์ฉํ๋ CPU๋ StrongARM์ด์์ต๋๋ค. ๊ทธ๋์, ์ค๋์ StrongARM SA1100์ ๋ํด์ ๊ฐ๋จํ ๋งํด ๋ณด๊ณ ์ ํฉ๋๋ค.(์ฌ์ค ๋ณ๋ก ์๋ ๊ฒ๋ ์์ง๋ง..) ๋ฌผ๋ก ์์ธํ Spec์ ๋ฉ๋ด์ผ์ ํตํด ์ดํผ์๋ ๊ฒ์ด ๋ ์ ํํ ํ
๋๊น ์ ๊ฐ ๋ง์๋๋ ค๋ด์ผ ๋ณ ์๋ฏธ๊ฐ ์์ ๋ฏ ํ๊ณ . ๊ทธ๋ฅ StrongARM์ ์ฌ์ฉํ๋ฉด์ ์ธ์๊น์๋ ์ ์ ๋ช ๊ฐ์ง ๋ง์๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ๊ฐ์ฅ ์ค์ํ ์ ์ผ๋ก ์๊ฐ๋๋ ๊ฒ์ CPU ๋์์๋๊ฐ 200MHz์ ๋๊น์ง๋ฅผ ์ง์ํ๋ค๋ ์ ์
๋๋ค. ์ด์ ์ ์ ํ๋ Embedded CPU ๊ฐ ๋นจ๋ผ์ผ 50MHz์ด์๋ ๊ฒ์ ๊ฐ์ํ๋ค๋ฉด, ์ฐธ ๋น ๋ฅธ CPU์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ์นฉ์ ์ ๊ธฐํ๊ฒ๋ ์ด์ด ๋ณ๋ก ์๋๋ค๋ ๊ฒ์ด ๋ํ ์ธ์์ ์
๋๋ค. ๋ณด๋๋ฅผ ๋ช ์ผ์ฉ ์ผ ๋์๋ ์์ ์ ์ด๊ณ , ๋ถ์ํ์ง๊ฐ ์๋๊ตฐ์. ์๋ ์ AMD188์ ์ฌ์ฉํ ๋์๋ ์ ์๋ง ์ผ ๋์๋ ๋ณด๋๊ฐ ๋
น์๋๋ ๊ฒ์ด ์๋์ง ์ผ๋ง๋ ๋ถ์ํ๋์ง ๊ทธ๋งํผ ์ ๋ ฅ ์๋ชจ๋ ์๋ค๋ ๋ป์ด๊ฒ ์ง์. ๋ ๋ฒ์งธ๋ก๋ LCD ์ปจํธ๋กค๋ฌ๊ฐ ๋ด์ฅ๋์ด ์์ด์ 1024*1024์ ํด์๋๊น์ง ์ง์ํ๊ณ , ์ปฌ๋ฌ๋ 3๋ง ์ปฌ๋ฌ๊น์ง ์ง์ํฉ๋๋ค. ์ญ์ ์ผ๋ฐ On-Board์นฉ๊ณผ ๋น๊ตํ ๋งํ ์ผ์ ๋ชป๋๊ฒ ์ง๋ง, ๊ทธ๋ฐ ์นฉ๋ง ๋ค๋ฃจ์๋ ์ ๊ฒ๋ ์ฐธ ํ๋ญํ ์ผ์ด์์ต๋๋ค. SA1100 ๋ณด๋์ 640*480 TFT LCD๊ฐ ๋ฌ๋ ค์์๋๋ฐ, ๊ฑฐ๊ธฐ์ ๊ณ ์์ ์ฌ์ง์ ๋์๋๊ณ ์ผ๋ง๋ ํ๋ญํดํ๋์ง...^^ ์ธ ๋ฒ์งธ ์ธ์ ๊น์๋ ๊ฒ์ MMU ์
๋๋ค. ํ๊ต ๋ค๋ ๋ OS ์์
์๊ฐ์๋ ๋ค์ด๋ดค๋ MMU๋ผ๋ ๊ฒ์, ์ง์ ํ๋ก๊ทธ๋จ ํด์ผ ํ์ผ๋๊น์. ๋์ค์ ์ฐจ์ฐจ ์๊ฒ๋ ์ฌ์ค์ด์ง๋ง, ์ด MMU๊ฐ ์๋์ง์ ์ฌ๋ถ๊ฐ Linux์ ๊ฐ์ OS๋ฅผ ํฌํ
ํ ๊ฒฝ์ฐ์๋ ๋ฌด์ฒ ์ค์ํ๋ค๊ณ ํ๊ตฐ์. StrongARM์ ๊ฒฝ์ฐ๋ Two-Level Virtual Memory๋ฅผ ์ง์ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ 400H Byte๋จ์๋ก, ์ต๋ 1Mega Byte๋จ์๋ก ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ฐ์๋ GPIO์์ Edge Detect Interrupt๊ธฐ๋ฅ์ ์ง์ํ๋ค๋ ์ฌ์ค๊ณผ, PCMCIA์ ๊ฐ์ ๊ฐ์ข
์ฃผ๋ณ์ฅ์น๋ฅผ ์ง์ํ๋ค๋ ๊ฒ ๋ฑ. StrongARM์ Embedded CPU ๋ณด๋ค๋ PC์ฉ CPU์ ๊ทผ์ ํ๋ค๋ ๋๋์ด ๋ค์๊ณ . ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ฎ์ ์ ๋ ฅ์๋ชจ ๋๋ฌธ์ธ์ง Embedded์ฉ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ARM7๊ฐ์ข๋ฅผ ํ๋ฉด์ ๊ฐ๋ฐํ๊ฒฝ์ ๋ํด์ ๊ถ๊ธํดํ์๋ ๋ถ๋ค์ด ๊ณ์
จ์ต๋๋ค. "ARM7์ ๊ณต๋ถํด ๋ณด๊ณ ์ถ์๋ฐ ๋ณด๋๊ฐ ์๋ค"... ๋ผ๋ ๊ฐ ํ๋ ์์. ๊ทธ๋ ๊ฒ ๋ณด๋ฉด ์ ๊ฐ ์ด์ด ์ข์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ์ ์ ๋ง ํ๋ฅญํ ๋ณด๋๊ฐ ์์๊ฑฐ๋ ์. ๋ฌผ๋ก ์ ํ์ ์ํด ์ฌ์ฉ๋๋ ๋ณด๋์๊ธฐ๋ ํ์ง๋ง... LCD์ Keyboard, ์นด๋ฉ๋ผ ๊น์ง ๋ฌ๋ฆฐ ๋ณด๋์๊ณ , ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ์ Flash๊น์ง ์์์ผ๋๊น์... ์ฌ์ค ์ฌ์ ํ ARM์ ๊ณต๋ถํ๊ธฐ ์ํ ๋ณด๋๋ฅผ ์ฐพ๊ธฐ๋ ์ฌ์ด ์ผ์ด ์๋ ๊ฒ ๊ฐ๋๊ตฐ์. ์ ๋ ์ธ์ ๊ฐ๋ StrongARM๋ณด๋๋ฅผ ๋ง๋ค์ด ๋ณด๋ฆฌ๋ผ ์๊ฐํ์์ง๋ง. ๊ทธ๊ฒ ๊ทธ๋ฆฌ ๋ง๋ง์น ์์ ์ผ์ด์๊ณ . ์์ผ๋ก๋ ๊ฐ๋ฅํ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ณ๋ก ํ ๋ง๋ ์์ผ๋ฉด์ ๊ฐ์ข๋ฅผ ์ฐ๋ ค๋ ์ด์ํ ๋ง๋ง ๋์ค๋๊ตฐ์... ๋ชจ๋์๊ฒ ๊ฐ์ฌํ ๋ง์๊ณผ ์ฃ์กํ ๋ง์์ ๊ฐ๊ณ ์์ต๋๋ค. ์ฌ์ค ์์ํ ๋์ ๋ง์๊ฐ์ง์ ๋๊ฐ์ง ๊ฐ์ง๊ณ ๊ฐ์ง ๋ชปํ๋ ๊ฒ๋.. ๊ทธ๋ ๊ณ .. ์ด๋ ๊ฒ ๊ฐ์ข๋์ ํํผ ์๋ฆฌ๋ฅผ ์ฐ๊ณ ์๋ ๊ฒ๋ ๊ทธ๋ ๊ณ .. ๊ฐ์ข๋ฅผ ํด ์ค๋ฉด์, ์ ๋ง ๋ง์ด ์๊ณ , ์ ํ์๋ ๋ถ๋ค์ด ์ฐธ ๋ง๊ตฌ๋ ํ๋ ์๊ฐ์ ํ์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๋นํ๋ฉด ์ด์ ๋ง ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋ ์ ๊ฐ ์ด๋ฐ ๊ฐ์ข๋ฅผ ์ฃผ์ ๋๊ฒ ์์ํ๊ตฌ๋ ํ๋ ํํ๋ ๋ค์๊ณ ์. ๋ถ๋๋ฌ์ด ์๊ฐ๋ ๋ง์ด ๋ค์์ต๋๋ค. ๊ทธ๋์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๋ค์ ํ๋ฒ ๊ฐ์ฌ ๋๋ฆฌ๋ฉด์ ARM7 ๊ฐ์ข๋ฅผ ์ด๋ ๊ฒ ์ ๋ฆฌํ ๊น ํฉ๋๋ค. ๊ทธ๋ผ ์ด๋ง. |