Bài giảng Hệ thống máy tính và Ngôn ngữ lập trình: Chương 5 - PGS.TS. Đặng Thành Tín

35 134 0
Bài giảng Hệ thống máy tính và Ngôn ngữ lập trình: Chương 5 - PGS.TS. Đặng Thành Tín

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Hệ thống máy tính và Ngôn ngữ lập trình - Chương 5: Mô hình von Neumann và cấu trúc tập lệnh LC-3 cung cấp cho người học các kiến thức: Các thành phần cơ bản, một số ví dụ về mô hình von Neumann, quá trình xử lý lệnh, thay đổi quá trình xử lý lệnh, khái niệm ISA LC-3,... Mời các bạn cùng tham khảo.

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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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ữ CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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ố nguyên 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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 tố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 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 tố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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƢƠNG LẬP TRÌNH HỢP NGỮ LC-3 5.3 Q 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 CHƢƠNG LẬP TRÌNH HỢP NGỮ LC-3 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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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: CuuDuongThanCong.com https://fb.com/tailieudientucntt 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: CuuDuongThanCong.com https://fb.com/tailieudientucntt 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: 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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: 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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 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 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 để hồn tất việc dịch dòng 2D CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt ...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... 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ụ CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƢƠNG LẬP TRÌNH HỢP NGỮ LC-3 5. 3 Q trình hợp dịch 5. 3.1... hợp ngữ 5. 2.2 Mã giả (Các hƣớng dẫn dịch) Bộ hợp dịch LC-3 chương trình lấy đầu vào chuỗi ký tự biểu diễn chương trình viết hợp ngữ LC-3, dịch thành chương trình cấp kiến trúc tập lệnh (ISA) LC-3

Ngày đăng: 11/01/2020, 20:28

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan