<< Chapter < Page Chapter >> Page >

Việc gọi thủ tục có thể được thực hiện bằng chuỗi lệnh sau đây :

ADDI R30, R30,4 ; R30 là con trỏ ngăn xếp

STORE R31, (R30) ; lưu giữ địa chỉ trở về

JMPL Ri ; gọi thủ tục

Người ta dùng chuỗi lệnh sau đây để trở về chương trình gọi :

LOAD R31, (R30) ; phục hồi địa chỉ trở về

Chương trình chínhBộ nhớ trongĐịa chỉa) Gọi thủ tục và trở vềb) Diễn tiến thi hànha) Khởi tạo ngăn xếpb) Sau lời gọi thủ tục 1c) Sau lời gọi thủ tục 2d) Trở về sau lời gọi thủ tục 2e) Sau lời gọi thủ tục 2 lần 2f) Trở về sau lời gọi thủ tục 2g) Trở về sau lời gọi thủ tục 1Hình II.9: Gọi thủ tục và trở về khi thực hiện xong thủ tụcThủ tục Proc1Thủ tục Proc2SUBI R30, R30,4 ; cập nhật con trỏ ngăn xếp

JMP R31 ; trở về chương trình gọi

Việc truyền tham số từ thủ tục gọi đến thủ tục bị gọi có thể thực hiện bằng cách dùng các thanh ghi của bộ xử lý hoặc dùng ngăn xếp. Nếu số tham số cần truyền ít, ta dùng các thanh ghi.

Các kiểu định vị

Kiểu định vị định nghĩa cách thức thâm nhập các toán hạng. Một vài kiểu xác định cách thâm nhập toán hạng bộ nhớ, nghĩa là cách tính địa chỉ của toán hạng, các kiểu khác xác định các toán hạng nằm trong các thanh ghi.

Địa chỉ từ là x cho cả hai minh hoạHình II.3: Minh hoạ hai cách sắp xếp địa chỉ trong bộ nhớChú ý rằng, trong các kiểu định vị, ta cần lưu ý khi chuyển đổi dữ liệu nhị phân giữa hai kiểu định địa chỉ liên quan đến ô nhớ, vì mỗi từ máy tính gồm bốn byte, mỗi ô nhớ chứa một byte. Như vậy, một từ máy tính được lưu trong bốn ô nhớ liên tiếp trong bộ nhớ trong, có nhiều cách xác một từ máy tính, trong đó, hai cách tiêu biểu nhất là:

  • Định vị kiểu Big-Endian: byte thấp nhất được đặt trong ô nhớ có địa chỉ cao nhất (IBM, Motorolla, Sun, HP

).

  • Định vị kiểu Little-Endian: byte thấp nhất được đặt trong ô nhớ có địa chỉ thấp nhất (Intel, DEC
  • )
Kiểu định vị Ví dụ về lệnh Giải thích
Thanh ghi Add R3, R4 R3  R3 + R4
Tức thì Add R4, #3 R4  R4 + 3
Trực tiếp Add R1, (1001) R1  R1 + M [1001]
Gián tiếp (thanh ghi) ADD R4, (R1) R4  R4 + M [R1]
Gián tiếp (bộ nhớ) Add R1, @ (R3) R1  R1 + M[ M [R3]]
Gián tiếp (thanh ghi + Độ dời) Add R4, 100(R1) R4  R4 + M[R1 + 100]
Gián tiếp (thanh ghi + thanh ghi) Add R3, (R1 + R2) R3  R3 + M[R1 + R2]
Gián tiếp ( t/g nền + t/g chỉ số + độ dời ) Add R1, 100(R2)[R3] R1R1+M[100+R2+ d * R3]
Tự tăng Add R1, (R2)+ R1  R1 + M[R2]R2  R2 +d
Tự giảm Add R1, -(R2) R2  R2 - dR1  R1 + M[R2]

Bảng II.4 :Kiểu định vị của một bộ xử lý có kiến trúc phần mềm kiểu thanh ghi đa dụng.

R1, R2, R3, R4 : các thanh ghi

R4  R3 + R4 : Cộng các thanh ghi R3 và R4 rồi để kết quả và R4

M[R1] : R1 chứa địa chỉ bộ nhớ mà toán hạng được lưu trữ

M[1001] : toán hạng được lưu trữ ở địa chỉ 1001

d : số byte số liệu cần thâm nhập (d = 4 cho từ máy tính, d = 8 cho từ đôi máy tính ).

Trong kiểu định vị thanh ghi, các toán hạng đều được chứa trong các thanh ghi.

Trong kiểu định vị tức thì, toán hạng được chứa trong lệnh.

Trong kiểu định vị trực tiếp, địa chỉ của toán hạng được chứa trong lệnh.

Trong kiểu định vị gián tiếp (thanh ghi), địa chỉ toán hạng được chứa trong thanh ghi.

Trong kiểu định vị gián tiếp (bộ nhớ), thanh ghi R3 chứa địa chỉ của địa chỉ của toán hạng như trong hình II.4

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Giáo trình kiến trúc máy tính. OpenStax CNX. Jul 30, 2009 Download for free at http://cnx.org/content/col10818/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Giáo trình kiến trúc máy tính' conversation and receive update notifications?

Ask