[Architecture] ฟิลด์ของคำสั่ง MIPS

ฟิลด์ของคำสั่ง MIPS

MIPS_instruction_set.jpg

ที่มาของรูป http://www.cise.ufl.edu/~mssz/CompOrg/Figure2.7-MIPSinstrFmt.gif

- MIP มี instruction อยู่ 3 แบบ

Type -31-                                 format (bits)                                 -0-
R opcode (6) rs (5) rt (5) rd (5) shamt (5) funct (6)
I opcode (6) rs (5) rt (5) immediate (16)
J opcode (6) address (26)

- ในแต่ละฟิลด์ มีความหมายดังต่อไปนี้

op: พื้นฐานการทำงานของคำสั่ง ซึ่งเรียกว่า opcode
rs: รีจีสเตอร์ ตัวแปรกระทำ ตัวแรก (s = source)
rt: รีจีสเตอร์ ตัวแปรกระทำ ตัวสอง (t = target)
rd: รีจีสเตอร์ ที่เก็บผลลัพธ์ (d = destination)
shamt: ค่าของการเลื่อนตำแหน่ง
funct: ฟังก์ชั่น เป็นฟิลด์ที่กำหนดการกระทำย่อยๆ ที่อธิบายเสริมกับพื้นฐานการทำงานของคำสั่ง หรือเรียกว่า function code

I-Type (immediate type) :

- เป็นคำสั่งที่มี immediate value (type อื่นจะให้ assembler จัดการ)

B31-26 B25-21 B20-16 B15-0
opcode register s register t immediate

- มีรีจิสเตอร์อยู่ 2 ตัวคือ rs,rt แล้วตามด้วย immediate ซึ่งต้องเป็น 2′s complement เท่านั้น
- ตัวอย่างคำสั่ง addi $5 $4 0xabcd : opcode rt rs imm หลังจากที่ทำคำสั่งนี้ $5 จะเก็บค่า 0xbcde
- ตัวอย่างคำสั่ง addi $4 $5 0xaabb : $4 คือ rt, $5 คือ rs การทำงานก็คือ $4 = ($5)  + 0xaabb

op(6) rs(5) rt(5) immediate
001000 00101 00100 1010 1010 1011 1011
addi 5 4 aabb

รวมค่ากันทีละ 4 ค่าที่ได้คือ 0010|0000|1010| 0100 | 1010| 1010| 1011| 1011 =  20a4aabb

- ในการบวกลบเลขกันนั้นปกติถ้าจำนวนบิตไม่เท่ากันจะไม่สามารถทำได้ แต่ MIPs มี sign extention คือการเพิ่มจำนวนบิตของเลขที่มีจำนวนบิตน้อยกว่าให้เท่ากับเลขที่มีจำนวนบิตมากกว่า
- สิ่งที่น่าสังเกตคือ I-Type มี register อยู่ 2 ตัว ดังนั้นถ้าเขียนคำสั่ง load เช่น lw $4, 0($5) เป็นการโหลดค่าใน memory สู่ register ซึ่งเป็นการบอกว่า EA = (($5) + Imm) , EA = Effective Address ซึ่งเป็นค่าในรีจิสเตอร์จริงๆ โดยมีลักษณะคล้าย Pointer ในภาษาซี

op(6) rs(5) rt(5) immediate
100011 00101 00100 0000 0000 0000 0000
lw 5 4 0

รวมกันค่าที่ได้คือ 1000|1100|1010|0100|0000|0000|0000|0000 = 8ca40000

R-Type (Register)

- เป็นการกระทำที่ operand เป็นregister ล้วนๆ

B31-26 B25-21 B20-16 B15-11 B10-6 B5-0
opcode register s register t register d shift amount functio

- ตัวอย่างเช่น add $3 $4 $5
- rd คือตัวระบุ destination
- ดังนั้นถ้าเปรียบเทียบระหว่าง R-type กับ I-Type
- op บอกว่าคำสั่งหลักเป็นคำสั่งอะไร โดย variation ของคำสั่งจะอยู่ใน function
- function คือ variation ของคำสั่งหลัก

op (6) rs (5) rt (5) rd (5) shamt (5) func (6)
000000 00100 00101 00011 00000 100000
add $4 $5 $3 0 2

ค่าที่ได้คือ 00851820
- shift amount หรือ shamt : ใช้ 5 bit
- ค่า variable ของ function เช่น addu 0/21, add 0/20 ซึ่งค่า 0 คือ opcode ส่วนค่า 21,20 เป็นค่าฟังก์ชั่น

J-type (jump type)

- เป็นคำสั่งที่มี imm มากสุดคือ 26 bit
- โดย 26 bit นี้อยู่ในโหมด word addressing, ถ้าอยู่ในรูปแบบ byte addressing จะได้ 28 bit

B31-26 B25-0
opcode target

- จากการ Instrument code (ใส่โค้ดเข้าไปเพื่อดูว่าการเปลี่ยนของ program counter เป็นอย่างไร)ของ MIPS พบว่าการ jump ไม่เคยเกิน 28 bit ซักที ดังนั้น MIPS ก็เลย implement คำสั่ง J-Type ขึ้นมา
- ถ้า jump เกิน 28 bit ก็ให้ใช้คำสั่งอื่นเช่น jump register

Popularity: 1% [?]

Related posts:

Tags: , ,

Leave a Reply

4 Comments

  • November 18, 2009 | Permalink | Reply

    จะเขียนบล็อกหรือทำรายงานส่งอาจารย์หรือครับอ๊อฟ อ่านไม่ถึงครึ่งก็มึนกินแล้ว ฮาๆ

  • November 18, 2009 | Permalink | Reply

    เขียนบล็อกสรุปเลคเชอร์จากที่เรียนอะคะ คนเขียนก็มึนๆ เหมือนกัน = =

  • dybydx
    December 1, 2009 | Permalink | Reply

    ผมก็มึน ๕๕ ขยันจริงๆ ช่วยผมด้วยนา

    search mips ก็เจอของพี่อ่ะ – -๐

  • toeyya
    September 1, 2010 | Permalink | Reply

    เข้าใจขึ้นเยอะเลย ขอบคุณคะ

Leave a comment

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Your email is never shared. Required fields are marked *

Enjoy Eating

ร้านอาหารไทย »

รีวิวโดนใจ >> Rabbit in the kitchen เริงร่าอาหารไทย อร่อยแบบต้นตำรับ ณ ใจกลางสยาม

ร้านไอศกรีม »

รีวิวโดนใจ >> Cold Stone by Canon Legria Mini มุมมองใหม่ กับสาขาใหม่ ไฉไลกว่าเดิม

บุฟเฟต์ปิ้งย่างและชาบู »

รีวิวโดนใจ >> ชาบู ชาบู นางใน ร้านอาหารแนวสุขภาพ เน้นผัก แต่อิ่มท้อง อร่อยกันที่สาขาเอกมัย

ร้านเค้ก-ขนม-ของหวาน »

รีวิวโดนใจ >> After You Dessert Cafe เมนูใหม่ของกับความอร่อยแบบเดิมที่สาขาสีลมคอมเพล็กซ์

ร้านอาหารญี่ปุ่น »

รีวิวโดนใจ >> Chiba Cham (ชิบะแชมป์) สนุกกับการกิน แล้วลืมความอ้วนไว้ที่บ้าน ในซอยสุขุมวิท 39

ร้านอาหารนานาชาติ »

รีวิวโดนใจ >> The Coffee Club เติมเต็มอาหารเช้าให้ลงตัว พร้อมเอาใจคอกาแฟ ที่เอกมัย

ร้านอาหารซีฟู๊ด »

รีวิวโดนใจ >> Bangkok Seaview (บางกอกซีวิว) รับลมชมวิว กินซีฟู๊ดที่ทะเลกรุงเทพ

ร้านสเต็ก »

รีวิวโดนใจ >> Dairy Home ร้านสเต็กเนื้อรสชาติดี หลากรสไอศกรีมโฮมเมดแสนอร่อย เขาใหญ่

ร้านอาหารอีสาน »

รีวิวโดนใจ >> ส้มตำคุณกัญจณ์ ร้านอาหารไทย-อีสานเจ้าประจำ อร่อยได้ในราคาเบาๆ ที่สุขุมวิท 101/1

ร้านอาหารเกาหลี »

รีวิวโดนใจ >> BonChon Chicken ไก่ทอดกรอบบอนชอนสไตล์เกาหลี สาขาสีลมคอมเพล็กซ์

ร้านอาหารอิตาเลียน »

รีวิวโดนใจ >> Greyhound Cafe อร่อยโดนใจได้ทั้งเมนูหลักและของหวาน ที่สาขาสยามเซ็นเตอร์

ร้านจีนและติ่มซำ »

รีวิวโดนใจ >> Grand Peking (แกรนด์ปักกิ่ง) ภัตตาคารอาหารจีนในห้าง The Shoppes

ร้านราเมน-ก๋วยเตี๋ยว »

รีวิวโดนใจ >> ทงจิงกัง (Ton Chin Kan Ramen) มาลองกินราเม็งเปิดใหม่ในซอยอารีย์

ร้านซูชิ »

รีวิวโดนใจ >> Anata sushi (อนาตะ ซูชิ) ร้านซูิชิบาร์ ปลาสด รสชาติดี ราคาไม่แพง @ร่วมฤดี village

ห้องอาหารโรงแรม »

รีวิวโดนใจ >> Three Sixty Outdoor Lounge ปิกนิคกันท่ามกลางแสงดาวที่ Millennium Hilton