lOMoARcPSD| 59285474
BÁO CÁO THỰC HÀNH LAB 4
MÔN KIẾN TRÚC MÁY TÍNH
MSSV: 23520253
Họ và Tên: Ngô Hữu Đạt
1. Thực hành với thủ tục
- Chạy từng bước theo dõi sự thay đổi của thanh ghi PC, $ra, $sp, $fp
trong 2 hình trên.
Hình 1.
Bước
PC
$ra
$sp
$fp
1
0x0040001c
0x00400004
0x7fffeffc
0x0000000
2
0x00400020
0x00400004
0x7fffeffc
0x0000000
3
0x00400024
0x00400004
0x7fffeffc
0x0000000
4
0x00400028
0x00400004
0x7fffeffc
0x0000000
5
0x0040002c
0x00400004
0x7fffeffc
0x0000000
6
0x00400030
0x00400004
0x7fffeffc
0x0000000
7
0x00400034
0x00400004
0x7fffeffc
0x0000000
8
0x00400004
0x00400004
0x7fffeffc
0x0000000
lOMoARcPSD| 59285474
9
0x00400008
0x00400004
0x7fffeffc
0x0000000
Hình 2.
Bước
PC
$sp
$fp
1
0x00400070
0x7fffeffc
0x0000000
2
0x00400074
0x7fffeffc
0x0000000
3
0x00400078
0x7fffeffc
0x0000000
4
0x0040007c
0x7fffeffc
0x0000000
5
0x00400080
0x7fffeffc
0x0000000
6
0x004000c8
0x7fffeffc
0x0000000
7
0x004000cc
0x7fffeff4
0x0000000
8
0x004000d0
0x7fffeff4
0x0000000
9
0x004000d4
0x7fffeff4
0x0000000
10
0x004000d8
0x7fffeff4
0x0000000
11
0x004000dc
0x7fffeff4
0x0000000
12
0x004000e0
0x7fffeff4
0x0000000
13
0x004000e4
0x7fffeff4
0x0000000
14
0x004000e8
0x7fffeff4
0x0000000
15
0x004000ec
0x7fffeff4
0x0000000
16
0x004000f0
0x7fffeff4
0x0000000
- Chạy toàn chương trình một lần để xem kết quả
- Với code trong Hình 1, nếu bỏ dòng code “j exit”, việc gì sẽ xảy ra?
Khi xóa dòng code “j exit” thì đoạn code sẽ bị lặp vô tận
- Viết lại code trong Hình 1, thêm vào thủ tục tên showInt để in ra cửa
sổI/O giá trị của số int nhập vào cộng thêm 1.
lOMoARcPSD| 59285474
- Kết quả chương trình:
- Viết lại code trong Hình 2, lúc này chương trình chính cần tính giá trịcủa
cả hai biểu thức: (a + b) – (c + d) và (a – b) + (c – d), hàm proc_example
có hai giá trị trả về và trong thân hàm sử dụng hai biến cục bộ $s0 và $s1
($s1 lưu kết quả của (a – b) + (c – d))
lOMoARcPSD| 59285474
- Kết quả chương trình:
- Viết lại code trong Hình 2, lúc này chương trình chính cần tính giá trịcủa
cả hai biểu thức: (a + b) – (c + d), (e - f) hàm proc_example có 6 input
hai giá trị trả về trong thân hàm sử dụng hai biến cục bộ $s0 $s1
($s1 lưu kết quả của e - f)
lOMoARcPSD| 59285474
- Kết quả chương trình:
lOMoARcPSD| 59285474
2. Thực hành với đệ quy
Viết code MIPS, chạy kiểm thử trên MARS giải thích ý nghĩa ràng
cho chương trình tính giai thừa được viết bằng code C như Hình 3.
- Đoạn code:
lOMoARcPSD| 59285474
- Kết quả chương trình:
2. Bài tập
1. Tiếp tục nội dung 2. Vẽ lại hình ảnh của các stack trong trường hợp tính
5! và 10!
- Trường hợp 5!
SP
- Trường hợp
10!
1, ra
2, ra
3, ra
4, ra
5, ra
lOMoARcPSD| 59285474
2. Viết chương trình nhập vào n và xuất ra chuỗi Fibonacci tương ứng
lOMoARcPSD| 59285474
- Kết quả chương trình:

Preview text:

lOMoAR cPSD| 59285474
BÁO CÁO THỰC HÀNH LAB 4
MÔN KIẾN TRÚC MÁY TÍNH MSSV: 23520253
Họ và Tên: Ngô Hữu Đạt
1. Thực hành với thủ tục
- Chạy từng bước và theo dõi sự thay đổi của thanh ghi PC, $ra, $sp, $fp trong 2 hình trên. Hình 1. Bước PC $ra $sp $fp 1 0x0040001c 0x00400004 0x7fffeffc 0x0000000 2 0x00400020 0x00400004 0x7fffeffc 0x0000000 3 0x00400024 0x00400004 0x7fffeffc 0x0000000 4 0x00400028 0x00400004 0x7fffeffc 0x0000000 5 0x0040002c 0x00400004 0x7fffeffc 0x0000000 6 0x00400030 0x00400004 0x7fffeffc 0x0000000 7 0x00400034 0x00400004 0x7fffeffc 0x0000000 8 0x00400004 0x00400004 0x7fffeffc 0x0000000 lOMoAR cPSD| 59285474 9 0x00400008 0x00400004 0x7fffeffc 0x0000000 Hình 2. Bước PC $ra $sp $fp 1 0x00400070 0x00000000 0x7fffeffc 0x0000000 2 0x00400074 0x00000000 0x7fffeffc 0x0000000 3 0x00400078 0x00000000 0x7fffeffc 0x0000000 4 0x0040007c 0x00000000 0x7fffeffc 0x0000000 5 0x00400080 0x00000000 0x7fffeffc 0x0000000 6 0x004000c8 0x00400084 0x7fffeffc 0x0000000 7 0x004000cc 0x00400084 0x7fffeff4 0x0000000 8 0x004000d0 0x00400084 0x7fffeff4 0x0000000 9 0x004000d4 0x00400084 0x7fffeff4 0x0000000 10 0x004000d8 0x00400084 0x7fffeff4 0x0000000 11 0x004000dc 0x00400084 0x7fffeff4 0x0000000 12 0x004000e0 0x00400084 0x7fffeff4 0x0000000 13 0x004000e4 0x00400084 0x7fffeff4 0x0000000 14 0x004000e8 0x00400084 0x7fffeff4 0x0000000 15 0x004000ec 0x00400084 0x7fffeff4 0x0000000 16 0x004000f0 0x00400084 0x7fffeff4 0x0000000
- Chạy toàn chương trình một lần để xem kết quả
- Với code trong Hình 1, nếu bỏ dòng code “j exit”, việc gì sẽ xảy ra?
Khi xóa dòng code “j exit” thì đoạn code sẽ bị lặp vô tận
- Viết lại code trong Hình 1, thêm vào thủ tục tên showInt để in ra cửa
sổI/O giá trị của số int nhập vào cộng thêm 1. lOMoAR cPSD| 59285474
- Kết quả chương trình:
- Viết lại code trong Hình 2, lúc này chương trình chính cần tính giá trịcủa
cả hai biểu thức: (a + b) – (c + d) và (a – b) + (c – d), hàm proc_example
có hai giá trị trả về và trong thân hàm sử dụng hai biến cục bộ $s0 và $s1
($s1 lưu kết quả của (a – b) + (c – d)) lOMoAR cPSD| 59285474
- Kết quả chương trình:
- Viết lại code trong Hình 2, lúc này chương trình chính cần tính giá trịcủa
cả hai biểu thức: (a + b) – (c + d), (e - f) hàm proc_example có 6 input và
hai giá trị trả về và trong thân hàm sử dụng hai biến cục bộ $s0 và $s1
($s1 lưu kết quả của e - f) lOMoAR cPSD| 59285474
- Kết quả chương trình: lOMoAR cPSD| 59285474
2. Thực hành với đệ quy
Viết code MIPS, chạy kiểm thử trên MARS và giải thích ý nghĩa rõ ràng
cho chương trình tính giai thừa được viết bằng code C như Hình 3. - Đoạn code: lOMoAR cPSD| 59285474
- Kết quả chương trình: 2. Bài tập
1. Tiếp tục nội dung 2. Vẽ lại hình ảnh của các stack trong trường hợp tính 5! và 10! - Trường hợp 5! SP 1, ra
- Trường hợp 2, ra 10! 3, ra 4, ra 5, ra lOMoAR cPSD| 59285474
2. Viết chương trình nhập vào n và xuất ra chuỗi Fibonacci tương ứng lOMoAR cPSD| 59285474
- Kết quả chương trình: