<< 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.
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à:
).
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] | R1R1+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
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?