You are on page 1of 3

Thi giữa kỳ: Chương trình hệ thống

Thời gian: 60 phút (Được sử dụng tài liệu)

Bài 1. Cho hàm f trên ngôn ngữ lập trình C như sau:
int f(int a, int b, int n) {
if (n == 0) return a;
else return f(a + b, b, n - 1);
}

1. Hãy viết các đoạn mã hợp ngữ tương ứng với lời gọi f(1,2,3) trong các trường hợp giả định sau:
a. Hàm f sử dụng quy ước gọi hàm cdecl
b. Hàm f sử dụng quy ước gọi hàm pascal
c. Hàm f sử dụng quy ước gọi hàm fastcall
2. Hãy viết đoạn mã hợp ngữ của hàm f trong các trường hợp giả định.
a. Hàm f sử dụng quy ước gọi hàm cdecl
b. Hàm f sử dụng quy ước gọi hàm fastcall
Bài 2.
Một chương trình C được dịch sang hợp ngữ như sau.

1. Hãy cho biết kết quả thực hiện của chương trình?
2. Mô tả trạng thái của ngăn xếp tại các dòng (46)
3. Hãy hình dung chương trình nguồn C có thể biên dịch thành đoạn mã nêu trên.
Bài 3.
Một trình liên kết thực hiện liên kết các tệp đối tượng đầu vào X, Y, và Z. Kích thước các đoạn của
từng tệp đối tượng X, Y và Z được mô tả trong bảng sau:
X Y Z
Text 0x2047 0x1243 0x857
Data 0x3123 0x2016 0x209
BSS 0x6501 0x3994 0x463
1. Hãy thực hiện hoạch định bộ nhớ cho tệp thực thi bằng cách điền địa chỉ cơ sở cho từng đoạn
của từng module (tệp đối tượng) vào bảng sau:
X Y Z
Text
Data
BSS
Lưu ý:
- Mã đối tượng bắt đầu từ trang nhớ 1 (0x1000)
- Kích thước mỗi trang nhớ là 0x1000
2. Trong module X, Y và Z, tồn tại một số liên kết được mô tả như sau:

Trong đó:
- Tham chiếu (A) là tham chiếu tuyệt đối có giá trị 0x2684 (tính theo địa chỉ cơ sở của đoạn
data)
- Tham chiếu (B) là tham chiếu ngoài module, tới điểm tham chiếu trên Y có giá trị 0x388
(tính theo địa chỉ cơ sở của đoạn text)
- Tham chiếu (C) là tham chiếu tuyệt đối có giá trị 0x3048 (tính theo địa chỉ cơ sở của đoạn
BSS)
- Tham chiếu (D) là tham chiếu ngoài module, tới điểm tham chiếu trên Z có giá trị 0x280
(tính theo địa chỉ cơ sở của đoạn text)
- Tham chiếu (E) là tham chiếu tương đối, có giá trị 0x250
Xác định giá trị địa chỉ tham chiếu của (A), (B), (C), (D) và (E) sau khi tái định vị.

You might also like