๐Ÿ’ป/CS

[์ž„๋ฒ ๋””๋“œ] MIPS ๋ช…๋ น์ฒด๊ณ„

ruhz 2020. 10. 22. 02:29

๋ช…๋ น์–ด ์ง‘ํ•ฉ

๋ช…๋ น์–ด๋Š” ์ปดํ“จํ„ฐ์—๊ฒŒ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ์–ธ์–ด์ด๋‹ค. ๋ชจ๋“  ์ปดํ“จํ„ฐ๋Š” ์‹œํ‚ค๋Š” ์ผ์€ ๋น„์Šทํ•˜์ง€๋งŒ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋Š” ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ๋งˆ๋‹ค ๋ช…๋ น์–ด๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ปดํ“จํ„ฐ์˜ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๋ช…๋ น์–ด๋ฅผ ๋” ์ƒ์„ธํ•˜๊ฒŒ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” CISC ํƒ€์ž…๊ณผ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋งŒ ์ •์˜ํ•˜์—ฌ ๊ทธ๊ฒƒ์„ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” RISC ํƒ€์ž…์œผ๋กœ ๋‚˜๋‰œ๋‹ค. 

 

MIPS๋Š” RISC ๊ธฐ๋ฐ˜์˜ ๋ช…๋ น์–ด ์ง‘ํ•ฉ ์ฒด๊ณ„์ด์ž, ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ๋งˆ์ดํฌ๋กœ ํ”„๋กœ์„ธ์„œ์ด๋‹ค. ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ๊น”๋”ํ•˜์—ฌ ๋ช…๋ น์–ด ์ฒด๊ณ„๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด ์ฒด๊ณ„์ด๊ธฐ๋„ ํ•˜๋‹ค.

 

 

 

MIPS ๋ช…๋ น์–ด

์„ค๊ณ„ ์›์น™1. ๋‹จ์ˆœ์„ฑ์€ ๊ทœ์น™์„ฑ์„ ์ข‹์•„ํ•œ๋‹ค
๊ทœ์น™์„ฑ์€ ์‹คํ–‰์„ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , ๋‹จ์ˆœํ•จ์€ ๋†’์€ ์ˆ˜์ค€์˜ ์ž‘์—…์„ ๋‚ฎ์€ ๋น„์šฉ์„ ๋“ค์—ฌ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋”ฐ๋ผ์„œ MIPS๋Š” ๋ชจ๋“  ๋Œ€์ˆ˜ ์—ฐ์‚ฐ์„ 3๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž์™€ ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ๋กœ๋งŒ ํ•œ๋‹ค.

<C์–ธ์–ด ์ฝ”๋“œ>

f = (g+h) - (i+j);

 

<MIPS ์ฝ”๋“œ>

add t0, g, h     # temp t0 = g+h
add t1,  i,  j   # temp t1 = i + j
sub f  ,t0, t1   # f = to - t1 

 

์„ค๊ณ„ ์›์น™2. ์ž‘์€ ๊ฒƒ์ด ๋” ๋น ๋ฅด๋‹ค.
์ด๋ ‡๊ฒŒ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋˜์–ด์•ผํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ. ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น ๋ฅธ ์—ฐ์‚ฐ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์ด๊ณ , ๋ณดํ†ต ํ˜„์žฌ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰์ค‘์ธ ๊ฐ’์„ ์ €์žฅํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉ๋œ๋‹ค. MIPS๋Š” 32bit ํฌ๊ธฐ์˜ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ 0๋ฒˆ-31๋ฒˆ๊นŒ์ง€ ์ด 32๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด ๋•Œ ์ด 32bit ๋ฐ์ดํ„ฐ๋Š” 'word'๋ผ ํ•œ๋‹ค. ์–ด์…ˆ๋ธ”๋Ÿฌ๋Š” ์ž„์‹œ ๋ณ€์ˆ˜์—๋Š” \$t0, \$t1, ..., \$t9 ๊นŒ์ง€ ์ด๋ฆ„์„ ๋ถ™์ด๊ณ  ์ €์žฅ๋œ ๋ณ€์ˆ˜์—๋Š” \$s0, ..., \$s7 ๊นŒ์ง€ ์ด๋ฆ„์„ ๋ถ™์—ฌ์ค€๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฐ์—ด ๊ตฌ์กฐ์ฒด ๋“ฑ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ฐ€์ ธ์˜ค๊ธฐ ๋„ˆ๋ฌด ํž˜๋“ ๊ฑด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋‘”๋‹ค. ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ ˆ์ง€์Šคํ„ฐ์— ๊ฐ€์ ธ์˜ค๊ธฐ๋„, ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ๋„ ํ•œ๋‹ค.

<C์–ธ์–ด ์ฝ”๋“œ>

f = (g+h) - (i+j); 


<MIPS ์ฝ”๋“œ>

# f, g, h, i, j >>> $s0, $s1, $s2, $s3, $s4์— ์ €์žฅ

add $t0, $s1, $s2   
add $t1, $s3, $s4
sub $s0, $t0, $t1

 

๋ ˆ์ง€์Šคํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์ข€ ๋” ํ•ด๋ณด์ž. ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์„œ๋กœ ์ฃผ๊ณ  ๋ฐ›์œผ๋ ค๋ฉด ์ˆ˜๋งŽ์€ ์ €์žฅ๊ณต๊ฐ„ ์ค‘ ์–ด๋””๋กœ ์ค˜์•ผํ• ์ง€ ์ฃผ์†Œ๊ฐ€ ์ •์˜๊ฐ€ ๋˜์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. MIPS๋Š” 1 byte(8 bit)์— ์ฃผ์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ถ€์—ฌ(Byte Addressing)ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ๋Š” 4 byte(32 bit) ๋‹จ์œ„๋กœ ์ •๋ ฌํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด 1 byte๋กœ ํ‘œํ˜„ํ•˜๊ธฐ์— ํฐ ๋ฐ์ดํ„ฐ๋„ ์žˆ๋Š”๋ฐ, ๊ทธ ๋•Œ๋งˆ๋‹ค ๊ธธ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ •๋ ฌํ•  ์ˆ˜ ์—†์œผ๋‹ˆ, ์• ์ดˆ์— 4๊ฐœ๋กœ ๋Š์–ด๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ณดํ†ต ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด 4์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

๋˜ ๋ ˆ์ง€์Šคํ„ฐ(32 bit)์˜ ์ •์ˆ˜๋ฅผ ์˜ฎ๊ฒจ์˜ฌ ๋•Œ๋Š” ์ฃผ์†Œ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์—์„œ ํฐ๋ฐ๋กœ ๋ฐ”์ดํŠธ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์˜ฎ๊ฒจ์ฃผ๋Š” big endian ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ํฐ ์ž๋ฆฌ์ˆ˜์˜ ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ€์žฅ ์ฒซ ์ฃผ์†Œ์— ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค(big endian์˜ ๋ฐ˜๋Œ€๋กœ๋Š” little endian์ด ์žˆ๋‹ค).

 

๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋‹น์—ฐํžˆ ์†๋„๊ฐ€ ๋” ๋น ๋ฅผ ๋ฟ ์•„๋‹ˆ๋ผ, ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ณ€์ˆ˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ฐ€์ ธ์™€ ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ(load and store) ์›ฌ๋งŒํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ตœ์ ์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

 

 

์„ค๊ณ„ ์›์น™3. ํ”ํ•œ ์ผ€์ด์Šค๋“ค์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•ด๋ผ.
์ƒ์ˆ˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€์—†๋‹ค. ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ์€ addi๋ฅผ ํ™œ์šฉํ•ด ๋ ˆ์ง€์Šคํ„ฐ ๋‚ด์—์„œ ์ฆ‰์‹œ ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค. ๋˜, \$zero๋Š” ์ƒ์ˆ˜ 0์„ ์˜๋ฏธํ•œ๋‹ค. \$s1์˜ ๊ฐ’์„ \$t2๋กœ ์ด๋™์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ, add \$t2, \$s1, \$zero

 

 

 

์ •์ˆ˜์˜ 2์ง„์ˆ˜ ํ‘œํ˜„

ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… ใ…ใ…ใ…ใ… (32 bit)

 

32 bit๋ฉด ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜ ํ‘œํ˜„์ด 0, ๊ฐ€์žฅ ํฐ ์ˆ˜ ํ‘œํ˜„์ด 1 + 2 + 2^2 + ... + 2^31 = 2^32 - 1์ด๋‹ค. 
๋”ฐ๋ผ์„œ n ๋น„ํŠธ ์ž๋ฃŒํ˜•์—์„œ, 0 to 2^n -1๊นŒ์ง€ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ•˜์ง€๋งŒ ๋ณดํ†ต์˜ ์ž๋ฃŒํ˜•์€ ๋งจ ์ฒซ ๋น„ํŠธ(31๋ฒˆ)๋ฅผ ๋ถ€ํ˜ธ๋กœ ๋‚จ๊ฒจ๋‘”๋‹ค.

 

  • ์ฒซ ๋น„ํŠธ(31๋ฒˆ) 0 : ์–‘์ˆ˜
  • ์ฒซ ๋น„ํŠธ(31๋ฒˆ) 1 : ์Œ์ˆ˜
  • ๊ฐ€์žฅ ํฐ ์ˆ˜    : 0111 1111 ... 1111
  • ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ : 1000 0000 ... 0000 

 

๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€ ์ด์ƒํ•˜๋‹ค. ์ €๊ฑด -0์„ ํ‘œํ˜„ํ•œ ๊ฒƒ ์•„๋‹Œ๊ฐ€? ์ด๋Š” ์Œ์ˆ˜๋ฅผ ๋ณด์ˆ˜ํ‘œํ˜„์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์ผ์ด๋‹ค. ๋ณด์ˆ˜ํ‘œํ˜„์ด ๋ฌผ๋ก  ๋ถˆํŽธํ•˜์ง€๋งŒ, ๊ตฌ์กฐ์ƒ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ์„ ํƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๊ตฌ์กฐ์ƒ์˜ ๋ฌธ์ œ๋ผ ํ•จ์€, ์—ฐ์‚ฐ์— ์žˆ์–ด์„œ ์ฒซ๋ฒˆ์งธ์™€ 0์„ +0, -0 ๋‘๊ฐ€์ง€๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋‘๋ฒˆ์งธ์ด๋‹ค.

 

์ฒซ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” 1 + (-1) = 0 ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž.
4bit์—์„œ, ์šฐ๋ฆฌ์˜ ์ƒ๊ฐ๋Œ€๋กœ๋ผ๋ฉด 1์€ 0001๋กœ -1์€ 1001๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘˜์„ ๋”ํ•˜๋ฉด, 0001 + 1001 = 1010์ด ๋œ๋‹ค. ํ•˜์ง€๋งŒ 1010์€ ๋‚˜์™”์–ด์•ผ ํ•  0์ด ์•„๋‹Œ, -2๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๊ฒƒ์€ ์Œ์ˆ˜์˜ 0์„ 1๋กœ, 1์„ 0์œผ๋กœ ํ‘œํ˜„ํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜์Œ ์ƒ๊ฐํ–ˆ๋˜ ์ฒซ์ž๋ฆฌ์˜ ๋ถ€ํ˜ธ๋น„ํŠธ ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
>> 0001 + 1110 = 1111
์—ฌ๊ธฐ์„œ 1111์€ ์Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ€ํ˜ธ๋Š” -, ์ˆ˜๋Š” 1111์„ ๋’ค์ง‘์€ 0000์ด๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ 0์ด ๋‚˜์˜ด์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค(๋งŒ์•ฝ ์—ฐ์‚ฐ ๋„์ค‘ ์ž๋ฆฌ์˜ฌ๋ฆผ์ด ๋ฐœ์ƒํ•˜๋ฉด, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค). ์ด๊ฒƒ์„ ์Œ์ˆ˜๋ฅผ 1์˜ ๋ณด์ˆ˜๋กœ ํ‘œํ˜„ํ–ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด ์—ญ์‹œ ๋‘๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ์ง„ ์•Š๋Š”๋‹ค(1111=0000).
๋”ฐ๋ผ์„œ ์Œ์ˆ˜๋ฅผ 1์˜ ๋ณด์ˆ˜๋ฅผ ์ทจํ•œ ํ›„ 1์„ ๋”ํ•ด์„œ ์ทจํ•˜๊ธฐ๋กœ ํ•œ๋‹ค.
>> -7์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด, 7์ด 0111์ด๋ฏ€๋กœ, 1000์œผ๋กœ ๊ณ ์นœ ํ›„ 1์„ ๋”ํ•ด 1001๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
>> 3 + (-7)์ด ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, 0011 + 1001์ธ๋ฐ, 1001์€ ์ฒซ์ž๋ฆฌ๊ฐ€ 1์ด๋ฏ€๋กœ ์Œ์ˆ˜์ด๋‹ค. ๋”ฐ๋ผ์„œ ์•„๊นŒ ๋”ํ•ด์ค€ 1์„ -1ํ•ด์ค€๋‹ค. >> 0011 + 1000, ์ด์   1์˜ ๋ณด์ˆ˜ ์—ฐ์‚ฐ๊ณผ ๊ฐ™์•„์กŒ์œผ๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ๊ณ„์‚ฐํ•˜๋ฉด 1011. ๋ฐ˜์ „ ์‹œ์ผœ์ฃผ๋ฉด 0100 = 4์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด, ์•„๊นŒ ์ด์ƒํ–ˆ๋˜ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๋‹ค์‹œ ๋”ฐ์ ธ๋ณด์ž. ์ตœ์†Œ์˜ ์ˆ˜๋Š” -2^n-1์ด์–ด์•ผ ํ•˜๋Š”๋ฐ, n=8์ด๋ฉด -128์ด์–ด์•ผ ํ•œ๋‹ค. -126์€ (126 : )0111 1110 >> (126์˜ 1์˜ ๋ณด์ˆ˜ : )1000 0001 >> (126์˜ 2์˜ ๋ณด์ˆ˜ : )1000 0010
-127์€ (127 : )0111 1111 >> (127์˜ 1์˜ ๋ณด์ˆ˜ : )1000 0000 >> (127์˜ 2์˜ ๋ณด์ˆ˜ : )1000 0001
-128์€ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์ •์˜๋กœ๋Š” ์–‘์ˆ˜์˜ ์ตœ๋Œ€๊ฐ€ 0111 1111์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ •์˜ํ•  ์ˆ˜ ์—†์œผ๋‚˜ 1000 0000์— ๋Œ€์‘๋˜๋Š” ์ˆ˜๊ฐ€ ํ•˜๋‚˜๋„ ์—†์œผ๋‹ˆ, ๊ทœ์น™์—๋„ ๋ถ€ํ•ฉํ•˜๋ฏ€๋กœ -128์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋”ฐ๋กœ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฃŒํ˜•์˜ ๋ฒ”์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

Unsigned n-bit : 0 to 2^n -1
Signed n-bit : -2^n-1 to 2^n-1 -1

 

์ฐธ๊ณ ๋กœ 8-bit์— ์ €์žฅ๋œ -7์„ 32-bit๋กœ ๋ฐ”๊พธ๋ ค๋ฉด, ์•ž์— ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ, ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ถ€ํ˜ธ ๋น„ํŠธ๋กœ ์ฑ„์šฐ๋ฉด ๋œ๋‹ค.
1111 1001 >> 1111 1111 ... 1111 1001

 

 

 

๋ช…๋ น์–ด ํ˜•์‹(MIPS R-format, I-format)

๋ช…๋ น์–ด์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 4 bit ๋‹จ์œ„๋กœ 16์ง„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, eca8 6420์€ 1110 1100 1010 1000 0110 0100 0010 0000์„ ์˜๋ฏธํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ eca8 6420์€ 0๊ณผ 1์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ ์ˆซ์ž์ด์ง€, ์ด ์ด์ง„์ˆ˜์˜ ๊ฐ’๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฐ’์€ ์•„๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ R-format์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๋ˆ๋‹ค.

add \$t0, \$s1, \$s2 ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ค R-format์„ CPU์— ๋ณด๋‚ด์•ผํ• ๊นŒ?

 

op = special  : ์‹คํ–‰ํ•  ์—ฐ์‚ฐ์˜ ํƒ€์ž…
rs = \$s1        : ์ฒซ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ
rt = \$s2        : ๋‘๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ
rd = \$t0        : ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ์ €์žฅ๋  ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ
shamt = 0     : ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์—์„œ ์ด๋™์˜ ํฌ๊ธฐ
funct = 32     : opํ•„๋“œ์—์„œ ์ •์˜ํ•œ ์—ฐ์‚ฐ์˜ ํƒ€์ž… ์ค‘, ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ๋ช…์‹œ

 

๋ช…๋ น์–ด๋Š” ๋‹ค 2์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. 
๋ ˆ์ง€์Šคํ„ฐ๋Š” ์•„๊นŒ 32-bit์งœ๋ฆฌ 32๊ฐœ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๋ ˆ์ง€์Šคํ„ฐ์— ์–ด๋–ค ๊ฒƒ์ด ์ €์žฅ๋˜์–ด์žˆ๋Š”์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ถœ์ฒ˜ : ๋‚˜๋ฌด์œ„ํ‚ค

rs, rt, rd๋ฅผ ์ฑ„์šธ ๋•Œ ์œ„ ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ R-format์„ ์ฑ„์›Œ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
>> special(0) \$s1(17) \$s2(18) \$t0(8) 0(0) add(32)



๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์ด์ง„์ˆ˜๋กœ ์ด์–ด๋ถ™์ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค
>> 000000 10001 10010 01000 00000 100000



ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ 4 bit ๋‹จ์œ„๋กœ 16์ง„์ˆ˜๋กœ ์จ์ฃผ๊ธฐ๋กœ ํ•˜์ง€ ์•Š์•˜๋Š”๊ฐ€? 4๊ฐœ ๋‹จ์œ„๋กœ ๋Š์–ด์„œ,
>> 0000 0010 0011 0010 0100 0000 0010 0000



4 bit ๋‹จ์œ„๋กœ 16์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ”๋ณด์ž!
>> 02324020



๋”ฐ๋ผ์„œ, add \$t0, \$s1, \$s2๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์–ด์…ˆ๋ธ”๋Ÿฌ๊ฐ€ 02324020์ด๋ผ๋Š” ๋จธ์‹ ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ” CPU์—๊ฒŒ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค!
์ด ๋•Œ, CPU์˜ ๊ธฐ์ข…๊ณผ ๊ด€๊ณ„์—†์ด, ์ด์ง„์ˆ˜์˜ ํ˜ธํ™˜์€ ํ‘œ์ค€์œผ๋กœ ์ •ํ•ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์„ค๊ณ„ ์›์น™4. ์ข‹์€ ์„ค๊ณ„๋Š” ์ข‹์€ ํƒ€ํ˜‘์„ ์š”๊ตฌํ•œ๋‹ค.
์„ค๋ช…ํ•œ R-format ๋ง๊ณ ๋„, I-format์ด๋ผ๋Š” ๋ช…๋ น์–ด ํ˜•์‹์ด ํ•˜๋‚˜ ๋” ์žˆ๋‹ค. ์„ค๊ณ„์ž๋“ค์€ ๋ชจ๋“  ๋ช…๋ น์–ด์˜ ๊ธธ์ด๋ฅผ ๊ฐ™๊ฒŒ ํ•˜๋ฉด์„œ, ๋ช…๋ น์–ด ํ˜•์‹๋„ ํ•˜๋‚˜๋กœ ํ†ต์ผ์„ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘˜ ๋‹ค ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋ณด๋‹ˆ, ๋ชจ๋“  ๋ช…๋ น์–ด์˜ ๊ธธ์ด๋ฅผ ๊ฐ™๊ฒŒ ํ•˜๋˜ ๋ช…๋ น์–ด ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ช…๋ น์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํƒ€ํ˜‘ํ–ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ I-format์€ R-format๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 32bit์ด์ง€๋งŒ, R-format ๋“ฑ์œผ๋กœ add, sub ๋“ฑ์„ ์‹คํ–‰ํ•œ๋‹ค๋ฉด, I-format์œผ๋กœ addi, lw, sw ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๊ด€์—ฌํ•˜๋Š” ๋ช…๋ น ์ข…๋ฅ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค.

โ€ป lw๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋ ˆ์ง€์Šคํ„ฐ์— ๋ณต์‚ฌํ•˜๋Š” ๋ช…๋ น์–ด
โ€ป sw๋Š” ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌํ•˜๋Š” ๋ช…๋ น์–ด



์ด๋ฒˆ์—๋„ ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ดํŽด๋ณด์ž : lw \$t0 1200($t1)     # 1200์„ \$t1, %t0์— ๋ณต์‚ฌํ•˜์„ธ์š”!

 

>> special(35) \$t1(9) \$t0(8) 1200(1200)
>> 100011 / 01001 / 01000 / 0000 0100 1011 0000
>> 1000 1101 0010 1000 0000 0100 1011 000
>> 8D2804B0