Previous chapter
Internal Representaion of Instruction
๊ฑฐ์ ๋ชจ๋ ๋ช
๋ น์ด๊ฐ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ ์ง์คํฐ์ ์ด๋ฆ์ ์ซ์๋ก ๋งคํํด์ค์ผ ํ๋ค.
โข
$s0~$s7 : 16~23์ผ๋ก, $t0~$t7 : 8~15๊น์ง๋ก ๋งคํํ๋ค.
add $t0, $s1, $s2
Assembly
๋ณต์ฌ
์ญ์ง์ ํํ์ ๋ค์๊ณผ ๊ฐ๋ค.
0 17 18 8 0 32
๋ช
๋ น์ด์ ๊ฐ ๋ถ๋ถ์ ํ๋(field)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฒ์๊ณผ ๋ง์ง๋ง ํ๋๋ ๋ง์
์ ์ง์ํ๋ ํ๋๋ค.
๋๋ฒ์งธ๋ t0, ์ธ๋ฒ์งธ๋ t1, ๋ค๋ฒ์งธ๋ t2, ๋ค์ฏ๋ฒ์งธ๋ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก 0์ ์ฌ์ฉํ๋ค.
์ด ๋ช
๋ น์ฌ์ ๊ฐ ํ๋๊ฐ์ ๋ฐ์ด๋๋ฆฌ ๋นํธ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
000000 10001 10010 01000 00000 100000
์ ๋ ์ด์์์ ๋ช
๋ น์ด ํ์(instruction format)์ด๋ผ๊ณ ํ๋ค. MIPS ์ธ์คํธ๋ญ์
์ ๊ธธ์ด๋ ๋ฐ์ดํฐ ์๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น ์ง์์ด 32๋นํธ์ด๋ค.
๋น๋ถ๊ฐ ๊ธด ์ด์ง์๋ฅผ ์ฝ๊ณ ์ฐ๋ ์์
์ด ๋ถ๊ฐํผํ ๊ฒ์ผ๋ก ๋ณด์ด๋, ๋ชจ๋ ์ปดํจํฐ์ ๋ฐ์ดํฐ๋ 4์ ๋ฐฐ์ ๊ธธ์ด์ด๋ฏ๋ก Hexadecimal์ ์ฌ์ฉํ์ฌ ์๋ฅผ ํ๋จ๊ณ ์ถ์ํํ ์ ์๋ค.
MIPS Instruction Fields
MIPS์ ๊ฐ ๋ช
๋ น์ด์ ๊ฐ ํ๋์๋ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ด ๋ถ์ด์๋ค.
โข
op : ๋ช
๋ น์ด๊ฐ ์คํํ ์ฐ์ฐ์ ์ข
๋ฅ๋ก์ ์ฐ์ฐ์(opcode)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
โข
rs : ์ฒซ๋ฒ์งธ ์์ค(source) ๋ ์ง์คํฐ(register)
โข
rt : ๋๋ฒ์งธ ์์ค(source) ๋ ์ง์คํฐ(register)
โข
rd : ๋ชฉ์ ์ง(destination) ๋ ์ง์คํฐ(register). ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ ๊ธฐ์ต๋๋ค.
โข
shamt : ์๋ฆฌ์ด๋๋(shift).
โข
funct : ๊ธฐ๋ฅ(function). opํ๋์์ ์ฐ์ฐ์ ์ข
๋ฅ๋ฅผ ํ์ํ๊ณ funct ํ๋์์ ํ ์ฐ์ฐ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ง์ ํ๋ค.
์ด๊ฒ๋ณด๋ค ํ๋ ๊ธธ์ด๊ฐ ๋ ๊ธธ์ด์ผ ํ ๊ฒฝ์ฐ ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ธธ๊น?
lw๋ ๋ ์ง์คํฐ ํ๋ 2๊ฐ์ ์์ ํ๋ ํ๋๊ฐ ํ์ํ๋ค. ์ด๋ ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ์ฃผ์๋ก๋ถํฐ ์ต๋ 31๊น์ง๋ฐ์ ์ ๊ทผํ ์ ์๋ค. 5๋นํธ ํ๋๋ก๋ ๋ถ์กฑํ๋ค.
์ด๋ฐ ๋ฌธ์ ๋๋ฌธ์ ๋ชจ๋ ๋ช
๋ น์ด์ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ํ๊ณ ์ถ์ ์๊ฐ๊ณผ ๋ช
๋ น์ด ํ์์ ํ๊ฐ์ง๋ก ํต์ผํ๊ณ ์ถ์ ์๊ฐ ์ฌ์ด์ ์ถฉ๋์ด ์๊ธด๋ค.
๋ง์ง๋ง ํ๋์จ์ด ์ค๊ณ์์น์ ์ฌ์ฉ ๊ฐ์ง๊ณ ์ค์.
์ข์ ์ค๊ณ์๋ ์ ๋นํ ์ ์ถฉ์ด ํ์ํ๋ค.
MIPS๊ฐ ์ ํํ ๋ฐฉํฅ์ ๋ชจ๋ ๋ช
๋ น์ด์ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ํ๋, ๋ช
๋ น์ด์ ์ข
๋ฅ์ ๋ฐ๋ผ ํ์์ ๋ค๋ฅด๊ฒ ํ๋ ๊ฒ์ด๋ค.
ํด๋น ๋ฐฉ์์ R(Register)ํ์
์ด๋ผ ํ๋ฉฐ, ์ด๊ฒ๋ง์ผ๋ก๋ ๋ถ์ถฉ๋ถํ์ฌ Iํ์
์ ๋ง๋ค์๋ค.
Iํ์
์ ์์น์ฐ์ฐ, ๋ฐ์ดํฐ ์ ์ก ๋ช
๋ น์ด์์ ์ฌ์ฉ๋๋ฉฐ ๋ชจ์์ ์์ ๊ฐ๋ค.
์์๋ ์ฃผ์๊ฐ 16๋นํธ์ด๋ฏ๋ก ์ด์ lw๋ช
๋ น์ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก +-32768๋ฐ์ดํธ๋งํผ ์ง์ ํ ์ ์๊ฒ ๋๋ค.
lw $t0, 32($s3)
Assembly
๋ณต์ฌ
์ฌ๊ธฐ์ rsํ๋์ s3์ด ๋ค์ด๊ฐ๋ฉฐ, rtํ๋์๋t0, ์ฃผ์ํ๋์๋ 32๊ฐ ๋ค์ด๊ฐ๋ค.
Iํ์
์์๋ rt๊ฐ ์ ์ฌ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ ๋ชฉ์ ์ง ๋ ์ง์คํฐ ๋ฒํธ๋ฅผ ํ์ํ๋ ๊ฒ์ผ๋ก ๋ฐ๋์๋ค.
๋ช
๋ น์ด ํ์์ด ์ฌ๋ฌ๊ฐ๋ก ๋๋๋ฉด ํ๋์จ์ด์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ์ง๋ง, ๋ชจ๋ ํ์์ ๋น์ทํ๊ฒ ํ์ฌ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.
Rํ์
๊ณผ Iํ์
์ ์ฒ์ ์ธ ํ๋๋ ์ด๋ฆ๊ณผ ํฌ๊ธฐ๊ฐ ๊ฐ์ผ๋ฉฐ, Iํ์
์ ๋ค๋ฒ์งธ ํ๋ ๊ธธ์ด๋ Rํ์
์ ๋๋จธ์ง ์ธ ํ๋ ๊ธธ์ด๋ฅผ ๋ํ ๊ฒ๊ณผ ๊ฐ๋ค.
๋ช
๋ น์ด ํ์
์ ์ฒซ๋ฒ์งธ ํ๋์ ๊ฐ์ผ๋ก ๊ตฌ๋ถ์ด ๊ฐ๋ฅํ๋ค. ํ์๋ณ๋ก opํ๋๊ฐ ๊ฐ์ง๋ ๊ฐ์ด ๋ค๋ฅด๋ฏ๋ก ํ๋์จ์ด๋ opํ๋๋ฅผ ๋ณด๊ณ ๋ช
๋ น์ด์ ์ค๋ฅธ์ชฝ ์ ๋ฐ์ ์ด๋ป๊ฒ ํด์ํ ์ง ๊ฒฐ์ ํ๋ค.
Logical Operator
์ด๊ธฐ ์ปดํจํฐ๋ ์๋ ์ ์ฒด์ ๋ํ ์ฒ๋ฆฌ์๋ง ๊ด์ฌ์ ๊ฐ์ก์ผ๋, ์๋ ๋ด ์ผ๋ถ ๋นํธ๋ค์ ๋ํ ์ฒ๋ฆฌ์๋ง ๊ด์ฌ์ ๊ฐ์ก์ผ๋, ์๋ ๋ด ์ผ๋ถ ๋นํธ๋ค์ ๋ํ ์ฐ์ฐ, ์ฌ์ง์ด๋ ๊ฐ๊ฐ ๋นํธ์ ๋ํ ์ฐ์ฐ๋ ํ์ํ๋ค๋ ๊ฒ์ด ๊ณง ๋ช
๋ฐฑํด์ก๋ค.
Shift
์๋ ๋ด์ ๋ชจ๋ ๋นํธ๋ฅผ ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํค๊ณ , ์ด๋ ํ ๋น์๋ฆฌ๋ 0์ผ๋ก ์ฑ์ด๋ค.
sll $t2, $s0, 4 #reg $t2 = reg $s0 << 4 bits
srl $t2, $s0, 4 #reg $t2 = reg $s0 >> 4 bits
Assembly
๋ณต์ฌ
์ํํธ ์ฐ์ฐ์๋ Rํ์
๋ช
๋ น์ด์ด๋ค. ํน์ดํ๊ฒ๋, shamt๋ฅผ ์ฌ์ฉํ๋ฉฐ, rs๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
sll ๋ช
๋ น์ ๋ ๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์๋ค. ์ผ์ชฝ์ผ๋ก i๋นํธ ์๋ฆฌ์ด๋ํ๋ฉด 2^i๋ฅผ ๊ณฑํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋๋ค.
AND OR NOT NOR
and $t0, $t1, $t2
or $t0, $t1, $t2
nor $t0, $t1, $t2
Assembly
๋ณต์ฌ
Next chapter