Presentation is loading. Please wait.

Presentation is loading. Please wait.

Instructions: Language of the Computer

Similar presentations


Presentation on theme: "Instructions: Language of the Computer"— Presentation transcript:

1 Instructions: Language of the Computer
فصل 2 Instructions: Language of the Computer Chapter 1

2 مجموعه دستورات : ISA مخزن دستورات یک کامپیوتر
کامپیوترهای متفاوت دارای مجموعه دستورات متفاوت ولی در جنبه‌های زیادی مشترکند کامپیوترهای اولیه دارای مجموعه دستورات ساده پیاده‌سازی راحت بسیاری از کامپیوترهای مدرن نیز دارای دستورات ساده‌اند Chapter 2 Chapter 1

3 مجموعه دستورات MIPS به عنوان نمونه.
تجاری شده بوسیله MIPS Technologies ( در کامپیوترهای تعبیه شده: دستگاه‌های الکترونیکی، دوربین‌ها، چاپگرها، تجهیزات شبکه و ... Chapter 2 Chapter 1

4 زبان اسمبلی MIPS الزامات یادگیری زبان اسمبلی:
ثبات‌ها و فرمت دودویی دستورات دستورات منطقی و محاسباتی دستورات انتقال داده‌ها دستورات کنترلی (پرش، انشعاب و ... ) دستورات متفرقه Chapter 2

5 نمایش دستورات دستورات CPU کد می‌شوند در دودویی
دستورات ماشین دستورات MIPS دارای طول 32 بیتی با فرمت منظم دارای 32 ثبات 32بیتی شماره ثبات‌ها : $0-$31 استفاده از نام در زبان اسمبلی $zero for $0 $t0-$t9 for $8-$15 and $24-25 $s0-$s7 for $16-$23 Chapter 2

6 فرمت دودویی دستورات شماره ثبات : rs, rt, rd کد تابع : funct
MIPS دارای سه فرمت دستور دودویی است: R-type opcode rs rt rd shamt funct 6-bit 5-bit I-type opcode rs rt address offset/immediate 6-bit 5-bit 16-bit J-type opcode jump address 6-bit 26-bit شماره ثبات : rs, rt, rd کد تابع : funct Chapter 2 Chapter 1

7 عملیات محاسباتی مثال: C code: MIPS code: f = (g + h) - (i + j);
add t0, g, h # temp t0 = g + h add t1, i, j # temp t1 = i + j sub f, t0, t1 # f = t0 - t1 Chapter 2 Chapter 1

8 کاربرد ثبات به عنوان عملوند
C code: f = (g + h) - (i + j); f, …, j in $s0, …, $s4 Compiled MIPS code: add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 Chapter 2 Chapter 1

9 مثالی از کد دستورات R 18 19 17 I 100 add R reg 32 / sub 34 addi I 8
Instruction Format op rs rt rd shamt funct address add R reg 32 / sub 34 addi I 8 constant lw 35 sw 43 Instruction Example Comments add R 18 19 17 32 add $s1, $s2, $s3 sub 34 sub $s1, $s2, $s3 addi I 8 100 addi $s1, $s2, 100 lw 35 lw $s1, 100($s2) sw 43 sw $s1, 100($s2) Chapter 2

10 عملوندهای حافظه حافظه اصلی جهت داده مرکب جهت انجام عملیات محاسباتی
آرایه، ساختار و ... جهت انجام عملیات محاسباتی بارگذاری به ثبات‌ها : Load ذخیره نتیجه در حافظه : Store حافظه براساس بایت ادرس دهی می‌شود. هر آدرس یک بایت کلمات در حافظه آدرس مضربی از چهار MIPS is Big Endian بایت وزن بیشتر کلمه در آدرس کمتر Little Endian : بایت وزن کمتر کلمه در آدرس کمتر Chapter 2 Chapter 1

11 مثال 1 C code: Compiled MIPS code: g = h + A[8];
g in $s1 , h in $s2, base address of A in $s3 Compiled MIPS code: Index 8 requires offset 32 4 bytes per word lw $t0, 32($s3) # load word add $s1, $s2, $t0 offset base register Chapter 2 Chapter 1

12 مثال 2 C code: Compiled MIPS code: A[12] = h + A[8];
h in $s2, base address of A in $s3 Compiled MIPS code: Index 8 requires offset of 32 lw $t0, 32($s3) # load word add $t0, $s2, $t0 sw $t0, 48($s3) # store word Chapter 2 Chapter 1

13 ثبات و حافظه ثبات سریعتر از حافظه
عملیات روی حافظه نیاز به بارگذاری و ذخیره دستورات بیشتر کامپایلر بایستی از ثبات‌ها برای متغیرها استفاده کند فقط از حافظه برای متغیرهایی که کمتر در طول برنامه استفاده شده‌اند. بهینه‌سازی ثبات‌ها مهم است Chapter 2 Chapter 1

14 عملوند بیواسطه (صریح) داده ثابت مشخص شده در دستور
addi $s3, $s3, 4 عدم دستور تفریق بیواسطه به جای آن ثابت منفی addi $s2, $s1, -1 قاعده طراحی : تندکردن حالت متداول ثابت‌های کوچک متداول عملوند بیواسطه باعث اجتناب از یک بارگذاری Chapter 2 Chapter 1

15 صفر MIPS register 0($zero) ثابت صفر است مناسب برای عملیات متداول
قابل تغییر نیست مناسب برای عملیات متداول مثال: انتقال بین ثبات‌ها add $t2, $s1, $zero Chapter 2 Chapter 1

16 اعداد بدون علامت عدد n بیتی محدوده : 0 to +2n – 1 مثال
= 0 + … + 1×23 + 0×22 +1×21 +1×20 = 0 + … = 1110 استفاده از 32 بیت 0 to +4,294,967,295 Chapter 2 Chapter 1

17 اعداد مکمل 2 n بیت محدوده : –2n – 1 to +2n – 1 – 1 مثال:
= –1× ×230 + … + 1×22 +0×21 +0×20 = –2,147,483, ,147,483,644 = –410 استفاده از 32 بیت –2,147,483,648 to +2,147,483,647 Chapter 2 Chapter 1

18 گسترش علامت نمایش یک عدد در تعداد بیت بیشتر در مجموعه دستورات MIPS
حفظ مقدار عدد در مجموعه دستورات MIPS addi : گسترش مقدار بیواسطه lb, lh : گسترش مقدار بارگذاری beq, bne : گسترش مقدار جابجایی تکثیر بیت علامت به چپ برای اعداد بدون علامت : گسترش بیت صفر مثال : 8-bit to 16-bit +2: => –2: => Chapter 2 Chapter 1

19 نام ثبات‌ها نام شماره استفاده Preserved $zero Constant value 0 N/A $at
Constant value 0 N/A $at 1 Assembler temporary No $v0-$v1 2-3 Values for function results and expression evaluation $a0-$a3 4-7 Arguments $t0-$t7 8-15 Temporaries $s0-$s7 16-23 Saved temporaries Yes $t8-$t9 24-25 $k0-$k1 26-27 Saved for OS kernel $gp 28 Global pointer $sp 29 Stack pointer $fp 30 Frame pointer $ra 31 Return address 6 18 6 Chapter 2

20 مثال 3 f = (g + h) - (i + j); فرض چه تعداد دستور ؟ متغیرها در حافظه
آدرس پایه : $gp (global pointer) آدرس افست به ترتیب : 0, 4, 8, 12, 16 چه تعداد دستور ؟ Load: 4 Arithmetic: 3 Store: 1 Chapter 2

21 ادامه مثال 3 f = (g + h) - (i + j); # f,g,h,i,j: $s0,$s1,$s2,$s3,$s4 lw $s1, 4($gp) # g lw $s2, 8($gp) # h lw $s3, 12($gp) # i lw $s4, 16($gp) # j add $t0, $s1, $s2 # g+h add $t1, $s3, $s4 # i+j sub $s0, $t0, $t1 sw $s0, 0($gp) # f Chapter 2 Chapter 1

22 عملیات شیفت Shamt : تعداد بیت شیفت شیفت چپ منطقی شیفت منطقی راست
op rs rt rd shamt funct 6 bits 5 bits Shamt : تعداد بیت شیفت شیفت چپ منطقی شیفت چپ و پرکردن با صفر sll by i bits : ضربدر 2i شیفت منطقی راست شیفت راست و پرکردن با صفر srl by i bits : تقسیم بر 2i (unsigned only) Ex: sll $s0, $s0, 4 #sll by 4 bits Chapter 2 Chapter 1

23 عملیات AND مفید جهت پوشش بیت‌های یک کلمه
انتخاب بعضی بیت‌ها و بقیه صفر شود and $t0, $t1, $t2 $t2 $t1 $t0 Chapter 2 Chapter 1

24 عملیات NOT مناسب جهت معکوس کردن بیت‌ها MIPS دارای دستور NOR 3-operand
a NOR b == NOT ( a OR b ) nor $t0, $t1, $zero Register 0: always read as zero $t1 $t0 Chapter 2 Chapter 1

25 عملیات شرطی اگر شرط درست است آنگاه پرش به دستور برچسب‌دار
در غیر این صورت ادامه beq rs, rt, L1 if (rs == rt) پرش به L1; bne rs, rt, L1 if (rs != rt) پرش به L1; j L1 پرش غیر شرطی به L1 Chapter 2 Chapter 1

26 Assembler calculates addresses
مثال4 : جملات شرطی C code: if (i==j) f = g+h; else f = g-h; f, g, … in $s0, $s1, … Compiled MIPS code: bne $s3, $s4, Else add $s0, $s1, $s j Exit Else: sub $s0, $s1, $s2 Exit: … Assembler calculates addresses Chapter 2 Chapter 1

27 مثال 5 : جملات تکرار C code: Compiled MIPS code:
while (save[i] == k) i ++; i in $s3, k in $s5, address of save in $s6 Compiled MIPS code: Loop: sll $t1, $s3, add $t1, $t1, $s lw $t0, 0($t1) bne $t0, $s5, Exit addi $s3, $s3, j Loop Exit: … Chapter 2 Chapter 1

28 عملیات شرطی دیگر اگر شرط درست است نتیجه یک شود slt rd, rs, rt
در غیر اینصورت صفر slt rd, rs, rt if (rs < rt) rd = 1; else rd = 0; slti rt, rs, constant if (rs < constant) rt = 1; else rt = 0; استفاده در ترکیب با beq, bne slt $t0, $s1, $s2 # if ($s1 < $s2) bne $t0, $zero, L # branch to L Chapter 2 Chapter 1

29 علامت‌دار و بدون علامت مقایسه علامت‌دار : slt, slti
مقایسه بدون علامت : sltu, sltui مثال: $s0 = $s1 = slt $t0, $s0, $s1 # signed –1 < +1  $t0 = 1 sltu $t0, $s0, $s1 # unsigned +4,294,967,295 > +1  $t0 = 0 Chapter 2 Chapter 1


Download ppt "Instructions: Language of the Computer"

Similar presentations


Ads by Google