next up previous contents index
Next: แนวคิด ``Store Program'' Up: การแสดงคำสั่งในคอมพิวเตอร์ Previous: ฟิลด์ของคำสั่ง MIPS   Contents   Index

การแปลงคำสั่งภาษา MIPS มาเป็นภาษาเครื่อง

ตัวอย่างนี้เป็นการแสดงการแปลงคำสั่งภาษา MIPS มาเป็นภาษาเครื่อง ให้ $t1 เป็นตำแหน่งอ้างอิงของอาเรย์ A และ $s2 เก็บค่า h จากบรรทัดของภาษาคอมพิวเตอร์ระดับสูง

A[300] = h + A[300];

แปลงเป็น

  
lw  $t0, 1200($t1) # Temporary reg $t0 gets A[300]
add $t0, $s2, $t0  # Temporary reg $t0 gets h + A[300]
sw  $t0, 1200($t1) # Stores h + A[300] back to A[300]

ในตารางข้างล่างเป็นการแสดงภาษาเครื่องสำหรับภาษาแอสแซมบลี่ที่ได้แสดงไว้ก่อนหน้า

address/
op rs rt rd shamt funct
35 9 8 1200
0 18 8 8 0 32
43 9 8 1200

คำสั่ง lw มีค่า opcode เท่ากับ 35 ค่ารีจีสเตอร์อ้างอิง $t1 แสดงด้วยค่า 9 และแสดงในฟิลด์ rs ในรีจีสเตอร์สำหรับเก็บค่าการโหลด rt มีค่าเท่ากับ 8 ที่เป็นชื่อเรียกของรีจีสเตอร์ $t0 ค่าตำแหน่ง A[300] ระบุโดย 1200 ( $1200 = 300\times 4$)

คำสั่ง add มีค่า opcode เท่ากับ 0 และ ค่า 32 ในฟิลด์ funct เป็นการระบุว่าคำสั่งนี้เป็นคำสั่งบวก รีจีสเตอร์สำหรับเก็บตัวแปรและผลลัพธ์ rs, rt, และ rd สำหรับการเก็บค่า $s2, $t0, และ $t0 มีค่าเท่ากับ 18, 8, และ 8 ตามลำดับ

คำสั่ง sw มีค่า opcode เท่ากับ 43 ส่วนท้ายของคำสั่งเหมือนกับคำสั่ง load word

ตารางข้างล่างแสดงชุดของคำสั่งที่เป็นไบนารี่

address/
op rs rt rd shamt funct
100011 01001 01000 0000 0100 1011 0000
000000 10010 01000 01000 00000 100000
101011 01001 01000 0000 0100 1011 0000

โดยที่ค่าไบนารี่ 0000 0100 1011 0000 มีค่าเท่ากับ 1200


next up previous contents index
Next: แนวคิด ``Store Program'' Up: การแสดงคำสั่งในคอมพิวเตอร์ Previous: ฟิลด์ของคำสั่ง MIPS   Contents   Index
Vara Varavithya 2006-11-06