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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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  (last­in  d ng  vào­sau  ra­tr ỗ ớ ủ ụ M i th  t c luôn c n m t vùng nh   first­out) ủ ụ ớ đ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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 y­và­liên k t: jump­and­link)

Đ 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. 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 CE­UIT. All Rights Reserved.

26