[์ด์ ๋ธ๋ฆฌ์ด] ๋ ์ง์คํฐ
- -
์ค๋์ ๋ ์ง์คํฐ์ ๋ํ ํฌ์คํ ์ ํด๋ณด๋ ค๊ณ ํด์.
์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ฉด ax,ah ๋ฑ ๋ง์ ๋ ์ง์คํฐ๋ค์ด ๋ฑ์ฅ์ ํ๋๋ฐ,
์ ๋ ์ด ๋ ์ง์คํฐ๊ฐ ๋ฌด์์ธ์ง ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๊ณ ์์๊ธฐ๋๋ฌธ์
์ ๊ฐ ์๋ฒฝํ ์๊ณ ์ ์ด๊ธ์ ํฌ์คํ ํ๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ผ ๋ ์ง์คํฐ๊ฐ ๋ฌด์์ธ์ง ์ ์,์ข ๋ฅ๋ฑ์ ์ ๋๋ก ํ์ ํด๋ด ์๋ค!๐โ๏ธ๐โ๏ธ
๋ ์ง์คํฐ๋?
๋ ์ง์คํฐ(processor register) ๋ ์ปดํจํฐ์ ํ๋ก์ธ์ ๋ด์์ ์๋ฃ๋ฅผ ๋ณด๊ดํ๋ ์์ฃผ ๋น ๋ฅธ ๊ธฐ์ต ์ฅ์์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ฌ ๊ณ์ฐ์ ์ํ์ค์ธ ๊ฐ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๋ ์ง์คํฐ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ์ต์์์ ์์นํ๋ฉฐ, ๊ฐ์ฅ ๋น ๋ฅธ ์๋๋ก ์ ๊ทผ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ์ต์ ํ๋ก์ธ์์์ ๋ ์ง์คํฐ๋ ๋๊ฐ ๋ ์ง์คํฐ ํ์ผ๋ก ๊ตฌํ๋์ง๋ง, ๊ณผ๊ฑฐ์๋ ํ๋ฆฝํ๋กญ, ๋ง๊ทธ๋คํฑ ์ฝ์ด, ๋ฐ๋ง ํ๋ฆ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ผ๋ก ๊ตฌํ๋๊ธฐ๋ ํ๋ค.
๋๋ถ๋ถ์ ํ๋ ํ๋ก์ธ์๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ํ ๊ทธ ๋ด์ฉ์ ๋ค์ ๋ ์ง์คํฐ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ์ฅํ๋ ๋ก๋-์คํ ์ด ์ค๊ณ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ์ถ์ฒ : ๊ตฌ๊ธ ์ํค๋ฐฑ๊ณผ
๋ ์ง์คํฐ ๋ฐ์ดํฐ ๋จ์
- BIT : ๋ฐ์ดํฐ๋ฅผ ํํํ ์ ์๋ ๊ฐ์ฅ ์์ ๋จ์. (0๊ณผ 1๋ก ๊ตฌ๋ถ๋จ)
- BYTE : 8๊ฐ์ Bit๊ฐ ๋ชจ์ด๋ฉด 1byte๋ผ๊ณ ๋ถ๋ฅธ๋ค 0xFF(255)๊น์ง ํํ์ด ๊ฐ๋ฅํ๋ค.
- WORD : 2๊ฐ์ byte๊ฐ ๋ชจ์ด๋ฉด ์๋๋ผ ๋ถ๋ฅธ๋ค. 0xFFFF(65535)๊น์ง ํํ์ด ๊ฐ๋ฅํ๋ค.
- DOUBLE WORD(=DWORD) : 2๊ฐ์ word๊ฐ ๋ชจ์ด๋ฉด ๋๋ธ์๋๋ผ ํํ, 0xFFFFFFFF(์ฝ 42์ต) ๊น์ง ํํ์ด ๊ฐ๋ฅํจ
- QWORD(qword) : 64bit ์ฆ 8byte๋ฅผ ํํ
๋ ์ง์คํฐ์ ์ข ๋ฅ [ํฌ๊ฒ ๋ถ๋ฅํ ๋]
๋ฐ์ดํฐ ๋ ์ง์คํฐ | ์ ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ๋ ์ง์คํฐ. |
์ฃผ์ ๋ ์ง์คํฐ | ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ. ์ด๋ค ํ๋ก์ธ์์์๋, ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ์กฐ์ํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์์ธ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค. |
๋ฒ์ฉ ๋ ์ง์คํฐ | ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ๋ชจ๋ ์ ์ฅํ ์ ์๋ ๋ ์ง์คํฐ. |
๋ถ๋ ์์์ ๋ ์ง์คํฐ | ๋ง์ ์์คํ ์์ ๋ถ๋์์์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. |
์์ ๋ ์ง์คํฐ | 0์ด๋ 1 ๋ฑ ๊ณ ์ ๋ ๊ฐ์ ์ ์ฅํ๊ณ ์๋ ๋ ์ง์คํฐ. |
ํน์ ๋ ์ง์คํฐ | ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ์ ์ฅํ๋ค. ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ์คํ ํฌ์ธํฐ, ์ํ ๋ ์ง์คํฐ ๋ฑ์ด ์๋ค. |
๋ช ๋ น ๋ ์ง์คํฐ | ํ์ฌ ์คํ์ค์ธ ๋ช ๋ น์ด๋ฅผ ์ ์ฅํ๋ค. |
์์ธ ๋ ์ง์คํฐ | ์คํ์ค์ ํผ์ฐ์ฐ์์ ์ฃผ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. |
๊ทธ์ธ์ ๋ ์ง์คํฐ๋ค [์ธ๋ถ์ฌํญ]
ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ํ๋ก๊ทธ๋จ ๊ณ์๊ธฐ | ๋ค์๋ฒ์ ์คํํ ๋ช ๋ น์ด์ ๋ฒ์ง๋ฅผ ๊ธฐ์ตํ๋ ๋ ์ง์คํฐ๋ก ๋ถ๊ธฐ ๋ช ๋ น์ด ์คํ๋๋ ๊ฒฝ์ฐ ๊ทธ ๋ชฉ์ ์ง ์ฃผ์๋ก ๊ฐฑ์ ๋๋ค |
๋์ฐ๊ธฐ | ์ฐ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๋ ๋ ์ง์คํฐ๋ก ์ฐ์ฐ์ ์ค์ฌ์ด ๋๋ ๋ ์ง์คํฐ |
์ํ ๋ ์ง์คํฐ(Status Register), ํ๋๊ทธ ๋ ์ง์คํฐ |
์ค๋ฒํ๋ก, ์ธ๋ํ๋ก, ์๋ฆฌ์ฌ๋ฆผ, ๊ณ์ฐ์ํ, ์ธํฐ๋ฝํธ ๋ฑ์ PSW๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ ์ง์คํฐ |
์ํํธ ๋ ์ง์คํฐ |
์ ์ฅ๋ ๊ฐ์ ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ผ๋ก 1Bit์ฉ ์๋ฆฌ๋ฅผ ์ด๋์ํค๋ ๋ ์ง์คํฐ์ด๋ฉฐ 2๋ฐฐ ๊ธธ์ด ๋ ์ง์คํฐ๋ผ๊ณ ํจ |
๋ฐ์ดํฐ ๋ ์ง์คํฐ |
์ฐ์ฐ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ตํ๋ ๋ ์ง์คํฐ์ ๋๋ค. |
๋ฉ์ด์ ์คํ ์ดํฐ์ค ๋ ์ง์คํฐ(Major Status Register) |
CPU์ ๋ฉ์ด์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ ์ง์คํฐ์ ๋๋ค. (๋ฉ์ด์ ์ํ๋ CPU์ ํ์ฌ ์ํ๋ฅผ ๋งํ๋๊ฒ์ผ๋ก ์ธ์ถ, ๊ฐ์ , ์คํ, ์ธํฐ๋ฝํธ ์ํ๊ฐ ์๋ค) |
๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ ์ง์คํฐ | ๊ธฐ์ต์ฅ์น๋ฅผ ์ถ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ ๊ธฐ์ต๋๋ ๋ ์ง์คํฐ๋ก CPU๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ๋ฐ๋์ ๊ฑฐ์ณ์ผ ํ๋ ๋ ์ง์คํฐ |
๋ฒ ์ด์ค ๋ ์ง์คํฐ | ๋ช ๋ น์ด ์์๋๋ ์์ ๋ฒ์ง๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ ๋ ์ง์คํฐ |
์ธ๋ฑ์ค ๋ ์ง์คํฐ | ์ฃผ์์ ๋ณ๊ฒฝ, ์๋ธ๋ฃจํด ์ฐ๊ฒฐ ๋ฐ ํ๋ก๊ทธ๋จ์์์ ๋ฐ๋ณต ์ฐ์ฐ์ ํ์๋ฅผ ์ธ๋ ๋ ์ง์คํฐ์ด๋ฉฐ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ค |
์์ ์ ์ด๋์ ๋ ์ง์คํฐ์ธ์๋ ์ ๋ง ๋ค์ํ ๋ ์ง์คํฐ๊ฐ ์กด์ฌํ๋๋ฐ
์ค์ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ๋ ์ง์คํฐ๋
๋ฒ์ฉ ๋ ์ง์คํฐ, ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ, ์ปจํธ๋กค ๋ ์ง์คํฐ 3๊ฐ์ง๋ผ๊ณ ํฉ๋๋ค.
(์ด ์ธ๊ฐ ์ธ์ ์์ฃผ ๋ฑ์ฅํ๋ "E-flag ๋ ์ง์คํฐ")
๋๋จธ์ง ๋ ์ง์คํฐ๋ค์ ๊ทนํ ๋น๋๊ฐ ๋ฎ๊ฑฐ๋ ์ฌ์ฉํ ์ผ์ด ์๋ ๋ ์ง์คํฐ๋ค์ด๋ผ๊ณ ํ๋ค์!
ํ์ง๋ง ์ ๋ ์ด์ค์์ ๋ฒ์ฉ ๋ ์ง์คํฐ์ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ง ์์๋ณผ ๊ฒ์ ๋๋ค!
๋๋จธ์ง ํ์ํ ๋ถ๋ถ์ ๋ฐ๋ก ๋ ๊ณต๋ถํด๋ณด๋ ค๊ตฌ์ ใ ใ ์์ง ์ค๋ช ํ ๋ฅ๋ ฅ์ด ๋ง์ด ๋ถ์กฑํ ๊ฒ ๊ฐ๋ค์..
๊ทธ๋ผ ์์ํ๊ฒ ์ต๋๋ค.
1. ๋ฒ์ฉ ๋ ์ง์คํฐ(General Purpose Register)
๋ฒ์ฉ๋ ์ง์คํฐ๋ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ๋ชจ๋ ์ ์ฅํ ์ ์๋ ๋ ์ง์คํฐ๋ก ๊ฐ์ฅ ์์ฃผ ์ฐ์ด๋ฉฐ, ๊ฐ์ฅ ํํ ๋ ์ง์คํฐ ์ ๋๋ค.
์์๋ ์ฃผ์๋ฅผ ์ ์ฅํ ๋ ์ฐ์ด๊ธฐ๋ ํ๊ณ ํน์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ์ฃ .
(๋ฒ์ฉ ๋ ์ง์คํฐ๋ ์ด์์ฒด์ ๋ชจ๋ ๋ณ๋ก ๊ฐฏ์์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค๊ณ ํ๋ค.)
์์ ์ฌ์ง์์ ๋ณด๋ฉด ์ด๋ ค์์ ์ดํด๊ฐ ์ ์๋์ค ๊ฒ ๊ฐ์ ์์ธํ ์๋ ๊ทธ๋ ค๋ดค์ต๋๋ค.
๋จผ์ ์์ ์ฌ์ง์ ๋ฒ์ฉ ๋ ์ง์คํฐ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ์ ๋๋ค. (IA-32e ๋ชจ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค,)
๊ทธ์ค ์ ๊ฐ ๋นจ๊ฐ์์ผ๋ก ๋ค๋ชจ ํ์๋ฅผ ํด๋ ๊ฒ์ด "์ฐ์ ์ฐ์ฐ ๋ ์ง์คํฐ" ์ ๋๋ค.
๊ทธ ๋ฐ์ ์ฃผํฉ์ ํ์๋ "์ธ๋ฑ์ค ๋ ์ง์คํฐ" ์ด๊ณ
๋ ธ๋์ ํ์๋ "ํฌ์ธํฐ ๋ ์ง์คํฐ" ์ ๋๋ค.
์ด๋ ๊ฒ ๋ณด์๋ฉด ์กฐ๊ธ ๋ ์ดํด๊ฐ ์ ๋์์ฃ !?
๊ฐ ๋ ์ง์คํฐ์ ๊ธฐ๋ฅ์ ๋ํด ํ๋์ ๋ณด๊ธฐ ํธํ๋๋ก ํ๋ก ์์ฑํด ๋ณด์์ด์,
1-1) ์ฐ์ ์ฐ์ฐ ๋ ์ง์คํฐ
1-2) ์ธ๋ฑ์ค ๋ ์ง์คํฐ
1-3) ํฌ์ธํฐ ๋ ์ง์คํฐ
์ด๋ ๊ฒ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ฅผ ์์๋ณด์๋๋ฐ
๋ฒ์ฉ๋ ์ง์คํฐ๋ ์ด์ ๋ชจ๋์ ๋ฐ๋ผ ์ผ์ ํ ๊ท์น์ ๊ฐ์ง๋ฉฐ ์ฌ์ฉ๋ฉ๋๋ค.
(์ ๋์ฌ) R = 64bit
(์ ๋์ฌ) E = 32bit
//x84-64ํ๋ก์ธ์์์ ์ถ๊ฐ๋ ๋ฒ์ฉ ๋ ์ง์คํฐ๊ฐ ์๋ค๊ณ ํ๋ ์์ธํ ๊ณต๋ถํด๋ณด๊ณ ์ถ์ผ์ ๋ถ๋ค์ ๋ ์์๋ด์ฃผ์ธ์!
๋ค์์ผ๋ก๋ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
2. ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ(Segment Register)
์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ํํํ๊ธฐ ์ํด,
์ธ๊ทธ๋จผํธ ๋์คํฌ๋ฆฝํฐ ํ ์ด๋ธ(GDT, Global Descriptor Table์ ์กด์ฌ)์ ์์น๋ฅผ ๋ํ๋ ๋๋ค!
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณํํ ๋ ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค. (++์ ๊ทผ ๊ถํ ๊ธฐ๋ฅ ์ถ๊ฐ๋จ)
์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ ํธํ์ฑ์ ์ํด 16bit๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ค์:: ํ์ฅ ํ์ง ์๊ณ !
ํ์ฌํผ!
์ด ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ 6๊ฐ์ ์ข ๋ฅ๋ก ์ด๋ฃจ์ด์ ธ์๋๋ฐ
๋ชจ๋ ๊ณตํต์ ์์๋ก index์ Tl, RPL๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
2-1) ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ ์ข ๋ฅ
์ด๋ ๊ฒ ๊ฐ ๋ ์ง์คํฐ์ ์ญํ ์ ์ ์ด๋์์ต๋๋ค.
์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ ์ธ๊ทธ๋จผํ ์ด์ ๊ณผ ๊ด๋ จ์ด ์๋ค๊ณ ํ๋๋ฐ ๊ทธ๊ฑด ๋ค์์ ํฌ์คํ ํด๋ณผ๊ป์ใ ใ
์ฌ๊ธฐ๊น์ง! ์ค๋์ ๋ ์ง์คํฐ๋ฅผ ์์๋ณด์๋๋ฐ์!
๋ ์ง์คํฐ๋ ๋๋ฌด ๊น์ ํ๋ฌธ์ธ ๊ฒ...๊ฐ์์
์ด๋ป๊ฒ ์ด๋ฆฌ ์์ด ๋ง์์ง..^^
๋ค๋ค ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋์ฉ ๊ณต๋ถํด๋ด ์๋ค.!
'Languages > Assembly' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์ ๋ธ๋ฌ, gccํ๊ฒฝ ๊ตฌ์ฑํ๊ธฐ (0) | 2020.09.10 |
---|---|
[์ด์ ๋ธ๋ฆฌ์ด] ์ฌ์น์ฐ์ฐ ๊ณ์ฐ๊ธฐ (2) | 2020.04.20 |
[์ด์ ๋ธ๋ฆฌ์ด] ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ๋ชจ์ต (2) | 2020.04.11 |
[์ด์ ๋ธ๋ฆฌ์ด] ๊ธฐ์ด์ค์ต_๋ณ์, ๋ฐฐ์ด (0) | 2020.04.11 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค