pardazandeye_MIPS

در نمایش آنلاین پاورپوینت، ممکن است بعضی علائم، اعداد و حتی فونت‌ها به خوبی نمایش داده نشود. این مشکل در فایل اصلی پاورپوینت وجود ندارد.






  • جزئیات
  • امتیاز و نظرات
  • متن پاورپوینت

امتیاز

درحال ارسال
امتیاز کاربر [1 رای]

نقد و بررسی ها

هیچ نظری برای این پاورپوینت نوشته نشده است.

اولین کسی باشید که نظری می نویسد “پردازنده MIPS”

پردازنده MIPS

اسلاید 1: پردازنده MIPSمقدمهدستورات & کتاب Patterson & HenessiAmirkabir University of Technology Computer Engineering & Information Technology Department

اسلاید 2: مقدمهMIPS یکی از اولین پردازندهای RISC است که بصورت تجاری عرضه و موفق شده است. در سال 1984 توسط تیمی دردانشگاه استانفورد طراحی شده است.پردازنده ای ساده ولی در عین حال قوی است. در تجهیزات مختلفی بصورت embedded استفاده شده است:Various routers from CiscoGame machines like the Nintendo 64 and Sony Playstation 2

اسلاید 3: ویژگیهاتعداد زیاد رجیسترهای همه منظورهمجموعه کوچک دستوراتMIPS32: 168 instructionsMIPS64: 258 instructionsاندازه دستورات ثابت ولی فرمت آنها متغیر استدسترسی به حافظه محدود به دستورات load/store استمد های آدرس دهی محدود است.

اسلاید 4: رجیسترهااین پردازنده دارای 32 رجیستر 32 بیتی است:R0 .. R31رجیستر R0 بصورت سخت افزاری با مقدار صفر پر شده است یعنی همیشه برابر با صفر استرجیستر R1 برای کار اسمبلر رزرو شده استاز بقیه رجیستر ها میشود در برنامه ها استفاده نمود.عملوند ها همیشه باید در یکی از رجیستر ها قرار داشته باشند.

اسلاید 5: رجیستر فایلIf Write = 1, then D data is stored into D address.You can read from two registers at once, by supplying the A address and B address inputs. The outputs appear as A data and B data.Registers are clocked, sequential devices.We can read from the register file at any time. Data is written only on the positive edge of the clock.D data Write D address A addressB addressA dataB data32  32 Register File555 32 32 32وقتی تعداد رجیسترها افزایش مییابد آنها بصورت رجیستر فایل ساخته میشوند:

اسلاید 6: سایر رجیستر هاعلاوه بر ر جیسترهای فوق MIPS دارای رجیسترهای دیگری نیز میباشد:PC (program counter) register and Status registerFloating point registers

اسلاید 7: نامگذاری رجیسترها برای سهولت استفاده در نرم افزار0zero constant 01atreserved for assembler2v0expression evaluation &3v1function results4a0arguments5a16a27a38t0temporary: caller saves. . .(callee can clobber)15t716s0callee saves. . . (callee must save)23s724t8 temporary (cont’d)25t926k0reserved for OS kernel27k128gpPointer to global area29spStack pointer30fpframe pointer31raReturn Address (HW)برای اینکه برنامه نویسی اسمبلی راحت تر باشد به هر رجیستر اسمی داده شده است

اسلاید 8: انواع دادهمقایسه رجوع به داده ها بر اساس اندازه آنها0%20%40%60%80%ByteHalfwordWordDoubleword0%0%31%69%7%19%74%0%Int Avg.FP Avg.داده های حمایت شدهInteger8-bit char16-bit half-word32-bit word64-bit double-wordFloating point32-bit single precision64-bit single precisionpaired single precisionIEEE 754 standard

اسلاید 9: حافظه MIPSMIPS دارای 32 خط آدرس است. یعنی میتواند تا 232 محل حافظه را آدرس دهی نماید. در هر محل حافظه یک بایت داده قرار میگیرند.This results in a 232 x 8 RAM, which would be 4 GB of memory. 232  8 memoryADRSOUTDATA CSWR8328CSWROperation0xNone10Read selected address11Write selected address

اسلاید 10: سازمان حافظههر کلمه دارای 4 بایت میباشد 232 bytes with byte addresses from 0 to 232-1230 words with byte addresses 0, 4, 8, ... 232-40481232 bits of data32 bits of data32 bits of data32 bits of dataRegisters hold 32 bits of data

اسلاید 11: سازمان حافظه : Alignmentthis word is aligned; the others are not!address0481216202431071523Words are aligned

اسلاید 12: سازمان حافظه : Alignmentتوجه داشته باشید که آدرس حافظه بر مبنای بایت ایجاد میشود. از اینرو یک کلمه 32 بیتی 4 محل حافظه را اشغال خواهد نمود.در معماری MIPS کلمات باید بصورت aligned در حافظه قرار گیرند. یعنی یک کلمه 32 بیتی باید در یک محلی از حافظه قرار گیرد که آدرس آن مضربی از 4 باشد.0, 4, 8 and 12 are valid word addresses.1, 2, 3, 5, 6, 7, 9, 10 and 11 are not valid word addresses.در صورتی که به اشتباه قصد دسترسی به بک محل حافظه unaligned داشته باشد یک خطای bus error رخ خواهد داد.این محدودیت برای برنامه نویسی با زبان سطح بالا تاثیر قابل ملاحظه ای ندارد اما به پردازنده کمک میکند تا اندکی سریعتر عمل کند.01234567891011Word 1Word 2Word 3Address8-bit data

اسلاید 13: آرایه ای از کلماتباید هنگام کار با آرایه ها مراقب بود که اگر آرایه ای برای مثال از محل 2000 حافظه شرع شود، عضو اول آن در آدرس 2000 و عضو دوم آن در آدرس 2004 خواهد بود و نه در آدرس 2001برای مثال اگر رجیستر $a0 دارای مقدار 2000 باشد:lw $t0, 0($a0)به اولین عضو اشاره میکند در حالیکه lw $t0,8($a0)به سومین عضو آرایه که در آدرس 2008 است دسترسی پیدا خواهد نمود.

اسلاید 14: ترتیب بایت های یک کلمه در حافظهدو روش برای مشخص کردن ترتیب بایتها در حافظه وجود دارد:Big endian: word address (lowest numerical byte address) is the address of the most significant byteLittle endian: word address is the address of the least significant byteMSBLSBB+0B+1B+2B+3Big Endian ByteLittle Endian ByteB+3B+2B+1B+0B is some base address

اسلاید 15: ترتیب بایت های یک کلمه در حافظهBig EndianLittle Endian7834125612567834200201202203memory addresssimilar to writing EnglishB=200 is the base address in this exampleدر معماری MIPS میتوان پردازنده را برای هر یک از این دو روش تنظیم کرد.

اسلاید 16: انواع اصلی دستورالعملهای MIPSArithmeticIntegerFloating PointMemory access instructionsLoad & StoreControl flowJumpConditional BranchCall & Return

اسلاید 17: دستورات محاسباتیچهار دسته دستورات محاسباتی وجود دارند:AddSubtractMultiplyDivide

اسلاید 18: دستورات محاسباتیتمامی دستورت ALU نظیر دستورات جمع و ضرب دارای 3 عملوند هستند: یکی برای مقصد و دو تای دیگر برای مبدا داده ها. هر سه عملوند ها باید یکی از رجیستر های MIPS باشند. تمامی محاسبات 32 بیتی هستند.C code:A = B + C; E = F - A; MIPS code:add $t0, $s1, $s2 sub $s4, $s5, $s0Unsigned arith: addu/subu (overflow undetected)Assembly language format:   label: operation dest reg, first src reg, second src reg # Comment

اسلاید 19: دستورات محاسباتیاصول معماری:تمامی محاسبات بر روی داده های رجیسترها انجام میشود. یعنی نمیتوان عددی را که در حافظه ذخیره شده است با یک رجیستر جمع کرد. برای اینکار ابتدا باید محتوی حافظه به رجیستر به منتقل شده و عملیات بر روی داده های رجیستر ها انجام شود.ترتیب اپراندها همیشه ثابت است: اول مقصد نوشته میشود.

اسلاید 20: نوشتن توضیحات در برنامه نویسی به زبان اسمبلی MIPSHash (#) is used for MIPS commentsanything from hash mark to end of line is a comment and will be ignored

اسلاید 21: دستورات محاسباتیAdd/Sub_Immediate instructions   یک عدد 16 بیتی با علامت و یا بدون علامت را با یکی از رجیستر های 16 بیتی جمع / تفریق مینماید.      Destination Reg = Source Register + Immediate         Example: A = A - 4 addi $t0, $t0, -4 # $t0 = $t0 –4               Signed/Unsigned Arithm: addi, addiuAssembly language format(I-format):   label: operation dest_reg, src_reg, immediate value/constant # Comment

اسلاید 22: مثالتبدیل برنامه C به اسمبلی MIPSa = b + c + d - e;Break into multiple instructionsadd $t0, $s1, $s2 # temp = b + cadd $t0, $t0, $s3 # temp = temp + dsub $s0, $t0, $s4 # a = temp - eNotice: A single line of C may break up into several lines of MIPS.

اسلاید 23: مثالHow do we do this?f = (g + h) - (i + j);Use intermediate temporary registeradd $t0,$s1,$s2# temp = g + hadd $t1,$s3,$s4# temp = i + jsub $s0,$t0,$t1# f=(g+h)-(i+j)

اسلاید 24: دستورات منطقیبرخی ازدستورات منطقی موجود درMIPS ANDbit-wise AND between registersand $t1, $s0, $s1ORbit-wise OR between registersor $t1, $s0, $s1NORBit-wise NOR between registersnor $t1, $s0, $s1nor $t1, $t0, $0 # $t1 = NOT($t0)Immediate modes andi and ori

اسلاید 25: دستورات دسترسی به حافظهداده ها را بین حافظه و رجیسترها منتقل میکنند. دارای 3 اپراند میباشند:LW/SW instruction: آدرس داده در حافظه بصورت زیر محاسبه میشودSource Address = Source Base Address + Offset Assembly language format(I-format):   label: operation dest_reg, offset ( src_reg) # CommentLoad/StoreName of register to put value inA numberName of register to get base address from

اسلاید 26: مثال : Load Wordlw $s0, 4($s3)If $s3 has the value 100, this will copy the word at memory location 104 to the register $s0.$s0 <- Memory[104]

اسلاید 27: مثال : Store Wordsw $s0, 4($s3)If $s3 has the value 100, this will copy the word in register $s0 to memory location 104.Memory[104] <- $s0

اسلاید 28: خواندن از حافظهlw R6, 0(R5)# R6 <= mem[0x14]

اسلاید 29: مثالC code:A[8] = h + A[8]; assume h in $s2 and base address of the array A in $s3 MIPS code:lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 32($s3) این نحوه آدرس دهی طراحی دستورالعمل ها را ساده کرده و به پیاده سازی آرایه ها و استراکچرها کمک میکند

اسلاید 30: دستورات دسترسی به حافظهInstructionMnemonicLoad ByteLBLoad Byte UnsignedLBULoad HalfwordLHLoad Halfword UnsignedLHULoad WordLWStore ByteSBStore WordSW Store Halfword SH

اسلاید 31: مثالC code:z = w + y;MIPS code:la $t0, w # put address of w into $t0lw $s0, 0($t0) # put contents of w into $s0la $t1, y # put address of y into $t1lw $s1, 0($t1) # put contents of y into $s1add $s2, $s0, $s1 # add w + y, put result in $s2la $t2, z # put address of z into $t2sw $s2, 0($t2) # put contents of $s2 into zla= load address , lw= load word , sw= store wordMust load address (la) to get the address of the memory location into a register0($t0)means go 0 bytes from the address specified by$t0

اسلاید 32: 101010101010101000000000000000000000000000000000101010101010101010101010101010101010101010101010ori10101010101010100000000000000000filled with zeros Then must get the lower order bits right, i.e., ori $t0, $t0, 1010101010101010انتقال بلادرنگ مقادیر 32 بیتی به رجیسترهااینکار در دو مرحله با انتقال 16 بیت با ارزش و کم ارزش و ترکیب آنها صورت میپذیرد16 بیت با ارزش با دستور load upper immediate منتقل میشود.lui $t0, 1010101010101010

اسلاید 33: دستورات کنترلیاین دستورات سیر اجرای برنامه را تغییر میدهند یعنی اینکه دستور بعدی که باید اجرا شود را تعیین میکنند.انواع مختلف دستورات کنترلیconditional branchesjumps (unconditional branch)procedure callsprocedure returns

اسلاید 34: دستورات انشعابدستورات انشعاب شرطی در MIPS عبارتند از: bne $t0, $t1, Label beq $t0, $t1, Label Example: if (i==j) h = i + j; bne $s0, $s1, Label add $s3, $s0, $s1 Label:....Note the reversal of the condition from equality to inequality!

اسلاید 35: دستورات کنترلیدستورات انشعاب غیرشرطی در MIPS عبارتند از:j labelUnconditional jumpjr $t0 “jump register”. Jump to the instruction specified in register $t0Example: if (i!=j) beq $s4, $s5, Lab1 h=i+j; add $s3, $s4, $s5 else j Lab2 h=i-j;Lab1:sub $s3, $s4, $s5 Lab2:...

اسلاید 36: دستورات کنترلیاغلب در کنار دو دستور فوق از دستوردیگری نیز استفاده میشود: slt and slti// set if less than (w/ and w/o an immediate)slt $t0, $s1, $s2 از این دستور به همراه دستورات قبلی استفاده میشود:if $s1 < $s2 then $t0 = 1else $t0 = 0 slti$at, $a0, 5# $at = 1if $a0 < 5bne$at, $0, Label#Branch if $a0 < 5

اسلاید 37: نحوه محاسبه آدرس در دستورات کنترلیPC-relative addressingفرمت این دستورات از نوع I-Type است که در آن آدرس بصورت یک مقدار 16 بیتی نوشته میشود. این مقدار بصورت یک افست نسبت به مقدار رجیستر PC نوشته میشود. op rs rt 16 bit address Ibne $t4,$t5,LabelNext instruction is at Label if $t4  $t5beq $t4,$t5,LabelNext instruction is at Label if $t4 = $t5

اسلاید 38: نحوه محاسبه آدرس در دستورات کنترلیj LabelNext instruction is at LabelPseudodirect addressingدر این دستور فقط از بیت های با ارزش PC استفاده میشود.32-bit jump address = 4 Most Significant bits of PC concatenated with 26-bit word address (or 28- bit byte address)Address boundaries of 256 MBFor larger distances: Jump register jr required. op 26 bit addressJ

اسلاید 39: ExampleLOOP:mult$9, $19, $10 # R9 = R19*R10 lw$8, 1000($9) # R8 = @(R9+1000)bne$8, $21, EXIT add$19, $19, $20 #i = i + j jLOOP EXIT:......Assume LOOP is placed at location 80000oprsrt019109359810005821801920280000...80000800048000880012800168002019002432

اسلاید 40: مثالی ازپیاده سازی LOOPMIPS:Assume: x , y , and sum are in $s0 $s1 , and $s2 respectively. Will use $t0 for I and $t1 for the constant 1C code:sum = 0;for (i = 0; i < y; i++)sum = sum + x;add $s2, $zero, $zero # sum = 0add $t0, $zero, $zero # i = 0LoopBegin:slt $t2,$t0, $s1Beq $t2, $zero, LoopEnd # is i < y ??add $s2, $s2, $s0 # sum = sum + xadd $t0, $t0, $t1 # i++j LoopBeginLoopEnd:

اسلاید 41: صدا زدن توابع و بازگشت ازآناز این دستور برای صدا زدن برنامه فرعی استفاده میشود:jal: jump & link instructionjal stores the return address in R31 and jumps to address in rtاین دستور آدرس برگشت را در رجیستر R31 قرار میدهد و به آدرس ذکر شده دردستور انشعاب میکند.برای بازگشت از برنامه فرعی از دستور زیر استفاده میشود:jr Reg[R31]

اسلاید 42: ذخیره رجیسترها در هنگام صدا زدن توابع تودرتوبعلت محدودیت رجیسترها لازم است تا محتوی رجیسترهائی را که برای تابع مهم هستند قبل از صدا زدن تابع ذخیره نموده و بعد از بازگشت از تابع آنها را بازیابی نمود.رجیسترها در پشته ذخیره خواهند شد. برای اینکه برنامه ها مجبور نباشند تمامی رجیسترها را ذخیره نمایند قاعده زیر رعایت میشود:تابع صدا زننده رجیسترهای زیر را ذخیره و بازیابی میکند: t0-$t9 $a0-$a3$v0-$v1تابع صدا شونده رجیسترهای زیر را ذخیره و بازیابی میکند:$s0-$s7$ra

اسلاید 43: دستورت شیفتMIPS Shift InstructionsFormat: op code/dest reg/src reg/shift amountsll $t4, $t0, 5 #shift left logical 5 bits (multiply by 32) sra $t5, $t0, 2 #shift right arithmetic 2 bits (divide by 4), #sign extended srl $v0, $t0, 1 #shift right logical 1 bit. Sign bit is now 0 srlv $v0, $t0, $t1 #shift right logical, $t1 says how many bitsType of shiftLeftRightLogical sll sllv srl srlv Arithmetic (none: use sll) sra srav Rotate rol ror

اسلاید 44: خلاصه دستورات MIPS — loading words but addressing bytes — arithmetic on registers only 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

اسلاید 45: مثالی از یک برنامه Cswap(int v[], int k);{ int temp;temp = v[k]v[k] = v[k+1];v[k+1] = temp;}swap:muli $2 , $5, 4add $2 , $4, $2lw $15, 0($2)lw $16, 4($2)sw $16, 0($2)sw $15, 4($2)jr $31Explanation: index k : $5 base address of v: $4 address of v[k] is $4 + 4.$5

اسلاید 46: فرمت دستوراتفرمت و طول دستورات کامپیوتر پایه مانو ثابت و یکسان بود. در حالت کلی:اگر اندازه کد تولید شده مهم باشد از دستوراتی با فرمت متفاوت استفاده میشوداما اگر کارائی ( سرعت) مهم باشد از دستوراتی با طول یکسان استفاده میشود.Variable:Fixed:……

اسلاید 47: فرمت دستورات MIPSطول هر دستور 32 بیت است. هر دستور به تعدادی Field تقسیم میشود. هر فیلد توضیحی در مورد دستور العمل ارائه میدهد.از آنجائیکه دستورات مختلف نیازمند ارائه توضیحات مختلفی هستند لذا در MIPS سه نوع فرمت مختلف ( ولی با طول یکسان) برای دستورات در نظر گرفته شده است.R-format Register instructions are used for register based ALU operations. I-format Immediate instructions, can be either Load/Store operations, Branch operations, or Immediate ALU operations. J-format Jump instructions, devote all of the non-opcode space to a 26-bit jump destination field.

اسلاید 48: فرمت دستورات MIPS3 نوع فرمت مختلف بصورت زیر هستند:opcodeOffset added to PC626opcodersrdimmediate65516I-TypeR-TypeJ-Typeopcodersrt655rd5shamt5func6Note the regularity of instruction encoding. This is important for implementing an efficient pipelined CPU.

اسلاید 49: فیلد های مختلف دستورالعمل هاop operation of the instructionrs first register source operandrt second register source operandrd register destination operandshamt shift amountfunct function (select type of ALU operation)add = 32sub = 34

اسلاید 50: مثالExample: add $t0, $s1, $s2registers have numbers, $t0=8, $s1=17, $s2=18 Instruction Format: 000000 10001 10010 01000 00000 100000 op rs rt rdshamtfunct

اسلاید 51: دستوراتR-Type opcodersrt655rd5shamt5funct6opcode: basic operation to be performedrs: source register 1rt: source register 2rd: destination registershamt: shift amountfunct: specific variant of opcode این دستورات دارای opcode=0 بوده و برای عملیات ALU استفاده میشوند.عمل مورد نظر توسط فیلد مشخص میشود:add: 32sub: 34

اسلاید 52: فرمت دستور ADDrsoprtrdshamtfunct6 bits5 bits6 bits5 bits5 bits5 bits32 bitsاین فرمت برای تعداد زیادی دستور غیر از Add نیز استفاده میشود. که همه این نوع دستورات R-type نامیده میشوند.

اسلاید 53: اندکنیگ دستورFor add:op is 010 (000000)funct is 3210 (100000)Register encodings:$s0 is 1610 (10000), $s1 is 1710, …$t0 is 810 (01000), $t1 is 910, …بصورت HEX مقدار این دستور برابر است با:02288020rsoprtrdshamtfunct000000 10001 01000 10000 00000 100000add $s0, $s1, $t0

اسلاید 54: Opcodelw: 35 (100011)sw: 43 (101011)opcode value differentiates I- and R-Type instructionsrs: base registerrt:destination register for lwsource register for storeimmediate: offset from baserange: -215 to (215-1)Similarity in opcode for lw & sw simplifies hardware opcodersrtimmediate65516I-Type Formatدستورات I-Type

اسلاید 55: rsoprtaddress16 bits6 bits5 bits5 bits32 bitsrs is the base registerrt is the destination of a load (source of a store)address is a signed integerفرمت دستور/SW LW

اسلاید 56: lw $s0, 24($t1)100011 01001 10000 0000000000011000rsoprtaddresssw $s0, 24($t1)101011 01001 10000 0000000000011000rsoprtaddress

اسلاید 57: فرمت دستورات با آدرس دهی بلادرنگبرای دستورات ALU که نیاز به یک اپراند ثابت دارند استفاده میشود. (e.g., X=X+4)همچنین برای load کردن مقادیر ثابت از حافظه بکار میرود.مقادیر ثابت بصورت یک عدد 16 بیتی کد میشوند. لذا در رنج -215 to (215-1) خواهند بود.مثال:addi R4, R8, 79slti R1, R2, 56: sets Reg[R1]=1 if Reg[R2]<56 else Reg[R1]=0opcodersrtimmediate65516I-Type Format

اسلاید 58: دستورات J-Typeدستورات پرش غیرشرطی به فرم J-Type کد میشوند.اپکد دستور J برابر با 2 و اپکد دستور Jal برابر با 3 می باشد.مقدار جابجائی نسبت به PC+4 محاسبه میشود.opcodeOffset added to PC+4626J-Type Format

اسلاید 59: مد های آدرس دهی MipsImmediateadd R4, #7 # Regs[R4]=Regs[R4]+716-bit field for the constantRegisteradd R4, R3, R2# Regs[R4]=Regs[R3]+Regs[R2]Displacementlw R4, 100(R1)#regs[R4]=Regs[R4]+Mem[Regs[R1]+100]16-bits for displacementSpecial cases of displacement modeindirect mode: displacement value=0lw R4, 0(R1)#regs[R4]=Regs[R4]+Mem[Regs[R1]]absolute addressing : R0 as base register (always stores 0)lw R4, 8769(R0)

اسلاید 60: مد های آدرس دهی Mips

اسلاید 61: Pseudo-instructionsMIPS assemblers support pseudo-instructions that give the illusion of a more expressive instruction set, but are actually translated into one or more simpler, “real” instructions.In addition to the la (load address) we saw on last lecture, you can use the li and move pseudo-instructions:li $a0, 2000# Load immediate 2000 into $a0move$a1, $t0# Copy $t0 into $a1They are probably clearer than their corresponding MIPS instructions:add$a0, $0, 2000# Initialize $a0 to 2000add$a1, $t0, $0# Copy $t0 into $a1

اسلاید 62: پشته یا Stackپشته محلی از حافظه اصلی است که جهت ذخیره داده ها استفاده میشود.موارد استفاده از پشتهذخیره متغیرهای یک برنامهذخیره محتوی سایر رجیسترها وقتی که یک برنامه فرعی صدا زده میشودکمک به ترجمه عملیات محاسباتی با روش RPNرجیسترSp محل آخرین داده ذخیره شده در پشته را مشخص میکندعملیات زیر روی پشته تعریف میشوند:PushSPSP-1M[SP]DR POPDRM[SP] SPSP+1

اسلاید 63: پشته و برنامه های برگشت پذیراستفاده از پشته باعث میشود تا امکان پیاده سازی برنامه های برگشت پذیر فراهم گردد.با استفاده از پشته میتوان برای هر نسخه از تابع صدا زده شده حافظه جداگانه ای در نظر گرفتآرگومانها و متغیرهای محلی را میتوان در پشته ذخیره نمود.آدرس دهی متغیرهای محلی و آرگومانها نسبت به موقعیت پشته انجام میشود.بازگشت از توابع عکس حالتی است که صدا زده شده اند

اسلاید 64: پشته یا Stackدر MIPS پشته از آدرسهای بالا به سمت آدرسهای پائین رشد میکند.هنگام push کردن داده در پشته باید مقدار رجیستر $sp را کاهش داد.

اسلاید 65: استفاده از stack برای صدا زدن تابع فرعیقبل از صدا زدن تابع مقادیر رجیسترها در پشته ذخیره میشودتابع با استفاده ازدستور صدا زده میشود: jal addressدر پایان اجرای تابع، برای بازگشت به برنامه اصلی از دستور jr (jump register) استفاده میشود.بعد از بازگشت از تابع مقادیر رجیسترها از پشته خارج میشوند.

اسلاید 66: $splow addresshigh addressfilledemptySave $s0 and $s1:subi $sp,$sp,8sw $s0,4($sp)sw $s1,0($sp)Restore $s0 and $s1:lw $s0,4($sp)lw $s1,0($sp)addi $sp,$sp,8مثالی از استفاده از پشته

اسلاید 67: مثالی ازپیاده سازی تابعint func(int g, int h, int i, int j){int f;f = ( g + h ) – ( i + j ) ;return ( f );}// g,h,i,j - $a0,$a1,$a2,$a3, f in $s0func :addi$sp, $sp, -12#make room in stack for 3 wordssw$t1, 8($sp)#save the regs we want to usesw$t0, 4($sp)sw$s0, 0($sp)add$t0, $a0, $a1#$t0 = g + hadd$t1, $a2, $a3#$t1 = i + jsub$s0, $t0, $t1#$s0 has the result add$v0, $s0, $zero#return reg $v0 has flw$s0, 0($sp)# restore $s0lw$t0, 4($sp)# restore $t0lw$t1, 8($sp)# restore $t1addi$sp, $sp, 12# restore sp jr$rawe did not have to restore $t0-$t9 (caller save)we do need to restore $s0-$s7 (must be preserved by callee)

اسلاید 68: نمایش لهستانی معکوس Reverse Polish Notation (RPN) روش معمولی نمایش عبارات ریاضی:A*B+C*Dروش PN برای نمایش عبارات ریاضی: عملگرها قبل از عملوندها قرارمیگیرند.+*AB*CDروش RPN برای نمایش عبارات ریاضی: عملگرها بعد از عملوندها قرا میگیرندAB*CD*+

اسلاید 69: استفاده از پشته برای پیاده سازی RPN در برخی ماشینهای حساب و کامپیوترها از ترکیب پشته و RPNبرای محاسبه عبارات ریاضی استفاده میکنند.ابتدا عبارت بصورت RPN نوشته میشود ) معمولا اینکار توسط کامپایلر انجام میشود(در هنگام محاسبه با برخورد به عملوندها آنها را در پشته PUSH میکنیمبا برخورد با عملگرها ، دو داده موجود در بالای پشته POPشده و عمل مورد نظر بر روی آنها انجام و حاصل درپشته PUSH میشود.

اسلاید 70: مثالبرای محاسبه عبارت زیر یک کامپایلر ممکن است کد زیر را تولید نماید.a= b + c * d;در اینصورت محتوی پشته بصورت زیر خواهد بود:PUSHbPUSHcPUSHdMULADDPOPabPUSHbعبارت معادل RPN بصورت زیر خواهد بود:bcd*+bcPUSHcbcdbc*dPUSHdMULb+c*d ADDpop

اسلاید 71: تمرین:با مطالعه پردازنده کمکی MIPS گزارشی در مورد محاسبات اعشاری و دستورات floating point مورد استفاده دراین پردازنده ارائه دهید.

10,000 تومان

خرید پاورپوینت توسط کلیه کارت‌های شتاب امکان‌پذیر است و بلافاصله پس از خرید، لینک دانلود پاورپوینت در اختیار شما قرار خواهد گرفت.

در صورت عدم رضایت سفارش برگشت و وجه به حساب شما برگشت داده خواهد شد.

در صورت نیاز با شماره 09353405883 در واتساپ، ایتا و روبیکا تماس بگیرید.

افزودن به سبد خرید