[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

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

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

รีวิวโดนใจ >> ครัวกรรณิการ์ อาหารทุกอย่างทำจากไก่ อร่อยกันได้ ที่ตัวเมืองหัวหิน

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

รีวิวโดนใจ >> YooMoo (ยูมู่) ไอศกรีมโยเกิร์ตแบรนด์ดังจากอังกฤษแห่งแรกในไทยและแห่งเดียวในเอเชีย

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

รีวิวโดนใจ >> Hou Yuu (โฮวยู) ร้านบุฟเฟ่ต์ปิ้งย่างและเทปันยากิ 690++ ที่ตึก GMM อโศก

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

รีวิวโดนใจ >> Moms Marons ร้านมาการองและขนมหลากหลายของคุณแม่ลูกสองที่น่าลองกันค่า

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

รีวิวโดนใจ >> Inaho (อินาโฮ) บุฟเฟ่ต์อาหารญี่ปุ่นแถวสีลมคนละ 390 บาท แค่พอกินได้แต่ยังไม่โดน

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

รีวิวโดนใจ >> Kongju (คองจู) ห้องอาหารเกาหลีรสชาติต้นตำรับที่โรงแรมปทุมวันปริ๊นเซส

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

รีวิวโดนใจ >>  ปูกรรเชียงซีฟู้ด ร้านอาหารทะเล บรรยากาศไทยๆ หลายเมนูอร่อย ที่แปดริ้ว

ร้านสเต็ก »

รีวิวโดนใจ >> Sizzler ออกเมนู “สเต็กไก่เทอริยากิ” มาเอาใจคนชอบทานสเต็กสไตล์ญี่ปุ่นแล้วค่า

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

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

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

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

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

รีวิวโดนใจ >> Wine Connection Bistro อิ่มอร่อยในวันสบายๆ @ Mega บางนา

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

รีวิวโดนใจ >>Yu He  (หยูเห้อ) กับบุฟเฟ่ต์ติ่มซำ 650++ อิ่มอร่อยเต็มที่โรงแรม Grand FourWing

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

รีวิวโดนใจ >> Fujiyama Go Go: แชมป์ราเมน-สึเคะเมน อร่อยน่าลอง สาขาสุขุมวิท 39

ร้านซูชิ »

รีวิวโดนใจ >> Sushi Hiro อร่อยกับซูชิ อิ่มด้วยโปรโมชั่นแรงๆ ลดถึง50% ที่สาขาพระราม9

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

รีวิวโดนใจ >>Yu He  (หยูเห้อ) กับบุฟเฟ่ต์ติ่มซำ 650++ อิ่มอร่อยเต็มที่โรงแรม Grand FourWing