صفحه 1:
پردازنده 0166)
مقدمه
دستورات
Patersva & Weaessi GUS [
صفحه 2:
© 16۳0() یکیاز اولینپردازندهای/18) لستکه بصورت
تجاریعرضه و موفقشده لستدر سال900) توسط تیمی
دردانشگام لستانفورد طرلحیشدم لست
* پردازنده ای ساده ولی در عین حال قوی است.
* در تجهیزات مختلفی بصورت ساسح استفاده شده است؛
مم05 مما ججفجه Oorious ©
ع يصتود ب هاة) بجمة) لمجم 902 صلججهز0) عا لا ون موق ۶
2 Most HP Laserlet
‘workgroup printersace
\ ۱ 0
Garbit processors.
صفحه 3:
© تعداد زياد رجیسترهای همه منظوره
۶ مجموعه کوچک دستورات
مه 199 :0216۳8698 *
O1PGOF: CSO instruntioas ©
٩ اندازه دستورات ثابت ولی فرمت آنها متغیر است
٩ دسترسی به حافظه محدود به دستورات Saul food/store
٩ مد های آدرس دهی محدود است.
صفحه 4:
رجیسترها
© اين پردازنده دارای 00 رجیستر 00 بیتی است:
RO .. ROG *®
۴ رجیستر (0) بصورت سخت افزاری با مقدار صفر پر شده است
یعنی هميشه برابر با صفر است
© رجیستر )٩0 برای کار اسمبلر رزرو شده است
© از بقبه رجيستر ها.ميشود در برنامه ها استفاده نمود.
© عملوند ها هميشه بايد در يكى از رجيستر ها قرار داشته باشند.
1
فك
:
25
صفحه 5:
© وقتی تعداد رجیسترها افزایش مییابد
آنها بصورت رجیستر فایل ساخته
میشوند:
es
Ddata
Write
ID address
32 x 32 Register File
5
JA address B addres
Adata___Bdata
“AP Orite = (, thea OD data is stored toto (D address
© You ces read Proc tue reysters of vane, by supplier the (D
uiddress und (D address foputs. Nhe vulputs uppear us (D dota
wed @ data.
+4
V4
© Revysters we clocked, sequeutdl devices.
© Oe vac reed Prow the reqister Pile of copy te.
© Date is writes valy vo the postive edye oP the clock.
صفحه 6:
* اسایر رجیستر ها
© علاوه بر ر جیسترهای فوق 710*09() دارای رجیسترهای
دیگری نیز میباشد:
revister urd Grotus revster ( امه ی ) قن
Phiten pot ۲ ©
صفحه 7:
انامگذاری رجیسترها برای سهولت استفاده در
46 ۵ موه له
ves (Soke wnt swe)
6 0۵ موم coder vary
۳
16 © 90 ده مسب _ بر )۵(
براى اينكه برنامة نويسى اسمبلى راحت تر باشد به هر رجيستر اسمى
صفحه 8:
داده های حمایت شده
“Integer
*s-bit char
*76-bit half-word
2
"64-bit double-word
“Floating point
°32-bit singleprecision
“64-bit singleprecision
*pairedsingle
precision 40% 60% 80%
مقايسه رجوع به داده ها بر اساس اندازه آنها “IEEE 754 standard
صفحه 9:
حافظه 2160)
2 8 Opercters © ©
memory
ره 8 ©» ©
لیبق ۸۵85 ۰. 07۲ One x @O
= Bara Rew ocevidaktess [Od
wR Orie selected له 2 0
دارلی06 خط آدرسلستٍ ی عنیمیتولند تا 066 محلحافظه )106 ٩
را آدرسدهینماید. در هر محلحافظه ی کب ایندادم قرار میگيرند.
x O ROO, whick would be F CO 95 و و Dhis results و
7 ۰
صفحه 10:
:: اسازمان حافظه
* هر کلمه دارای "0 بایت میباشد
32 bits of data]
Reysters kok OS bits oF deta
32 bits of datal
32 bits of datal
32 bits of datal
12
© 6°? bytes with byte adresses Prow O tr G°°-1
© 6 Words wih bye addresses O, , O, ... 9506-4:
صفحه 11:
صفحه 12:
سازمان حافظه : Oliqevect
© توجه داشته باشید که آدرس حافظه بر مبنای بایت ایجاد ميشود. از اینرو یک کلمه 66
بیتی 6 محل حافظه را اشغال خواهد نمود.
Address O12 34 5 6 7 & 9 10 11
8-bit data
Word 1 Word 2 Word 3
* در معماری 10<69() کلمات باید بصورت اوه در حافظه قرار گيرند. یعنی یک کلمه
0 بیتی باید در یک محلی از حافظه قرار گیرد که آدرس آن مضربی از * باشد.
© 0, , © od 08 we vod word ج وو لله
۰ 4,8, 9,8, 9, ?, 9, (0 oad ae atudd word ukbesses.
© در صورتی که به اشتباه قصد دسترسی به بک محل حافظه raked داشته باشد يك
خطای error سا رخ خواهد داد.
© این محدودیت برای برنامه نویسی با زبان سطح بالا تاثیر قابل ملاحظه ای ندارد اما به
پردازنده کمک میکند تا اندکی سریعتر عمل کند.
صفحه 13:
*
ال
© بايد هنكام كار با آرايه ها مراقب بود که اگر آرایه ای برای مثال از محل
COOO حافظه شرع شود» عضو اول آن در آدرس 0000000 و عضو
دوم آن در آدرس 000006۶ خواهد بود و نه در آدرس 60000
* برای مثال اگر رجیستر 2005 دارای مقدار 000000 باشد:
lw $t0, 0($a0)
cll ay عضو اشاره میکند در حالیکه
lw $t0,8($a0)
به سومین عضو آرایه که در آدرس 000000 است دسترسی پیدا خواهد نمود.
صفحه 14:
ترتیب بایت های یک کلمه در حافظه
٩ دو روش برای مشخص کردن ترتیب بایتها در حافظه وجود دارد:
:كملع بز و
byte address) ts the address oP the اوستصووكي اوجنيصا) جوجسلله لويد
ost siquiPiccat byte
Liths eric: ©
word uddtess is the uddress oP the beast siqaiPizcat byte
BigEndianByte Bro Bra B+2 قب
صفحه 15:
ترتیب بایت های یک کلمه در حافظه
memory address
B=200is the baseaddressin this example
در معماری 00710505 میتوان پردازنده را برای هر یک از اين دو روش تنظیم کرد.
صفحه 16:
|انواع اصلی دستور العملهای 0168)
° Orikwetic
۰ ریا
© Ploaticry Prict
© Qewory wees iestruntivas
* bowd & tore
ربا اون و
8
Cocctiiccal Broads ©
Ol & Reta ©
صفحه 17:
* دستورات محاسباتی
٩ چهار دسته دستورات محاسباتی وجود دارند:
)۶
Gubirant ©
Dutiphy ©
Divice ©
صفحه 18:
*: ادستورات محاسباتی
٩ تمامی دستورت (),9) نظیر دستورات جمع و ضرب دارای
9 عملوند هستند: یکی برای مقصد و دو تای دیگر برای مبدا
داده ها. هر سه عملوند ها باید یکی از رجیستر های DIPS
باشند. تمامی محاسیات 0 بیتی هستند.
°Core: ۸ 2 8 + ۶
E=F-A;
OIG code: add $t0, 551, 2
sub $54, $55, $s0
© لول اه لبون (verti unkered)
Osseubly hrocuece Porat
تن پر poder سح سا سر و یت
صفحه 19:
٩ اصول معماری:
۶ تمامی محاسبات بر روی داده های رجیسترها انجام میشود.
یعنی نمیتوان عددی را که در حافظه ذخیره شده است با یک
رجیستر جمع کرد. برای اینکار ابتدا باید محتوی حافظه به
رجیستر به منتقل شده و عملیات بر روی داده های رجیستر ها
انجام شود.
٩ ترتیب اپراندها هميشه ثابت است: اول مقصد نوشته میشود.
صفحه 20:
نوشتن توضیحات در برنامه نویسی به زبان
*7 اسمپلی 216۳8)
وی 0۱۵ ۲ لس Wask (#) is ©
لحه هه ۱
لمحي سا wll
صفحه 21:
دستورات محاسباتی
Odd Gub یه لس
یکعدد 18 ببیتییا علاهتو یا بمدونعااهتوا با ییکیاز رجیستر های18)
بیتیجمم / تفریقمینماید.
لها + وه سوق ۶ و یل
تسم
۵-0-0
wht SD, 90 # SM = SO
تلم ,له Brita: هطلس
:مسا اس سم تسه
bet ry, worry, Krordar vdeo #Orword مهو تا
صفحه 22:
DIPS تبديل برنامه 0 به اسمبلى ©
a=b+¢+d = 6;
© Oreck ioto wotiple مس
add $t0, $sl, $s2 # temp =b+c
add $t0, $t0, $s3 # temp = temp + d
sub $s0, $t0, $s4 # a = temp - e
© :صصح( O since tae oP OC way bredk up isto sever
foes oP OIPG.
صفحه 23:
© Wow do we do this?
f= (gi ceih)) = (Ge DN
® Ose itterwediute tewporury reuster
add $t0,$s1,$s2 # temp =g +h
add $t1,$s3,$s4 # temp = i+ 7
sub $s0,$t0,$tl # f=(gth) -(i+j)
صفحه 24:
دستورات منطقی
607168 برخی ازستورلت منطقی موجود در *
AND
© biwise BOO betwers revises
* and $t1, $s0, $s1
OR
© biwise OR betwerc reisters
* or $t1, $50, $s1
NOR
۶ Otwee DOR betwers registers
۰ ۱۵۲ 51, 550, 1
* nor $t1, $t0, $0 # $t1 = NOT($tO)
لین للجم
© andi wd ori
صفحه 25:
: دستورات دسترسی به حافظه
© داده:هاارا بین خافظه و رجیسترها منتقل میکنند. دازای 2 اپراند. میباشند:
bowd/Gtore تمس )را
Porerat( Foret): ما لاو
oe # Oxowed مهس kebet
Nes
wanvber | | Dawe oP revister to yet bose ©
undress Prow
* آدرس داده در حافظه بصورت زیر محاسبه میشود
ین + لد Ocktress = Gouwve Ouse موی و
صفحه 26:
Lod Oprd : مثال
lw $s0, 4($s3)
AP $83 kos the vote 100, this wil copy the word ot
wewory lovato 104 to the revister ۰
$s0 <- Memory[104]
صفحه 27:
sw $s0, 4($s3)
٩1۳ 553 kas the vole 100, this wil copy the word ia
revister $SO0 میا روج صا 104.
Memory[104] <- $s0
صفحه 28:
* اخواندن از حافظه
lw R6, O(R5) #RO <= weo[OxIF]
4 bytes wide
0x12345678
Program Col
0x00000004
struction register 0x00
‘0x00000014
صفحه 29:
© Out: [OE] =k + O[O];
ussuve kia $50 ued base address of the ora
in $9)
© O1PC ote: سا $1, OE($s9)
add $0, $50, $O
so $0705 ($20)
این نحوه آدرس دهی طراحی دستورالعمل ها را ساده کرده و به پیاده سازی آرایه ها و استراکچرها کمک میکند
صفحه 30:
دستورات دسترسی به حافظه
Mnemoni
2
LB
LBU
LH
LHU
LW
SB
sw
SH
Instruction
Load Byte
Load Byte Unsigned
Load Halfword
Load Halfword Unsigned
Load Word
Store Byte
Store Word
Store Halfword
صفحه 31:
O code ze ty;
O1PG ode:
b$O, w # pu دم رب ۴و له 500
by $50, O($) # pul contents Pw tio $oD
0 صم بر خاد وسسطله انح # بر ,لم8 ط
2-0 صم بر خام صصص نج 4# (0)50 ,$20 by
526 م تحص م ty, للك # 20 ,520 ,596 لد
k$O,z # prt kdoos of zt $O
sw $50, O($C) # put cocteuts oF $50 tio z
tod ockbess koe brad word , sw store word وا
و iy مق رورت با اه وله ببس Det load ackdress (ha) to
0 اه له مت جعاررا () مر صحدجب (500) 0
صفحه 32:
انتقال بلادرنگ مقادیر 00 بیتی به رجیسترها
۶ اینکار در دو مرحله با انتقال 40 بيت با ارزش و کم ارزش و ترکیب آنها صورت میپذیرد
۶ 60 بیت با ارزش با دستور ملسم جد لما منتقل ميشود.
* lui $t0, 1010101010101010
ae ae
1010101010101019] 2 0
filled with zeros
= Then must get the lower order bits right, i.e.,
1ه 560, 50, 10
0 ا/ 1010101010101010
۳ 8088008800800000 ( 60
ori
1010101010101010 | 1010101010101010
صفحه 33:
این دستورات سیر اجرای برنامه را تغییر میدهند
یعنی اينکه دستور بعدی که باید اجرا شود را
مين متك
انواع مختلف دستورات كنترلى
broackes لیس و
broach) امملمیمی) عون و
اه لسن و
اه لسن و
صفحه 34:
*: ادستورات انشعاب
٩ دستورات انشعاب شرطی در 0010008 عبارتند از:
086 510, $t1, Label
060 500, 1, 1
Cxanvple: P (Fa) kK =it+5 و
bne $s0, $51, Label
add 553, 550, 1
Label: a eee
© ote the reversdl oP the coerdiica Prove equaliy te icequtity!
صفحه 35:
۶ دستورات انشعاب غيرشرطى در 0040008 عبارتند از:
j label Oucoediticcd jc
jr $t® “ueop reyster”. dup to the iestruniiod speviPied ia reyister
$O
© :میج
if (i!=j) beq $s4, $s5, Labl
h=itj; 2300 553, 554, 5
else j Lab2
h=i-j; Labl:sub $23: ee $s5
Lab ۰
صفحه 36:
دستورات کنترلی
© اغلب در کنار دو دستور فوق از دستوردیگری نیز استفاده میشود:
۰
اد ای اد I] set P tess thoa (vo! ord w/o oe cove dite)
* $00, $00, ا
se
80 20
از اين دستور اده میشود: ۶
صفحه 37:
نحوه محاسبه آدرس در دستورات کنترلی
bee SPSS Lobel Dent tetuntion is ot Lobel PGP 4 $C
ودط 302,56 Lobel ع اما هط مصتصصصم 9د( 542 - 56
1 op rs rt 16 bit address
PO-retaive uddressicny *
* فرمت این دستورات از نوع Dye است که در آن آدرس بصورت
یک مقدار 48 بیتی نوشته میشود. اين مقدار بصورت یک افست نسبت
به مقدار رجیستر (۳6) نوشته میشود.
صفحه 38:
£ نحوه محاسبه آدرس در دستورات کنترلی
© jj Lubel Ora iestruntivg is ut babel
J op 26 bit address
Pseudodirent addressing ®&
در اين دستور فقط از بیت های با ارزش (6*) استفاده میشود. #
90 -bi juwp address = F Oost GiguiPiccat bits oP PO
pourdteoied wih CO-bit word address (or CO- bit
byte address)
Oddress bounties ve CGO OO
Cor torqer distraves! dup reyster JP required.
صفحه 39:
۷
٠ LOOP: mult Fi $19, $10 # RO = R19*R10
$8, 1000($9) # R8 = @(R9+1000)
ins $8, $21, EXIT
add $19, $19, $20 #i = i+ j
j LOOP
EXE e ois
© Osenve LOOP te phaoed uf bouts OOOOO
covop o | | w | o | o ۴
مممه 00] 0 | © 000
cooop 0 | 0 | a 9
coo o | | co] ©] ه [ ©
ooo 0. 20000
همه
صفحه 40:
:؛ امتالی ازپیاده سازی LOOP
لو و
wane = 0;
Por (= ©; 1 <p; ++)
pane = sur + x}
owe:
ده و اج ند توق 390 390 , ond $58 reeprowel). Dib aoe $M Por 1 ocd $4 لصي جا وذ
qa
whl $50, $2erv, Sere #am =O
kt $0, $zerv, $2ero #۱20
21 $0,500, $24
eq $0, $2erv, LoopPad #1 <p 2?
uk! $50, $50, $-D # vn = nw tx
wet GO, $0, $0 +
ميدقا سار
:بسا
صفحه 41:
:* اصدا زدن توابع و بازگشت ازآن
۶ از این دستور برای صدا زدن برنامه فرعی استفاده میشود:
jolt jusop & bok fostruvtioa
jl stores the netura address it (RO ued jusops to address fo
3
اين دستور آدرس بركشت را در رجيستر )9 قرار ميدهد و به
آدرس ذكر شده دردستور انشعاب ميكند.
* برای بازگشت از برنامه فرعی از دستور زیر استفاده میشود:
ir Rey[ROG]
صفحه 42:
ذخیره رجیسترها در هنگام صدا زدن توابع
تودرتو
© بعلت محدودیت رجیسترها لازم است تا محتوی رجیسترهائی را که برای
تابع مهم هستند قبل از صدا زدن تابع ذخیره نموده و بعد از بازگشت از
تابع آنها را بازیابی نمود.
۶ رجیسترها در پشته ذخیره خواهند شد. برای اينکه برنامه ها مجبور
نباشند تمامی رجیسترها را ذخیره نمایند قاعده زیر رعایت میشود:
٩ تابع صدا زننده رجیسترهای زیر را ذخیره و بازیابی میکند:
5۵0-5090-80-0
© تابع صدا شونده رجیسترهای زیر را ذخیره و بازیابی میکند:
50-5 9
صفحه 43:
دستورت شلف
MIPS Shift Instructions
+ Format: op code/dest reg/src reg/shift amount
sll $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 bits
Type of shift Left Right
Logical _ sll sllv srl srlv
Arithmetic (none: use sll) sra srav
Rotate rol ror
صفحه 44:
: اخلاصه دستورات
۰ ۵
هوا ب words but addresstay byes
مه ات reysters vol
و مها ۰
300 551, 552, 3 591 - 552 + 3
طلاد 551, 552, 3 551 < 992 - 3
lw $s1, 100($s2) $s1 = Memory[$s2+100]
sw $51, 100($s2) Memory[$s2+100] = $s1
صفحه 45:
مثالی از یک برنامه 0
Explanation:
index k: $5
base address of v: $4
address of v[k] is $4 + 4.$5
صفحه 46:
*: افرمت دستورات
٩ فرمت و طول دستورات کامپیوتر پایه مانو ثابت و یکسان بود.
در حالت کلی:
* اگر اندازه کد تولید شده مهم باشد از دستوراتی با فرمت متفاوت
استفاده میشود
* اما اگر کارائی ( سرعت) مهم باشد از دستوراتی با طول یکسان
استفاده ميشود.
Out:
صفحه 47:
افرمت دستورات DIPG
* طول هر دستور ©© بيت است.
۴ هر دستور به تعدادی لاج:۳) نقسیم ميشود. هر فیلا توضیحی در مورد
دستور العمل ارائه میدهد.
* از آنجائیکه دستورات مختلف نیازمند ارائه توضیحات مختلفی هستند لذا
در 16۳08) سه نو ع فرمت مختلف ( ولی با طول یکسان) برای
دستورات در نظر گرفته شده است.
LD operatic: اما و لت بو سس و وخ( و
۰ | میج ۰
سمل ۰
06 و وا سره طسوت سل تاه له عمط و ول
اس jacop deviate
صفحه 48:
افرمت دستورات O1IPG
© © نوع فرمت مختلف بصورت زير هستند:
16
6 5
ان نی مي Note the regularity of
instruction encoding.
5 6 Thisisimportant for
‘R-Type rd }hamt} func implementing an efficient
pipelined CPU.
26
J-Type| Offset addedtoPC
صفحه 49:
فیلد های مختلف دستورالعمل ها
۱ operciiva oF the icstruciiva
© ور First reqster source اوه
امه سوه زو لو بر و
reqsier destivaiod pperond لس و
© shot shift aout
را را 9
ah = OC ®
2 وله ۶
صفحه 50:
2 ,551 ,580 300 :طامصصع »
952-8 , 851217 ,98028 امه ما ویر و
) میسیب ©
000000 10001 10010 01000 00000 100000
H shat func
iS
0 ۳5 3
صفحه 51:
R-Typetl sis
opcode | rs | rt | rd samy funct
* این دستورات دارای pporde=O
بوده و برای عملیات ()را9) استفاده
میشوند.
۴ عمل مورد نظر توسط فیلد مشخص
امس در
wnt: OC
wb: OF
صفحه 52:
فرمت دستور BOO
| |
| op | rs | rt | rd [shame] funct |
۱۳111111111111 111111 111
۱ 8 bts |
این فرمت برای تعداد زبادی دستور غیر از ۸010 نیز استفاده ميشود.
که همه اين نوع دستورات 1-3706 نامیده میشوند.
صفحه 53:
؟؟ اندکنیگ دستور
Por add:
۶ Ops ®,, (000000)
* funct 296, (100000)
لس ی
موی 851 ,(10060) م46 550 *
...ريركت 581 ,(01000) يروك ٩0 ۶
300 550, 51, 0
000000 10001 01000 10000 00000 100000
| op | rs | rt | rd shame] Funct |
بصورت 11,027 مقدار اين دستور برابر است با:00 ©6600 ©0686
صفحه 54:
دستورات م۳٩
immediate
rt
rs
I-Type Format
Similarityin opcode for Cw & sw simplifieshardware
opcode
Oped:
۰ W198 (oom)
* و 0۵ )00000(
هه ۲ اج ۱ سا سل لسن ۰
rst base reqister
rt
© deviraioa reyister Por bu
* source revipter Por store
ieediate: OPP set Prow base
۰ : 26 و )60-0(
صفحه 55:
GO LO] ss افرمت ::
لین I+ S bie -S bits ++ 3 bis جيرا © مز
| op [rs | rt | address [
۱۲1۲۲11111 11111111 1111111111111111
۱ 8 bts |
۲5 is the base register
rt is the destination of a load (source of a store)
address isa signed integer
صفحه 56:
lw $s0, 24($t1)
100011 01001 10009 0
| op [| rs | rt | address |
sw $s0, 24($t1)
101011 01001 10000 0000000000011000
| op [rs | rt | address [
صفحه 57:
فرمت دستورات با آدرس دهی بلادرنگ
03 ee 16
T-Type Format | opcode | rs | rt immediate
* برای دستورات ()را9) که نیاز به یک اپراند ثابت دارند استفاده میشود. (,.ب.ج
(acer
© همجنين براى سما كردن مقادير ثابت از حافظه بكار ميرود.
© مقادير ثابت بصورت يك عدد 10 بيتى كد ميشوند. لذا در رنج -66© ty (CPC)
خواهند بود.
© مثال:
aki RF, (RO, PO
sh RI, RE, GO: see Rey[RYJHC F [> سا Rey[RIYJ=O
صفحه 58:
دستورات حول
6 26
opcode Offset added toPcra
J-Type Format
© دستورات پرش غیرشرطی به فرم سر" کل کد ميشوند.
© ايكد دستور ل برابر با 2 و اپکد دستور ال برابر با 5 می
باشد.
٩ مقدار جابجانی نسبت به ۳60+6۴) محاسبه میشود.
صفحه 59:
:3 امد های آدرس دهی Dips
موی
ی
۱
ی
ki RF, RO, REO # Rew[RE]=Rep[RO]+Reww[RE] ©
متسس فيه
by RE, (DORA) Freep[RE Ree [RE]+Dew[Rere[RY] +10] ©
مسلط ۲ دو) ۰
مت ]
۱
© WRF, OR) دزم( ]مس ]0[
dee he ent wate | RO) vey bre زرح وف سيب
© WRF, OPOO(RO)
صفحه 60:
صفحه 61:
عو صناص وص و كن جع 12)
٠ )(۱۳۵ جوم سوه امیس thot que the tusiod oP ot
wore expressive جموم و سوه و لصا باه و نا راو ماس
siopler, “red” instructive.
to the bo (ood ockdress) we saw oo leet lecture, you cos use the fi له و و
:صصص احا ولت جوم عي كمه
ae $a0, 2000 # Load immediate 2000 into
$a0
move 521, 0 # Copy $tO into $al
© Dkey we probubly clewrer thew their correspoudiay OIPG iestructions:
add $a0, $0, 2000 # Initialize $a0 to 2000
add $al, $t0, $0 # Copy $t® into $al
صفحه 62:
Grack § aay
٩ پشته محلی از حافظه اصلی است که جهت ذخیره داده ها
استفاده میشود.
٩ موارد استفاده از پشته
* ذخیره متفیزهای یک برنامه
ذخیره محتوی سایر رجیسترها وقتی که یک برنامه فرعی صدا زده میشود
؟ کمک به ترجمه عملیات محاسباتی با روش RPN
* رجیستر 0[ محل آخرین داده ذخیره شده در پشته را مشخص میکند
at ah : ۰ وخ Se
عملیات زیر روی پشته تعریف میشوند:
Ook هو
GPECOA ORCEO[CO]
۵۵۸ +0
صفحه 63:
:؟ اپشته و برنامه های برگشت پذیر
© استفاد از پشته باعث میشود تا امکان پیاده سازی برنامه های
پذیر فراهم گردد.
۶ با استفاده از پشته میتوان برای هر نسخه از تابع صدا زده شده
حافظه جداگانه ای در نظر گرفت
٩ آرگومانها و متغیرهای محلی را میتوان در پشته ذخیره نمود.
٩ آدرس دهی متغیرهای محلی و آرگومانها نسبت به موقعیت پشته
انجام میشود.
© بازگشت از توابع عکس حالتی است که صدا زده شده اند
صفحه 64:
»در 00410008 پشته از آدرسهای بالا به سمت آدرسهای پانین
رشد میکند.
٩ هنگام جاصم کردن داده در يشته بايد مقدار رجيستر 2-8 را
كاهش داد.
High address
Stack pointer
jgnack
29
(r29) 2
1 ۳
Ttem 1
صفحه 65:
*: استفاده از cols stacks صدا زدن تابع فرعی
؟ قبل از صدا زدن تابع مقادیر رجیسترها در پشته ذخیره میشود
e تابع با استفاده ازدستور صدا زده میشود: حوح(» ل
© در پایان اجرای تابع» برای بازگشت به برنامه اصلی از دستور
(juny reqipter) مز استفاده ميشود.
© بعد از بازكشت از تابع مقادير رجيسترها از يشته خارج
ميشوند.
صفحه 66:
مثالی از استفاده از پشته
Gave $20 ud $54:
tow address
bach ای
Sev,
صفحه 67:
مثالی ازپیاده سازی تابع
int func(int g, int h, int i, int j)
int f;
f=(g+h)-(it+j);
return ( f );
// aching - $a0,$a1,$a2,$a3, f in $50
#make room in stack for 3 words
#save the regs we want to use
+ و < #910
ز + 21 ۸961
#$s0 has the result
#return reg $v0 has f
# restore $s0
# restore $to
# restore $t1
# restore sp
(caller var)
$sp, -12
8($sp)
4($sp)
(م0)55
920, 1
922, 3
90, 1
$50, $zero
0($sp)
4($sp)
8($sp)
$sp, 12
$sp,
$tl,
560,
550,
560,
51
$s0,
$vo,
$s0,
$to,
51,
$sp,
$ra
lw
lw
lw
addi
ir
ue ddl oot have b restore $D-$O و
revere SoD-$o'P (sawt be prevenied by cole) وا لت و رن و
صفحه 68:
نمایش لهستانی معکوس
Reverse Potsk Dvtation (RPO)| 32°
٩ روش معمولی نمایش عبارات ریاضی:
+۳0
»روش (00 برای نمایش عبارات ریاضی: عملگرها قبل از
عملوندها قرارمیگیرند.
@O*CO*+
»روش (8020) براى نمايش عبارات ریاضی: عملگرها بعد از
عملوندها قرا ميكيرند
* 06ت *+
صفحه 69:
:: استفاده از پشته برای پیاده سازی REPO
در برخی ماشینهای حساب و کامپیوترها از ترکیب پشته و
00 رای محاسبه عبارات ریاضی استفاده میکنند.
* ابتدا عبارت بصورت (6۳6) نوشته میشود ) معمولا اینکار
توسط کامپایلر انجام میشود(
© در هنكام محاسبه
© با برخورد به عملوندها آنها را در يشته 201)8/1) ميكنيم
© با برخورد با عملكرها » دو داده موجود در بالاى يشته <000©)شده
و عمل مورد نظر بر روى آنها انجام و حاصل دريشته ,//5)0)8)
میشود.
صفحه 70:
:: امثال
برای محاسبه عبارت زیر یک کامپایلر ممکن است کد زیر را
تولید نماید. webto*d
عبارت معادل 860) بصورت زیر خواهد بود: و
1
مس coor
0
ah 9 ” ۰ 1 م۰ : { ۳ 5 eee
در اینصورت محتوی پشته بصورت زیر خواهد بود:
d
ES 8 5
b 3 ۳۳ 3
b
POGW ۶ POGHL ی POGHL d MOL COO por
صفحه 71:
© با مطالعه پردازنده كمكى 0010205 كزارشى در مورد
محاسبات اعشارى و دستورات يونصم بج#دصا! مورد استفاده
دراين يردازنده ارائه دهيد.