Cấu trúc ngôn ngữ máy của ARC

Một phần của tài liệu Bài giảng: Cấu trúc máy tính và ghép nối pot (Trang 50 - 52)

Cấu trúc ngôn ngữ máy định nghĩa ý nghĩa của từng bit trong câu lệnh. Tức là nó định nghĩa từng trường trong câu lệnh, độ lớn của từng trường dữ liệu đó và tác động của từng bit lên hệ thống. Có tất cả 5 cấu trúc trong ARC là SETHI, branch, call, arithmetic và memory

Hình 4.10. Cấu trúc lệnh trong ARC

Mỗi một lệnh được biểu diễn bằng một tên riêng và một mã lệnh (Opcode). Mỗi một cấu trúc lệnh có thể có nhiều hơn một trường mã lệnh với mục đích là để

thể hiện rõ ràng hơn nội dung, nhiệm vụ, và hoạt động của lệnh. Cụ thể như sau

• 2 bit tận cùng phía bên trái của mỗi một lệnh là trường op (opcode)

được sử dụng để nhận diện cấu trúc lệnh. Cấu trúc SETHI và Branch có cùng giá trị là 00 trong trường này. Cấu trúc SETHI và Branch

được phân biệt với nhau ở trường op2 trong đó giá trị 010 tương

ứng với Branch và 100 tương ứng với cấu trúc SETHI. Ngoài ra bit thứ 29 trong cấu trúc Branch luôn luôn là 0. Trong khi đó, 5 bit rd trong cấu trúc SETHI chứa thanh ghi đích của lệnh.

• Trường cond trong cấu trúc Branch nhận diện loại lệnh rẽ nhánh, dựa trên mã điều kiện như z, n, v, và c trong thanh ghi trạng thái PSR. Đối với những lệnh có biểu tượng tận cùng có 2 ký tự

Tương tự, bit z = 1 nếu kết quả bằng 0 và v=1 nếu tràn. Những lệnh có biểu tượng kết thúc không bằng 2 ký tự “cc” sẽ không có hiệu ứng rẽ nhánh. Trường imm22 và disp22 lưu trữ 22 bit được sử dụng như là toán hạng đối với cấu trúc SETHI và để làm cơ sở

tính toán cho lệnh rẽ nhánh trong cấu trúc Branch

• Cấu trúc CALL chỉ bao gồm 2 trường duy nhất là trường op có nội dung 01 và trường disp30 được sử dụng là nơi chứa địa chỉ của chương trình mà nó gọi tới.

• Cấu trúc Arithmetic có op = 10 và cấu trúc Memmory có op = 11 cùng có trường rd để nhận dạng thanh ghi nguồn với lệnh st, hoặc để nhận dạng thanh ghi đích trong các trường hợp lệnh còn lại. Rs1 và rs2 là các thanh ghi nguồn số 1 và 2. Trường op3được sử

dụng để phân biệt các lệnh (được trình bày như hình 4.10)

• Trường simm13 có 13 bit giá trị tức thì có dấu có thể mở rộng lên 32 bit khi trường i có giá trị bằng 1. Để làm được việc này, bit dấu tức là bit tận cùng bên phải được chép vào một số 32 bit có giá trị

bằng số trong trường simm13 tương ứng. Ví dụ, giá trị trường trường simm13 là (1111111110011)2 = (-13)10. Khi đó số nguyên 32 bit tương ứng được tạo ra khi trường i = 1 là (11111111111111111111111111110011)2 = (-13)10.

• Cấu trúc lệnh Arithmetic có 2 toán hạng nguồn và 1 toán hạng đích, tổng cộng là 3 toán hạng. Cấu trúc lệnh Memmory có 2 toán hạng: một dành cho địa chỉ, một dành cho dữ liệu. Thông thường toán hạng nguồn là địa chỉ

Một phần của tài liệu Bài giảng: Cấu trúc máy tính và ghép nối pot (Trang 50 - 52)