Ế
KI N TRÚC MÁY TÍNH
Tu n 5ầ
Ế
Ộ Ệ
ế
KI N TRÚC B L NH (Ti p theo)
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
1
ộ ệ ộ ệ
ầ ầ
ế Tu n 05 – Ki n trúc b l nh ế Tu n 05 – Ki n trúc b l nh
ụ
M c tiêu:
ể
ể
ễ
ự
ệ
1.Hi u cách bi u di n và cách th c thi các l nh trong máy tính
ể
ổ ệ
ữ ấ 2.Chuy n đ i l nh ngôn ng c p cao sang assembly và mã máy
ể ổ ệ
ữ ấ
ơ
3.Chuy n đ i l nh mã máy sang ngôn ng c p cao h n
ế
ữ
ậ
ằ
4.Bi
t cách l p trình b ng ngôn ng assembly cho MIPS
Slide được dịch và các hình được lấy từ sách tham khảo:
Computer Organization and Design: The Hardware/Software Interface, Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011.
Copyrights 2017 CE-UIT. All Rights Reserved.
03/2017
2
ộ ệ
ầ
ế Tu n 5 – Ki n trúc b l nh
ủ ụ
Th t c (Procedure) cho assembly MIPS
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
3
ủ ụ
ỗ ợ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy Tính
ộ
ủ ụ ử ụ
ộ ươ
ộ ấ
ể
ớ
ậ ụ ồ
ươ
ừ
ể ượ
M t th t c (procedure) hay m t hàm (function) là m t công c mà l p ụ ự trình viên s d ng đ xây d ng c u trúc c a nh ng ch ng trình, v i m c ừ ng trình đó d hi u h n v a làm cho mã ngu n đích v a làm cho các ch ươ ủ c a các ch
ữ ủ ơ ễ ể ử ụ c tái s d ng.
ng trình này có th đ
ươ
ứ
ứ
ề
ỗ
ẽ ượ
ư
c đ a vào
ộ
ộ
M t ch ộ ng trình có nhi u ch c năng, m i ch c năng s đ ủ ụ ặ m t hàm, ho c m t th t c
ủ ụ
ặ
ậ
ạ
ộ
ể ệ ậ
ỉ ầ ậ
ủ
ệ
ễ
ầ
ả
ộ
Các th t c ho c hàm con này cho phép l p trình viên t ờ i m t th i đi m ch c n t p trung vào m t ph n c a công vi c, d dàng qu n lý vi c l p trình h nơ
ữ ấ
ươ
ớ
ng trình v i
ố ỗ
ư ứ
ể ư
ứ
ề
ộ
Assembly cũng gi ng nh các ngôn ng c p cao, m t ch ộ ủ ụ nhi u ch c năng thì m i ch c năng có th đ a vào m t th t c khác nhau.
ậ
ữ
ể ặ ọ
ấ ả ề
ườ
ạ
ượ ị
ủ ụ
ặ
ộ ố Chú ý: Các thu t ng Routine/Procedure/Function có th g p trong m t s t c đ u ng khác nhau; trong assembly và ph m vi môn h c này, t môi tr đ
c d ch là hàm ho c th t c
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
4
ủ ụ
ỗ ợ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy Tính
ể ự ủ ụ ộ ươ ả ướ ng trình ph i tuân theo sáu b c
Đ th c thi m t th t c, ch sau:
ố ở ộ ơ ủ ụ ấ ượ ể ặ 1. Đ t các tham s m t n i mà th t c có th truy xu t đ c.
ủ ụ ề ể ể ể 2. Chuy n quy n đi u khi n cho th t c.
ữ ầ ư ầ ế 3. Yêu c u tài nguyên l u tr c n thi ủ ụ t cho th t c đó.
ự ệ ệ 4. Th c hi n công vi c (task).
ả ở ộ ơ ươ ấ ượ ư ế 5. L u k t qu m t n i mà ch ể ng trình có th truy xu t đ c.
ả ề ủ ụ ị
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
5
ủ ụ ượ ươ ề ị ề ị ộ ể 6. Tr đi u khi n v v tr mà th t c đ ể ượ ọ ừ nhi u v trí trong m t ch th đ c g i t ộ ọ c g i. Vì m t th t c có ng trình.
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ầ ư
ớ
ướ ủ
c c a MIPS v i thanh ghi c n l u ý:
ệ ề
ượ
c dành cho h đi u hành và
ậ
ử ụ
ườ
ng.
ề
ố
ể
ộ
ế
ố ế ạ ượ ư
i đ
ị ả ề ủ
c s d ng đ truy n b n tham s đ n m t ố c l u vào ể ư c s d ng đ l u giá tr tr v c a
ạ
ượ ử ụ ư
ượ ử ụ
ư
ư c s d ng nh các thanh ghi t m. ị c s d ng nh các thanh ghi l u giá tr
M t s quy ộ ố Thanh ghi $at ($1), $k0 ($26), $k1 ($27) đ assembler; không nên s d ng trong lúc l p trình thông th Thanh ghi $a0$a3 ($4$7) đ ượ ử ụ ề th t củ ụ (n u có h n 4 tham s truy n vào, các tham s còn l ố ơ ượ ử ụ stack). Thanh ghi $v0$v1 ($2$3) đ hàm. Các thanh ghi $t0$t9 ($9$15, 24, 25) đ Các thanh ghi $s0$s7 ($16$23) đ ề ữ b n v ng.
ệ
ộ ố
ờ
ượ
ể ầ ụ ố ủ
ạ
ả ượ ọ
ị ề ữ
ư ư
Trong MIPS, vi c tính toán có th c n m t s thanh ghi trung gian, t m th i, các ọ thanh ghi $t nên đ ng g i là thanh ghi t m); còn k t qu cu i c a phép toán nên l u vào các thanh ghi $s (nên thanh ghi nhóm $s th
ạ ườ c dùng cho m c đích này (nên thanh ghi nhóm $t th ế ườ ng đ
c g i là nhóm thanh ghi l u giá tr b n v ng)
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
6
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ớ
ướ ủ
ầ ư
c c a MIPS v i thanh ghi c n l u ý:
ạ
ộ ị ủ
ướ
ự
ủ ụ ế ử ụ i giá tr c a thanh ghi $s đó tr ỏ
ủ
ả
ả ề ạ
ướ ượ
M t s quy ộ ố Theo quy ướ ủ ấ ỳ c c a MIPS, m t th t c n u s d ng b t k thanh ghi lo i $s ẽ ả ư ạ nào s ph i l u l c khi th c thi hàm. Và c khi thoát ra kh i hàm, các giá tr cũ c a các thanh ghi $s này cũng ph i tr ượ c tr v l đ
ị i. Các thanh ghi $s này đ
ư ế ụ ộ ủ c xem nh bi n c c b c a hàm.
ượ
ạ
ạ
c xem là các thanh ghi t m, nên vi c s d ng thanh ghi
ầ ư ạ
ạ
ư
Thanh ghi lo i $t đ ủ ụ lo i $t trong th t c không c n l u l
ệ ử ụ ạ i nh các thanh ghi lo i $s
ạ ộ
ượ
ấ
ấ
ớ
ố
ậ
ố
ộ
ữ ả ướ
ế ậ ụ
ấ
ộ
ể ộ Vì thanh ghi là lo i b nh có t c đ truy xu t nhanh nh t, đ c dùng đ ế ữ ữ ệ ư ạ l u tr d li u trong m t máy tính và s thanh ghi là h n ch nên l p trình ố ợ i đa nh t. h p ng ph i h
ng đ n t n d ng thanh ghi m t cách t
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
7
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
Các khái ni m và tên g i: ọ ệ
ị ế ớ
ỉ ả ề return address): là m t liên k t t ả ề ủ ụ ộ ị ộ ỉ ọ i vùng đang g i ượ c
ươ
ộ
ng trình đang th c thi và m t th t c đ
ự ệ
ươ
ỉ ệ
ượ
ủ c g i, sau khi th ự ng trình và th c ự c th c thi
ả ủ ụ ượ ị
ủ ụ
ủ ụ ượ ọ ụ ể C th : khi ch ự ụ ề ạ ự ồ t c th c thi xong, lu ng th c thi l nh ph i quay v l i ch ị ế ệ ệ ọ c g i. Đ a ch l nh đ hi n ti p l nh ngay phía sau th t c đ ỉ ả ề sau khi th t c hoàn thành chính là đ a ch tr v .
ữ ở Đ a ch tr v ( cho phép m t th t c tr v đúng đ a ch ; trong MIPS, nó đ ư l u tr thanh ghi $ra.
ộ ọ ủ ụ ữ ấ
ng trình g i m t th t c và cung c p nh ng giá ế t.
ượ ư ủ ụ ữ ệ ộ ỗ
ấ ở c l u ả c cung c p b i caller và sau đó tr
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
8
ề Caller: Là ch ươ ố ầ ị tr tham s c n thi Callee: Là m t th t c th c thi m t chu i nh ng l nh đ ộ ự ố ượ ữ ữ ự tr d a trên nh ng tham s đ ề ề đi u khi u v cho caller.
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
Các khái ni m và tên g i: ọ ệ
ỉ ủ ệ ứ ị
ươ ự Program counter (PC): Là thanh ghi ch a đ a ch c a l nh k ế ế ượ ng trình. ti p đ c th c thi trong ch
ượ ọ ỏ ệ ỏ Thanh ghi PC còn đ c g i là con tr PC hay con tr l nh
ỗ ệ ế ế ể ươ ộ c l u trong m t word 4 bytes, ng trình, c th c thi trong ch
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
9
Trong MIPS 32 bits, m i l nh đ ượ ư ự ượ ỉ ớ ệ i l nh k ti p đ do đó, đ ch t ả ừ ệ PC tăng lên 4 (ngoài tr l nh nh y)
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ấ
ộ ộ ớ ữ ệ
ầ
ợ ữ ệ
ỗ ể ư ạ
ề ế
ộ ủ
ụ
ặ ế ố
ớ
ả
ứ
ơ
ố
ụ ủ ụ ụ ượ
ủ ụ ề ượ ư
ư
ộ Hình nh ví d c a m t stack v i các frame (stack này ph c v cho th t c mà b n tham ố ầ s đ u vào đã đ c truy n thông qua thanh ố ứ c l u trong stack ghi, tham s th 5 và 6 đ nh hình)
ạ ộ
ướ ộ
Các khái ni m và tên g i: ọ ệ Stack (ngăn x p): Là m t c u ế trúc d li u trong b nh cho ệ ư vi c l u d li u theo hàng đ i ạ c (lastin d ng vàosau ratr ỗ ớ ủ ụ M i th t c luôn c n m t vùng nh firstout) ủ ụ ớ đi cùng v i nó (vì m i th t c đ u ầ i các bi n c n không gian đ l u l ụ c c b c a nó (là các thanh ghi $s ặ ượ ử ụ c s d ng trong thân hàm ho c đ ộ ể ế các bi n c c b khác), ho c đ ố ứ ch a các tham s input n u s tham ặ ị ả ố ớ s l n h n 4 ho c ch a giá tr tr ị ả ề ớ ố ế ề v output n u s giá tr tr v l n ướ ượ ớ ơ h n 2). Vùng nh này đ c quy c ư ộ ho t đ ng nh m t stack.
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
10
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
ề
Stack, Heap, Data và Text Segment trong
ớ ủ
ớ ấ
ự
ộ
ộ
ể ượ ấ
ạ
c c p phát thêm khi đ t
ớ ạ
i h n.
ươ
ạ
ng trình.
Tính ố Xem thêm v cách b trí vùng ươ ộ ộ b nh c a m t ch ng trình Heap: Là khu v c b nh c p phát đ ng, có th đ ế đ n gi Text segment: Đo n mã ch
ấ
ớ
ươ
ữ ệ
ế
ộ C p phát b nh cho ch
ng trình và d li u ki n trúc MIPS
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
11
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ị đ
ế ể ấ ờ ỉ ủ ố ầ ử ượ ầ ệ ạ đ ấ c c p phát g n nh t i).
ầ ử ượ c c p phát cu i cùng cho đ n th i đi m hi n t ị
ỏ Frame
ượ ề
c tr t ư ế
ướ i b i $fp (xem hình slide tr ầ ỏ ớ ở c tr t c)
ừ ị ố ầ ự ỉ ả đ a ch cao gi m d n xu ng
ủ ệ ỗ ự ể ượ c xây d ng theo ng làm vi c mà ta tuân th các quy
Các khái ni m và tên g i: ọ ệ Stack pointer (SP): Đ a ch c a ph n t ấ ứ (t c ph n t ư Trong MIPS, giá tr này l u trong thanh ghi $sp (29). Trong khi đó, thanh ghi $fp ($30) dùng làm con tr frame ( pointer). ỏ ớ ở ố ồ i b i Stack g m nhi u frame; frame cu i cùng trong stack đ ụ ư $sp, frame đ u tiên (cho vùng l u các thanh ghi cũng nh bi n c c ộ ượ b ) đ Stack đ ể t ượ c xây d ng theo ki u th pấ , vì th frame pointer luôn ở ế trên stack pointer. ấ ướ ủ c c a MIPS. T t nhiên stack có th đ Đây là quy ườ cách khác, tùy vào m i môi tr c.ướ
Copyrights 2017 CEUIT. All Rights Reserved.
03/2017
12
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
Các khái ni m và tên g i: ọ ệ
ầ ử ộ ọ vào stack g i là Push Push: Vi c l u m t ph n t ệ ư
ệ ấ ầ ử ộ ỏ ọ ra kh i stack g i là Pop Pop: Vi c l y m t ph n t
ệ ệ
ẩ ườ ậ ậ ệ ệ ủ ả ự ự ệ Trong t p l nh c a MIPS chu n, không có l nh Pop và Push. Vi c th c hi n này ph i do ng i l p trình th c hi n:
ộ ầ
ầ ử ư ồ
ị ứ ỉ
ầ ử ừ ượ ộ t
ữ ệ stack, d li u đ ồ ượ ị c load ra c
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
13
Theo quy ướ ủ vào stack, đ u c c a MIPS, khi PUSH m t ph n t ữ ệ ừ tiên $sp nên tr đi 4 byte (1 word) r i sau đó l u d li u vào word ớ nh có đ a ch đang ch a trong $sp. Ng ượ ạ c l i, khi POP m t ph n t ừ ứ ỉ ớ t word nh có đ a ch đang ch a trong $sp r i sau đó $sp đ ộ c ng thêm 4
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
14
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ượ ỏ
ươ ng trình chính, khi th t c đ ủ ề ề ể
ề ự ệ ệ ố ỏ ượ ự ẽ
ủ ụ ệ ọ ủ ụ ẽ ọ c g i, con tr PC s Trong ch ủ ụ ủ ụ ị ể chuy n quy n đi u khi n xu ng v trí c a th t c; sau khi th t c ể ệ c th c hi n xong, con tr PC s chuy n v th c hi n l nh đ ngay sau l nh g i th t c.
ặ ệ ự ệ ệ ượ ờ c th c hi n nh vào c p l nh:
Vi c này đ jal ten_thu_tuc jr $ra
ủ ệ ủ ụ ầ ượ c
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
15
ủ ụ (ten_thu_tuc là nhãn c a l nh đ u tiên trong th t c, cũng đ ủ xem là tên c a th t c)
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ể ọ
ệ
ế
ệ
ả
Đ g i th t c, dùng l nh ủ ụ
jal (L nh nh yvàliên k t: jumpandlink)
ệ
ầ
ị
Đ u tiên, đ a ch c a l nh ngay sau l nh ỉ ủ ệ
jal ph i đ
ả ượ ư ạ ể c l u l
i đ sau
ủ ụ
ề ạ
ự
ể
ể
ệ
ỏ
khi th t c th c hi n xong, con tr PC có th chuy n v l
i đây (thanh
ỉ ả ề
ể ư
ị
ỉ ả ề
ượ ư
ghi dùng đ l u đ a ch tr v là
ị $ra); sau khi đ a ch tr v đã đ
c l u
ạ
ỉ ủ ệ
ủ ụ
ủ
ế
ể
ầ
ỏ
ị
l
ể i, con tr PC chuy n đ n đ a ch c a l nh đ u tiên c a th t c đ
ự
ệ
th c hi n.
ậ
ệ ượ
ự
ệ c th c hi n trong
:ứ ự
jal theo th t
V y có hai công vi c đ jal
# $ra = PC + 4 # PC =
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
16
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ể ả ề ạ
ủ ụ
ự
ệ
ươ
Sau khi th t c th c hi n xong, đ tr v l
i ch
ng trình chính, dùng
l nh ệ
jr (jump regiser)
ặ ở
ệ
ệ ấ
ủ ụ
ự
ứ
ệ
ố
ị
L nh “jr $ra” đ t
cu i th t c th c hi n vi c l y giá tr đang ch a
ở ề ự
ệ
trong thanh ghi $ra gán vào PC, giúp thanh ghi quay tr v th c hi n
ủ ụ
ệ
ọ
ệ l nh ngay sau l nh g i th t c này.
jr $ra
# PC = $ra
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
17
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ỗ
ầ
ầ
ư ậ ể
ứ
ắ
ủ ụ ủ ặ
ả ủ
ươ
ừ
ể
ầ
ầ
ầ
ố
ượ c chia thành ba ph n. Ph n thân Nh v y, m i hàm con/th t c đ ầ ộ ủ ụ dùng đ tính toán ch c năng c a th t c này, b t bu c ph i có. Ph n ng đ u và ph n cu i có th có ho c không, tùy t ng yêu c u c a ch trình con.
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
18
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ủ ụ
ộ
ầ
ầ
ầ
ỉ
ụ Ví d 1: M t th t c ch có thân hàm (không c n ph n đ u và cu i)ố
ủ ụ
ự
ệ
ạ
ệ ọ Đo n code sau th c hi n vi c g i hàm con (th t c) tên ABC
add $t0, $t1, $t2
jal ABC
or $t3, $t4, $s5
j EXIT
ABC:
add $t0, $t3, $t5
sub $t2, $t3, $t0
jr $ra
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
19
EXIT:
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ụ
ủ ụ
ủ
ộ
ầ
ầ
ầ
ỉ
Ví d 2: M t th t c ch có đ ba ph n: thân hàm, ph n đ u và cu iố
ạ
ệ
ự
t đo n code th c hi n
ươ
ứ
ầ ượ
t ch a trong $s0, $1, $s2, $s3
ố
ề
ươ
ả ủ
ủ ụ ư
ế
ả
ủ ụ
ố
ả ủ
ế
ộ
ử ụ
ạ
ộ
Copyrights 2017 CEUIT. All Rights Reserved.
03/2017
ế Vi •Ch ng trình chính có: B n giá tr a, b, c, d l n l ị ố Ch ố ng trình truy n b n tham s này vào th t c tên “proc_example” ế ể ấ đ l y k t qu c a phép toán trên. Sau đó đ a k t qu vào thanh ghi $s6 •Th t c proc_example có: B n input (a, b, c, d) M t output, là k t qu c a phép toán: (a + b) – (c + d) Quá trình tính toán s d ng 2 thanh ghi t m $t1, $t2 và m t thanh ghi $s0
20
ố
ố
ướ
ủ ụ ố
ề ướ
ề
ọ c khi g i ề ả c, tham s truy n cho th t c ph i truy n
B n tham s truy n cho th t c proc_example tr ủ ụ hàm. (Theo quy vào các thanh ghi $a0$a3)
ệ
ị ả ề ủ ể ữ ệ
ướ
ứ
ệ
ự Sau khi hàm proc_example th c hi n xong, giá tr tr v c a c ch a trong $v0. L nh này chuy n d li u hàm theo quy ừ t
$v0 vào thanh ghi $s6
ầ
ầ l u d li u vào stack cho th t c.
ư ử ụ
ủ
ợ
ố
ươ
ứ
ệ
ớ
ầ ử
ủ ụ Do trong ph n ầ ữ ệ Ph n đ u: ướ c khi tính toán, giá thân hàm có s d ng thanh ghi $s0 nên tr ượ ư ế ị tr cũ c a $s0 nên đ c l u trong stack. N u có n thanh ghi ầ ộ ỗ ầ ư c n l u, m i thanh ghi m t word, ta c n 4n byte cho stack. Vì stack phát tri n ể ỉ ầ ườ ng h p này, ta ch c n 4 byte. Trong tr ấ ấ ể ừ cao xu ng th p, nên c p phát 1 frame (1 word theo ki u t Hai l nh này còn t cho stack) thì $sp tr 4.ừ ng ng v i ộ PUSH m t ph n t
vào stack
ả ả ề
ả ư
ế
ầ Sau khi tính toán, k t qu tr v ph i l u vào $v0 Ph n thân: ướ ư c nh quy
ỏ
ị
ầ ả
ả ượ
ư ủ c xóa đi b ng
ấ
ớ
ộ
c khi ra kh i hàm, giá tr đang l u c a $s0 ằ ủ i; và 1 frame c a stack ph i đ Hai l nh này t ầ ươ ứ ệ
ng ng v i POP m t ph n
ố Tr ướ Ph n cu i: ụ ồ ạ ph i ph c h i l cách l y $sp + 4. ỏ ử ra kh i stack t
03/2017
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
ủ ụ
ộ
ấ
C u trúc m t th t c/hàm con
ấ ỳ
ử ụ
ủ ụ
ụ
Trong ví d 1, thân th t c không s d ng b t k thanh ghi $s nào,
ở ạ
ể ư
ầ
ạ
nên không c n kh i t o stack đ l u các thanh ghi này l
i. Trong ví
ử ụ
ủ ụ
ả ượ
ụ
ở
d 2, thân th t c có s d ng thanh ghi $s, nên stack ph i đ
c kh i
ể ư
ế
ẫ
ướ
ư
ế
ả
ị
ạ t o đ l u; d n đ n tr
ả c khi k t thúc hàm ph i giá tr đã l u ph i
ả ề ạ
tr v l
i các thanh ghi và xóa stack.
ể ế ạ
ư
ụ
(L u ý: Code trong ví d 2 có th vi
t l
ầ i mà không c n dùng thanh
ể ấ ượ
ụ
ư
ệ ư
ố ghi $s0; nh ng ví d này c tình dùng $s0 đ th y đ
c vi c l u trên
ư ế
ự
ệ
ả
stack ph i th c hi n nh th nào)
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
22
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
Tóm l
i:ạ
ớ
ộ
c l u trong $ra ườ
ầ
ố
ơ
ề ượ ư c s d ng trong các tr ủ ụ ố
ặ
ể ị ả ề ợ ng h p này.
ủ ụ ủ
ị ủ ồ
ụ
ữ
ườ ỗ ợ c dùng h tr trong tr N u th t c có s d ng m t s thanh ghi lo i $s, thì theo quy ộ ố ạ ủ ụ ự c khi th c hi n th t c, giá tr c a các c h i ph c
ệ c l u tr vào stack và đ
ượ ầ ư
ế
ả ượ ư ủ ụ (Các thanh ghi $t không c n l u).
V i m t th t c/hàm con: ủ ụ Input: $a0, $a1, $a2, $a3 Output: $v0, $v1 Đ a ch quay v đ ỉ ị Stack đ ượ ử ụ ợ ng h p sau N u th t c (hàm con) c n nhi u h n b n thanh ghi đ làm ề ế ề ơ tham s ho c nhi u h n hai thanh ghi làm giá tr tr v thì ẽ ượ không gian stack s đ ế ử ụ ướ ướ c c a MIPS, tr thanh ghi này ph i đ ạ l
i khi k t thúc th t c
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
23
ỗ ợ
ủ ụ
ứ
ầ
Các Th T c H Tr Trong Ph n C ng Máy
Tính
Nested procedure:
ể ọ ồ
ủ ụ
Các th t c có th g i l ng vào nhau.
ủ ụ
ủ ụ
ủ ụ
ọ
Các th t c mà không g i các th t c khác là các th t c lá
(leaf procedures). Ng
ượ ạ c l
i là nested procedures.
ử ụ
ậ
ẩ
ầ
Chúng ta c n c n th n khi s d ng các thanh ghi trong các
ủ ụ
ẩ
ả
ầ
ậ
ộ
ơ
ọ
th t c, càng c n ph i c n th n h n khi g i m t nested
procedure.
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
24
ộ ệ
ầ
ế Tu n 5 – Ki n trúc b l nh
ế
ổ
ữ ủ ợ
T ng k t: Tu n 3 và 4 đã trình bày các n i dung liên quan đ n h p ng c a ầ MIPS, bi ng trình dùng assembly.
ế ươ ư ế ế ộ ộ ể ậ t nh th nào đ l p trình m t ch
ớ ộ ề
ươ ữ ấ ứ ể ư ỗ
ư ậ ộ ữ ấ ư
V i m t ch ng trình assembly dài, có nhi u ch c năng, nh l p ủ ứ trình ngôn ng c p cao, m i ch c năng có th đ a vào m t th ặ ụ t c (procedure) (nh các hàm ho c hàm con trong ngôn ng c p cao)
ậ ể ầ
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
25
ề Khi l p trình v i procedure cho MIPS, các đi m c n chú ý: stack, ớ ố $sp, $fp và cách truy n tham s .
ộ ệ
ầ
ế Tu n 5 – Ki n trúc b l nh
Lý thuy t: Đ c sách tham kh o ả ọ ế • M c: 2.8 ụ •
Sách: Computer Organization and Design: The Hardware/Software Interface, Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011.
Bài t p: ậ file đính kèm
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
26