Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
458,88 KB
Nội dung
CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.1 Lập trình hợp ngữ 5.2 Các thành phần chương trình hợp ngữ 5.3 Quá trình hợp dịch 5.4 Chương trình với nhiều modul CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.1 Lập trình hợp ngữ Hợp ngữ ngôn ngữ cấp thấp bước nâng cấp nhỏ cho ISA máy tính Mỗi lệnh hợp ngữ thường xác định lệnh đơn ISA Không ngôn ngữ cấp cao, ngôn ngữ cấp thấp phụ thuộc nhiều vào ISA Thực tế, ta thấy kiến trúc tập lệnh ISA có hợp ngữ CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ Để hiểu rõ hợp ngữ LC-3, ta xét chương trình ví dụ sau CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ Để hiểu rõ hợp ngữ LC-3, ta xét chương trình ví dụ sau Chương trình nhân số nguyên khởi tạo biến NUMBER với việc cộng số ngun lần Ví dụ, số ngun 123, chương trình tính tích việc cộng 123 + 123 +123 + 123 + 123 + 123 CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh Thay dùng dãy 16 bit để biểu diễn lệnh trường hợp ISA LC-3, lệnh hợp ngữ bao gồm bốn phần theo cấu trúc sau: LABEL OPCODE OPERANDS ; COMMENTS Hai phần LABEL COMMENTS tùy chọn Còn OPCODE OPERANDS bắt buộc CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh: Opcodes Operands Hai phần phải có lệnh Một lệnh phải quy định mã thao tác OPCODE, tức mà lệnh cần phải làm, giá trị thích hợp toán hạng OPERANDS, tức mà lệnh dùng với tác vụ có Đây thứ mà gặp học LC-3 OPCODE tên tượng trưng cho mã tác vụ lệnh LC-3 tương ứng Với tên tượng trưng này, lập trình viên dễ dàng nhớ thao tác qua tên ADD, AND, hay LDR bit 0001, 0101, hay 0110 Hình 4.3 liệt kê tồn OPCODES 15 lệnh LC-3 CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh Số lượng toán hạng phụ thuộc vào thao tác thực thi Ví dụ, lệnh ADD dịng 0B chương trình AGAIN ADD R3, R3, R2 Lệnh LD dòng 06 LD R2, NUMBER Trong trường hợp toán hạng tức thời, giá trị thực cần ghi rõ lệnh (như trị dịng 07) AND R3, R3, #0 ; xóa R3 để giữ tích Chúng ta dùng dấu # cho số thập phân, x cho thập lục phân, b cho nhị phân CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh Nhãn Nhãn tên tượng trưng dùng để xác định ô nhớ tham khảo tới chương trình Trong hợp ngữ LC-3, nhãn tạo từ tới 20 ký số hay ký tự, bắt đầu ký tự, LAPLAI, KETTHUC, LAP100,… Có hai lý cần cho việc tham khảo vị trí nhớ, - Ơ nhớ vị trí chứa đích lệnh rẻ nhánh, ví dụ AGAIN dịng 0B - Ơ nhớ vị trí chứa giá trị cần nạp hay lưu, ví dụ, NUMBER dịng 11, SIX dòng 12 CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh Vị trí tương ứng nhãn AGAIN tham khảo lệnh rẽ nhánh dịng 0E, BRp AGAIN CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh Ghi Ghi thông điệp cần thiết với người Các ghi khơng có ảnh hưởng q trình dịch khơng chịu tác động từ dịch hợp ngữ LC-3 Chúng quy định chương trình dấu chấm phẩy đặt trước, phần sau dấu chấm phẩy (nếu có) ghi dịch bỏ qua CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Q trình hợp dịch 5.3.2 Quá trình dịch Gồm giai đoạn: -Tạo bảng biểu,Constructing table -Dịch ngôn ngữ máy(nhị phân) CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Q trình hợp dịch 5.3.3 Bước đầu tiên: Tạo bảng biểu trưng Bảng biểu trưng tương ứng tên tượng trưng với địa 16 bit chúng tính từ đầu chương trình Nên nhớ rằng, cần nhãn chổ cần tham khảo, đích lệnh rẻ nhánh nơi chứa liệu cần nạp hay lưu Vì vậy, khơng có lỗi lập trình nào, xác định tất nhãn, hẳn xác định tất địa tượng trưng dùng chương trình CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Quá trình hợp dịch 5.3.3 Bước đầu tiên: Tạo bảng biểu trưng Lệnh có nhãn lệnh dịng 12 Vì lệnh thứ năm chương trình, nên lúc LC chứa x3004, đầu vào bảng biểu trưng tạo sau: Lệnh thứ hai có nhãn lệnh dịng 1F Tại đây, LC tăng lên tới x300B Như đầu vào bảng tạo thêm sau: CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Quá trình hợp dịch 5.3.3 Bước đầu tiên: Tạo bảng biểu trưng Tới lúc cuối bước dịch đầu tiên, bảng biểu trưng có đầu vào sau: CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Q trình hợp dịch 5.3.4 Bước thứ hai: Dịch ngôn ngữ máy Bước dịch thứ hai gồm việc duyệt qua chương trình hợp ngữ lần thứ hai, theo dịng, lúc với trợ giúp bảng biểu trưng Ở dịng, lệnh hợp ngữ dịch lệnh ngơn ngữ máy LC-3 CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Quá trình hợp dịch 5.3.4 Bước thứ hai: tạo chương trỉnh ngôn ngữ máy Lần này, dịch lấy lệnh dịng 0C, hồn tồn dịch lệnh biết nhãn PTR tương ứng với x3013 Lệnh LD, có opcode 0010 Thanh ghi đích R3, nghĩa 011 PCoffset tính sau: biết PTR nhãn cho địa x3013, ghi PC tăng LC + 1, tức x3002 Vì PTR (x3013) phải tổng PC tăng (x3002) PCoffset mở rộng dấu, nên PCoffset phải x0011 Ghép tất điều lại với nhau, ta thấy lệnh x3001 0010011000010001, LC tăng lên x3002 CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Q trình hợp dịch 5.3.4 Bước thứ hai: Dịch ngôn ngữ máy Chương trình dịch nhận CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.1 Bản thực thi Khi máy tính bắt đầu thực thi chương trình, tập tin thực thi chương trình gọi thực thi (Executable image) Bản thực thi thường tạo từ nhiều modul nhiều lập trình viên thiết kế cách độc lập Mỗi modul dịch cách riêng biệt tạo thành tập tin đối tượng (object) Nếu modul viết hợp ngữ LC-3, chúng dịch dịch hợp ngữ LC-3 Những modul viết C dịch dịch C Có modul lập trình viên viết thiết kế chương trình, có modul chương trình cung cấp hệ điều hành Mỗi tập tin đối tượng bao gồm lệnh kiến trúc tập lệnh (ISA) máy tính sử dụng, với liệu liên quan CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.1 Bản thực thi Bước cuối liên kết (link) tất modul lại với để có tập tin gọi thực thi Trong suốt trình thực thi, chu kỳ lệnh FETCH, DECODE, … áp dụng cho lệnh thực thi CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.2 Thiết kế với nhiều tập tin đối tượng Khi thiết kế chương trình, thường dùng thư viện hệ điều hành modul viết lập trình viên khác nhóm Do đó, việc thực thi tạo từ nhiều tập tin đối tượng khác phổ biến Trong chương trình ví dụ đếm số ký tự xuất tập tin mảng, ta thấy áp dụng tiêu biểu chương trình với hai modul, gồm modul chương trình modul tập tin liệu Với ví dụ 5.3, địa bắt đầu tập tin mảng liệu x4000 dịng 2D khơng quan tâm chương trình viết CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.2 Thiết kế với nhiều tập tin đối tượng Nếu thay dịng 2D PTR FILL STARTofFILE chương trình ví dụ khơng hợp dịch khơng có đầu vào cho STARTofFILE bảng biểu trưng Chúng ta giải việc ? Mặt khác, hợp ngữ LC-3 có mã giả EXTERNAL, xác định STARofFILE tên biểu trưng địa lúc chương trình 5.3 dịch Điều thực dịng sau EXTERNAL STARTofFILE CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.2 Thiết kế với nhiều tập tin đối tượng Mà báo cho dịch LC-3 vắng mặt nhãn STARTofFILE khơng phải lỗi chương trình Hơn nữa, STARTofFILE nhãn modul khác modul đuộc dịch cách độc lập Trong ví dụ 5.3, nhãn vị trí ký tự tập tin mảng mà chương trình đếm ký tự khảo sát CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.2 Thiết kế với nhiều tập tin đối tượng Nếu hợp ngữ LC-3 có mã giả EXTERNAL, thiết kế nhãn STARTofFILE theo EXTERNAL, LC-3 có khả tạo đầu vào bảng biểu trưng cho STARTofFILE, thay gán cho nhãn địa chỉ, LC-3 đánh dấu biểu trưng tùy thuộc modul khác Lúc liên kết, tất modul kết nối lại, liên kết (tức chương trình phụ trách việc nối này) dùng đầu vào cho STARTofFILE bảng biểu trưng modul khác để hoàn tất việc dịch dịng 2D CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.4 Chương trình với nhiều modul 5.4.2 Thiết kế với nhiều tập tin đối tượng Theo cách này, mã giả EXTERNAL cho phép việc tham khảo modul tới vị trí biểu trưng modul khác cách dễ dàng Quá trình dịch phù hợp liên kết giải HỆ THỐNG MÁY TÍNH VÀ NGÔN NGỮ C KẾT THÚC CHƯƠNG ... 5. 2 C? ?c thành phần chương trình hợp ngữ 5. 2.3 Một ví dụ CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5. 2 C? ?c thành phần chương trình hợp ngữ 5. 2.3 Một ví dụ CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5. 2 C? ?c thành phần chương. ..CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5. 1 Lập trình hợp ngữ Hợp ngữ ngôn ngữ c? ??p thấp bư? ?c nâng c? ??p nhỏ cho ISA máy tính Mỗi lệnh hợp ngữ thường x? ?c định lệnh đơn ISA Không ngôn ngữ c? ??p cao, ngôn ngữ. .. HỢP NGỮ LC-3 5. 3 Quá trình hợp dịch 5. 3.4 Bư? ?c thứ hai: Dịch ngơn ngữ máy Chương trình dịch nhận CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5. 4 Chương trình với nhiều modul 5. 4.1 Bản th? ?c thi Khi máy tính