Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
708,46 KB
Nội dung
.c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.1 Lập trình hợp ngữ co ng Hợp ngữ ngôn ngữ cấp thấp bước nâng th an cấp nhỏ cho ISA máy tính Mỗi lệnh hợp ngữ du o ng thường xác định lệnh đơn ISA Không u ngôn ngữ cấp cao, ngôn ngữ cấp thấp phụ thuộc nhiều cu vào ISA Thực tế, ta thấy kiến trúc tập lệnh ISA có hợp ngữ CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 du o ng th an co ng 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 cu u 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 OPCODE OPERANDS ; COMMENTS cu u LABEL du o ng th an co ng 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: Hai phần LABEL COMMENTS tùy chọn Còn OPCODE OPERANDS bắt buộc CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 ng 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh cu u du o ng th an co 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 an co ng 5.2 Các thành phần chương trình hợp ngữ 5.2.1 Lệnh Ghi ng th Ghi thông điệp cần thiết với người du o Các ghi ảnh hưởng cu u 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 5.3 Quá trình hợp dịch 5.3.1 Giới thiệu Trước chương trình hợp ngữ LC-3 thực thi, phải dịch thành chương trình ngơn ngữ máy, có nghĩa lệnh lệnh ISA LC-3 Đây công việc dịch hợp ngữ LC-3 Với hợp dịch LC-3 (mà download từ mạng), ta dịch từ chương trình hợp ngữ chương trình ngơn ngữ máy Trong giáo trình này, chương trình hợp ngữ viết dịch dạng ISA LC-3 Editor mà tìm thấy mạng CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 5.3 Quá 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) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 ng 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 an co Bảng biểu trưng tương ứng tên tượng trưng th với địa 16 bit chúng tính từ đầu chương trình Nên nhớ du o ng rằng, cần nhãn chổ cần tham khảo, u đích lệnh rẻ nhánh nơi chứa liệu cần cu 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 du o ng th an co ng 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: cu u 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: CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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: CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 co ng 5.3 Quá trình hợp dịch 5.3.4 Bước thứ hai: Dịch ngôn ngữ máy th an Bước dịch thứ hai gồm việc duyệt qua chương trình ng hợp ngữ lần thứ hai, theo dòng, lúc với trợ du o giúp bảng biểu trưng Ở dòng, lệnh hợp ngữ cu u dịch lệnh ngôn ngữ máy LC-3 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 lỗi chương trình Hơn nữa, STARTofFILE nhãn modul khác modul 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 ng 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 cu u du o ng th an co 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 để hồn tất việc dịch dịng 2D CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... LABEL COMMENTS tùy chọn C? ?n OPCODE OPERANDS bắt bu? ?c CuuDuongThanCong. com https://fb .com/ tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 5. 2 C? ?c thành phần chương... th an co ng 5. 2 C? ?c thành phần chương trình hợp ngữ 5. 2.3 Một ví dụ CuuDuongThanCong. com https://fb .com/ tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 5. 2 C? ?c thành... CuuDuongThanCong. com https://fb .com/ tailieudientucntt .c om CHƯƠNG LẬP TRÌNH HỢP NGỮ LC-3 cu u du o ng th an co ng 5. 2 C? ?c thành phần chương trình hợp ngữ 5. 2.2 Mã giả (C? ?c hướng dẫn dịch) Bộ hợp dịch LC-3