الرئيسيةبحث

تعليمات الـ MIPS

فهرس

مقدمة عن تعليمات لغة الالة:

هي لغة برمجة ذات مستوى منخفض و التي تتحكم مباشرة بالهاردوير, و هي لغة بدائية و مقيدة جدا

البرنامج عبارة عن تعليمات . وهذه التعليمات تخرن في الذاكرة كتعليمة واحدة تلو الأخرى والتي تجلب و تنفذ في الوقت نفسه Mips (million instruction per second)instruction set architecture تنفذ مجموعة من العمليات مثل التحميل من الذاكرة والتخزين في الذاكرة,و بعض العمليات المنطقية مثل and ، shift, العمليات الجسابية مثل add,sub


أنواع التعليمات:

بعض التعليمات قد تأخذ اما : معامل واحد operand Jump #address Jump $register number

معاملانoperands lw $reg1,$reg2

ثلاثة معاملات operands Add $reg1, $reg2, $reg3

تعليمات ميبس الرياضية لها ثلاث معاملات و الوجهة(النتيجة في أول مسجل) أولا

Example:

Ccode:A = B + CMIPScode:add$s0,$s1,$s2

$s0, etc. are registers (associated with variables by compiler)

ميزات لغة الميبس :

تمتاز لغة الميبس بعدة مبادئ :

المبدأ الأول : سهولة الترتيب :

مثال :

C code: A = B + C + D; E = F - A; MIPS code: add $t0, $s1, $s2 add $s0, $t0, $s3 sub $s4, $s5, $s0 المعاملات يجب أن تكون مسجلات و يوجد 32 مسجل

المبدأ الثاني : أصغر و أسرع:

Registers vs. Memory

تنظم عناوين الذاكرة كمصفوفة مفهرسة بايت بايت 0 1 2 3 4 5 6 ... 8 bits of data 8 bits of data 8 bits of data 8 bits of data 8 bits of data

ولكن معظم المعطيات تستخدم 4 بايت 230 بايت تعنون من 0 و حتى 232-1 230 كلمة تعنون 0-4-8- 4-232 Not in all architectures!

0 4 8 12 ... 32 bits of data 32 bits of data 32 bits of data


المبدأ الثالث : تصميم جيد يطلب اتفاقية جيدة

التعليمات هي مجموعة بيتات و البرامج تكون مخزنة بالذاكرة التعليمات يتم جلبها و توضع في مسجل خاص البيتات في مسجل التحكم الحدث التالي تجلب التعليمة التالية و تتابع.

مبدأ تخزين البرنامج

القرار أو الشرط يغير التعليمات أي يغير تدفق التحكم و يغير التعليمة التالية التي سوف تنفذ. bne $t0, $t1, Label # branch if not equal beq $t0, $t1, Label # branch if equal

Example

(if): if (i==j) h = i + j;


bne $s0, $s1, Label add $s3, $s0, $s1 Label: .... تعليمات ميبس التفرعية غير الشرطية j label Example (if - then - else):

if (i!=j) beq $s4, $s5, Label1 h=i+j; add $s3, $s4, $s5 else j Label2 h=i-j; Label1: sub $s3, $s4, $s5 Label2: ...

مثال أخر:

Example (loop):

Loop: ---- i=i+j; if(i!=h) go to Loop --- Loop: --- add $s1, $s1, $s2 #i=i+j bne $s1, $s3, Loop

بعض الأمثلة :

Instruction Meaning

add $s1,$s2,$s3 $s1 = $s2 + $s3

sub $s1,$s2,$s3 $s1 = $s2 – $s3

lw $s1,100($s2) $s1 = Memory[$s2+100]

sw $s1,100($s2) Memory[$s2+100] = $s1

bne $s4,$s5,L Next instr. is at Label if $s4 $s5

beq $s4,$s5,L Next instr. is at Label if $s4 = $s5

j Label Next instr. is at Label

و هذه هي شيفرات التعلميات:

the 16 b and 26 b addresses are word addresses

op rs rt rd shamt funct

op rs rt 16 bit address

op 26 bit address

R-type

I-type

J-type

Slt تعني التفريع عندما يكون المعامل الأول أصغر من المعامل الثاني عندها يتم توضيع القيمة واحد في مسجل النتيجة. slt $t0, $s0, $s1

و في النهاية فان لغة الاسمبلي تزودنا بأشباه تعليمات 'pseudoinstructions' مثل تعليمة move $t0, $t1 في الاسمبلي هي عبارة عن add $t0,$t1,$zero

Assembly Language vs. Machine Language

تؤمن الاسمبلي عمليات أقوى من ميبس و الهدف هو إنقاص عدد التعليمات المنفذة و لكن الخوف في بطئ دورة الساعة and/or

في بعض الأوقات يشار اليها باسم RISC vs. CISC Reduced Instruction Set Computers Complex Instruction Set Computers

ميزات ال RISC

و بشكل افتراضي فكل التعليمات منذ عام 1982 تستخدم البنية البديلة RISC و التي تتميز ب :

  1. دورة واحدة
  2. عدد قليل من شكل التعليمات ذات الطول الثابت.
  3. بنية تحميل | تخزين
  4. عدد كبير من المسجلات بالاضافة ل:
  5. عدد قليل من التعليمات
  6. عدد قليل من أنظمة العنونة
  7. وحدة تحكم سريعة.

المراجع

The Mips Programmer's Handbook (The Morgan Kaufmann Series in Computer* Architecture and Design) by Erin Farquhar and Philip J. Bunce

انظر أيضا