فهرس |
هي لغة برمجة ذات مستوى منخفض و التي تتحكم مباشرة بالهاردوير, و هي لغة بدائية و مقيدة جدا
البرنامج عبارة عن تعليمات . وهذه التعليمات تخرن في الذاكرة كتعليمة واحدة تلو الأخرى والتي تجلب و تنفذ في الوقت نفسه 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
و بشكل افتراضي فكل التعليمات منذ عام 1982 تستخدم البنية البديلة RISC و التي تتميز ب :
The Mips Programmer's Handbook (The Morgan Kaufmann Series in Computer* Architecture and Design) by Erin Farquhar and Philip J. Bunce