Bài giảng Kiến trúc tập lệnh it3030 1 (instruction set architecture)

Chương trình hợp ngữ gồm các dòng lệnh, mỗi lệnh viết trên một dòng, mỗi dòng có thể là: Lệnh của bộ vi xử lý (instruction) Chỉ dẫn của chương trình dịch ASSEMBLER Các lệnh hợp ngữ không phân biệt chữ hoa, chữ thường. Khi dịch thành mã máy thì chỉ có các lệnh của bộ vi 102 Khi dịch thành mã máy thì chỉ có các lệnh của bộ vi xử lý mới được dịch

pdf105 trang | Chia sẻ: hao_hao | Lượt xem: 3252 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiến trúc tập lệnh it3030 1 (instruction set architecture), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NKK-HUT Kiến trúc máy tính Chương 4 KIẾN TRÚC TẬP LỆNH IT3030 1 (Instruction Set Architecture) Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội NKK-HUT Nội dung học phần n Chương 1. Giới thiệu chung n Chương 2. Cơ bản về logic số n Chương 3. Hệ thống máy tính n Chương 4. Kiến trúc tập lệnh 2n24 July 2011 n Chương 5. Số học máy tính n Chương 6. Bộ xử lý n Chương 7. Bộ nhớ n Chương 8. Vào-ra n Chương 9. Kiến trúc máy tính tiên tiến IT3030 NKK-HUT 4.1. Giới thiệu chung kiến trúc tập lệnh 4.2. Các kiểu thao tác 4.3. Các phương pháp định địa chỉ 4.4. Kiến trúc tập lệnh MIPS Nội dung của chương 4 IT3030 3 4.5. Kiến trúc tập lệnh Intel x86 NKK-HUT 4.1. Giới thiệu chung về kiến trúc tập lệnh Mô hình lập trình của máy tính IT3030 4 NKK-HUT Tập thanh ghi n Chức năng và đặc điểm: n Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm hiện tại của CPU n Được coi là mức đầu tiên của hệ thống nhớ n Số lượng thanh ghi nhiều à tăng hiệu năng IT3030 5 của CPU n Có hai loại thanh ghi: n Các thanh ghi lập trình được n Các thanh ghi không lập trình được NKK-HUT Phân loại thanh ghi theo chức năng n Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ hay cổng vào-ra. n Thanh ghi dữ liệu: chứa tạm thời các dữ liệu. Thanh ghi đa năng: có thể chứa địa chỉ IT3030 6 n hoặc dữ liệu. n Thanh ghi điều khiển/trạng thái: chứa các thông tin điều khiển và trạng thái của CPU. n Thanh ghi lệnh: chứa lệnh đang được thực hiện. NKK-HUT Một số thanh ghi điển hình n Các thanh ghi địa chỉ n Bộ đếm chương trình PC (Program Counter) n Con trỏ dữ liệu DP (Data Pointer) n Con trỏ ngăn xếp SP (Stack Pointer) IT3030 7 n Thanh ghi cơ sở và Thanh ghi chỉ số (Base Register & Index Register) n Các thanh ghi dữ liệu n Thanh ghi trạng thái NKK-HUT Bộ đếm chương trình PC n Còn được gọi là con trỏ lệnh IP (Instruction Pointer) n Giữ địa chỉ của lệnh tiếp theo sẽ được nhận IT3030 8 vào. n Sau khi một lệnh được nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp. NKK-HUT Thanh ghi con trỏ dữ liệu n Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU muốn truy nhập n Thường có một số IT3030 9 thanh ghi con trỏ dữ liệu NKK-HUT Ngăn xếp (Stack) n Ngăn xếp là vùng nhớ có cấu trúc LIFO (Last In - First Out) n Ngăn xếp thường dùng để phục vụ cho chương trình con IT3030 10 n Đáy ngăn xếp là một ngăn nhớ xác định n Đỉnh ngăn xếp là thông tin nằm ở vị trí trên cùng trong ngăn xếp n Đỉnh ngăn xếp có thể bị thay đổi NKK-HUT Con trỏ ngăn xếp SP (Stack Pointer) n Chứa địa chỉ của ngăn nhớ đỉnh ngăn xếp n Khi cất một thông tin vào ngăn xếp: n Nội dung của SP giảm n Thông tin được cất vào ngăn nhớ IT3030 11 được trỏ bởi SP n Khi lấy một thông tin ra khỏi ngăn xếp: n Thông tin được đọc từ ngăn nhớ được trỏ bởi SP n Nội dung của SP tăng n Khi ngăn xếp rỗng, SP trỏ vào đáy NKK-HUT Thanh ghi cơ sở và thanh ghi chỉ số n Thanh ghi cơ sở: chứa địa chỉ của ngăn nhớ cơ sở (địa chỉ cơ sở) n Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa ngăn nhớ mà CPU cần truy IT3030 12 nhập so với ngăn nhớ cơ sở (chỉ số) n Địa chỉ của ngăn nhớ cần truy nhập = địa chỉ cơ sở + chỉ số 24 July 2011 NKK-HUT Các thanh ghi dữ liệu n Chứa các dữ liệu tạm thời hoặc các kết quả trung gian n Cần có nhiều thanh ghi dữ liệu n Các thanh ghi số nguyên: 8, 16, 32, 64 IT3030 13 bit n Các thanh ghi số dấu phẩy động NKK-HUT Thanh ghi trạng thái (Status Register) n Còn gọi là thanh ghi cờ (Flag Register) n Chứa các thông tin trạng thái của CPU n Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán IT3030 14 n Các cờ điều khiển: biểu thị trạng thái điều khiển của CPU NKK-HUT Ví dụ cờ phép toán n Cờ Zero (cờ rỗng): được thiết lập lên 1 khi kết quả của phép toán bằng 0. n Cờ Sign (cờ dấu): được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0 n Cờ Carry (cờ nhớ): được thiết lập lên 1 nếu IT3030 15 phép toán có nhớ ra ngoài bit cao nhất à cờ báo tràn với số không dấu. n Cờ Overflow (cờ tràn): được thiết lập lên 1 nếu cộng hai số nguyên cùng dấu mà kết quả có dấu ngược lại à cờ báo tràn với số có dấu . NKK-HUT Ví dụ cờ điều khiển n Cờ Interrupt (Cờ cho phép ngắt): n Nếu IF = 1 à CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới IT3030 16 n Nếu IF = 0 à CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới NKK-HUT Thứ tự lưu trữ các byte trong bộ nhớ chính n Bộ nhớ chính thường đánh địa chỉ theo byte n Hai cách lưu trữ thông tin nhiều byte: n Đầu nhỏ (Little-endian): Byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ IT3030 17 nhỏ, byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ lớn. n Đầu to (Big-endian): Byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ lớn. NKK-HUT Ví dụ lưu trữ dữ liệu 32-bit 0001 1010 0010 1011 0011 1100 0100 1101 IT3030 1824 July 2011 NKK-HUT Lưu trữ của các bộ xử lý điển hình n Intel 80x86 và các Pentium: little-endian n Motorola 680x0, MIPS, SunSPARC: big-endian n Power PC, Itanium: bi-endian IT3030 1924 July 2011 NKK-HUT Giới thiệu chung về tập lệnh n Mỗi bộ xử lý có một tập lệnh xác định n Tập lệnh thường có hàng chục đến hàng trăm lệnh n Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác IT3030 20 định. n Các lệnh được mô tả bằng các ký hiệu gợi nhớ dạng text à chính là các lệnh của hợp ngữ NKK-HUT Các thành phần của lệnh máy n Mã thao tác (operation code à opcode): mã hóa cho thao tác mà bộ xử lý phải thực hiện IT3030 21 n Địa chỉ toán hạng: chỉ ra nơi chứa các toán hạng mà thao tác sẽ tác động n Toán hạng nguồn: dữ liệu vào của thao tác n Toán hạng đích: dữ liệu ra của thao tác 24 July 2011 NKK-HUT Số lượng địa chỉ toán hạng trong lệnh (1) n Ba địa chỉ toán hạng: n 2 toán hạng nguồn, 1 toán hạng đích n c = a + b n Từ lệnh dài vì phải mã hoá địa chỉ cho cả ba toán hạng IT3030 22 n Được sử dụng trên các bộ xử lý tiên tiến NKK-HUT Số lượng địa chỉ toán hạng trong lệnh (2) n Hai địa chỉ toán hạng: n Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán hạng nguồn n a = a + b IT3030 23 n Giá trị cũ của 1 toán hạng nguồn bị mất vì phải chứa kết quả n Rút gọn độ dài từ lệnh n Phổ biến NKK-HUT Số lượng địa chỉ toán hạng trong lệnh (3) n Một địa chỉ toán hạng: n Một toán hạng được chỉ ra trong lệnh n Một toán hạng là ngầm định à thường là thanh ghi (thanh chứa –accumulator) IT3030 24 n Được sử dụng trên các máy ở các thế hệ trước NKK-HUT Số lượng địa chỉ toán hạng trong lệnh (4) n 0 địa chỉ toán hạng: n Các toán hạng đều được ngầm định n Sử dụng Stack n Ví dụ: push a IT3030 25 push b add pop c có nghĩa là : c = a+b n không thông dụng NKK-HUT Máy tính với tập lệnh thu gọn: RISC n CISC và RISC n CISCàComplex Instruction Set Computer: n Máy tính với tập lệnh phức tạp n Các bộ xử lý truyền thống: Intel x86, Motorola 680x0 IT3030 26 n RISCàReduced Instruction Set Computer: n Máy tính với tập lệnh thu gọn n SunSPARC, Power PC, MIPS, ARM ... n RISC đối nghịch với CISC NKK-HUT Các đặc trưng của RISC n Số lượng lệnh ít n Hầu hết các lệnh truy nhập toán hạng ở các thanh ghi n Truy nhập bộ nhớ bằng các lệnh LOAD/STORE n Thời gian thực hiện lệnh là một chu kỳ máy IT3030 27 n Các lệnh có độ dài cố định (32 bit) n Số lượng khuôn dạng lệnh ít (<=4) n CPU có tập thanh ghi lớn n Có ít phương pháp định địa chỉ toán hạng(<=4) n Hỗ trợ các thao tác của ngôn ngữ bậc cao NKK-HUT 4.2. Các kiểu thao tác của lệnh n Chuyển dữ liệu n Xử lý số học n Xử lý logic Điều khiển vào-ra IT3030 28 n n Chuyển điều khiển (rẽ nhánh) n Điều khiển hệ thống NKK-HUT Các lệnh chuyển dữ liệu n MOVE Copy dữ liệu từ nguồn đến đích n LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý n STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ n EXCHANGE Trao đổi nội dung của nguồn và đích n CLEAR Chuyển các bit 0 vào toán hạng đích IT3030 29 n SET Chuyển các bit 1 vào toán hạng đích n PUSH Cất nội dung toán hạng nguồn vào ngăn xếp n POP Lấy nội dung đỉnh ngăn xếp đưa đến toán hạng đích NKK-HUT Các lệnh số học n ADD Cộng hai toán hạng n SUBTRACT Trừ hai toán hạng n MULTIPLY Nhân hai toán hạng n DIVIDE Chia hai toán hạng n NEGATE Đổi dấu toán hạng (lấy bù 2) IT3030 30 n INCREMENT Tăng toán hạng thêm 1 n DECREMENT Giảm toán hạng đi 1 n COMPARE Trừ hai toán hạng để lập cờ NKK-HUT Các lệnh logic n AND Thực hiện phép AND hai toán hạng n OR Thực hiện phép OR hai toán hạng n XOR Thực hiện phép XOR hai toán hạng n NOT Đảo bit của toán hạng (lấy bù 1) TEST Thực hiện phép AND hai toán hạng IT3030 31 n để lập cờ n SHIFT Lệnh dịch bit n ROTATE Lệnh quay bit NKK-HUT Minh hoạ các lệnh AND, OR, XOR n Giả sử có hai thanh ghi chứa dữ liệu như sau: (R1) = 1010 1010 (R2) = 0000 1111 n R1 ß (R1) AND (R2) = 0000 1010 Phép toán AND dùng để xoá một số bit và giữ nguyên một số bit còn lại của toán hạng. IT3030 32 n R1 ß (R1) OR (R2) = 1010 1111 Phép toán OR dùng để thiết lập một số bit và giữ nguyên một số bit còn lại của toán hạng. n R1 ß (R1) XOR (R2) = 1010 0101 Phép toán XOR dùng để đảo một số bit và giữ nguyên một số bit còn lại của toán hạng. NKK-HUT Các lệnh SHIFT và ROTATE IT3030 33 NKK-HUT Các lệnh vào ra chuyên dụng n INPUT Copy dữ liệu từ một cổng xác định đến toán hạng đích n OUTPUT Copy dữ liệu từ toán hạng nguồn đến một cổng xác định IT3030 34 NKK-HUT Các lệnh chuyển điều khiển n JUMP (BRANCH) Lệnh nhảy không điều kiện n JUMP CONDITIONAL Lệnh nhảy có điều kiện n CALL Lệnh gọi chương trình con n RETURN Lệnh trở về từ chương trình con: IT3030 35 NKK-HUT Lệnh rẽ nhánh không điều kiện n Chuyển tới thực hiện lệnh ở vị trí có địa chỉ XXX: PC ß XXX IT3030 36 NKK-HUT Lệnh rẽ nhánh có điều kiện n Trong lệnh có kèm theo điều kiện n Kiểm tra điều kiện trong lệnh: n Nếu điều kiện đúng à chuyển tới thực hiện lệnh ở vị trí có IT3030 37 địa chỉ XXX PC ß XXX n Nếu điều kiện sai à chuyển sang thực hiện lệnh_kế_tiếp n Điều kiện thường được kiểm tra thông qua các cờ n Có nhiều lệnh rẽ nhánh có điều kiện NKK-HUT Lệnh CALL và RETURN n Lệnh gọi chương trình con: lệnh CALL n Cất nội dung PC (chứa địa chỉ của lệnh_kế_tiếp) ra Stack n Nạp vào PC địa chỉ của lệnh đầu tiên của chương trình con được gọi à Bộ xử lý được chuyển sang thực IT3030 38 hiện chương trình con tương ứng n Lệnh trở về từ chương trình con: lệnh RETURN n Lấy địa chỉ của lệnh_kế_tiếp được cất ở Stack nạp trả lại cho PC à Bộ xử lý được điều khiển quay trở về thực hiện tiếp lệnh nằm sau lệnh CALL NKK-HUT Gọi các thủ tục lồng nhau IT3030 39 NKK-HUT Các lệnh điều khiển hệ thống n HALT Dừng thực hiện chương trình n WAIT Tạm dừng thực hiện chương trình, lặp kiểm tra điều kiện cho đến khi thoả mãn thì tiếp tục thực hiện n NO OPERATION Không thực hiện gì cả IT3030 40 n LOCK Cấm không cho xin chuyển nhượng bus n UNLOCK Cho phép xin chuyển nhượng bus NKK-HUT 4.3. Các phương pháp định địa chỉ toán hạng Khái niệm về định địa chỉ (addressing) n Toán hạng của lệnh có thể là: n Một giá trị cụ thể nằm ngay trong lệnh n Nội dung của thanh ghi Nội dung của ngăn nhớ hoặc cổng vào-ra IT3030 41 n n Phương pháp định địa chỉ (addressing modes) là cách thức địa chỉ hóa trong trường địa chỉ của lệnh để xác định nơi chứa toán hạng NKK-HUT Các phương pháp định địa chỉ thông dụng n Định địa chỉ tức thì n Định địa chỉ thanh ghi n Định địa chỉ trực tiếp Định địa chỉ gián tiếp qua thanh ghi IT3030 42 n n Định địa chỉ gián tiếp qua ngăn nhớ n Định địa chỉ dịch chuyển NKK-HUT Định địa chỉ tức thì n Toán hạng nằm ngay trong Trường địa chỉ của lệnh n Chỉ có thể là toán hạng nguồn IT3030 43 n Ví dụ: ADD R1, 5 ; R1ß R1+5 n Không tham chiếu bộ nhớ n Truy nhập toán hạng rất nhanh n Dải giá trị của toán hạng bị hạn chế NKK-HUT Định địa chỉ thanh ghi n Toán hạng được chứa trong thanh ghi có tên trong Trường địa chỉ n Ví dụ: ADD R1, R2 ; R1ß R1+R2 n Số lượng thanh ghi ít à IT3030 44 Trường địa chỉ chỉ cần ít bit n Không tham chiếu bộ nhớ n Truy nhập toán hạng nhanh n Tăng số lượng thanh ghi à hiệu quả hơn NKK-HUT Định địa chỉ trực tiếp n Toán hạng là ngăn nhớ có địa chỉ được chỉ ra trực tiếp trong Trường địa chỉ của lệnh n Ví dụ: ADD R1, A ;R1 ß R1 + (A) IT3030 45 n Cộng nội dung thanh ghi R1 với nội dung của ngăn nhớ có địa chỉ là A n Tìm toán hạng trong bộ nhớ ở địa chỉ A n CPU tham chiếu bộ nhớ một lần để truy nhập dữ liệu NKK-HUT Định địa chỉ gián tiếp qua thanh ghi n Toán hạng là ngăn nhớ có địa chỉ nằm trong thanh ghi n Trường địa chỉ cho biết tên thanh ghi đó Thanh ghi có thể là IT3030 46 n ngầm định n Thanh ghi này được gọi là thanh ghi con trỏ n Vùng nhớ có thể được tham chiếu là lớn (2n), (với n là độ dài của thanh ghi) NKK-HUT Định địa chỉ gián tiếp qua ngăn nhớ n Ngăn nhớ được trỏ bởi Trường địa chỉ của lệnh chứa địa chỉ của toán hạng n Có thể gián tiếp nhiều lần n Giống như khái niệm biến IT3030 47 con trỏ và biến động trong lập trình n CPU phải thực hiện tham chiếu bộ nhớ nhiều lần để tìm toán hạng à chậm n Vùng nhớ có thể được tham chiếu là lớn NKK-HUT Định địa chỉ dịch chuyển n Để xác định toán hạng, Trường địa chỉ chứa hai thành phần: n Tên thanh ghi Hằng số IT3030 48 n n Địa chỉ của toán hạng = nội dung thanh ghi + hằng số n Thanh ghi có thể được ngầm định NKK-HUT Các dạng của định địa chỉ dịch chuyển n Địa chỉ hoá tương đối với PC n Thanh ghi là Bộ đếm chương trình PC n Toán hạng có địa chỉ cách ngăn nhớ được trỏ bởi PC một độ lệch xác định n Định địa chỉ cơ sở IT3030 49 n Thanh ghi chứa địa chỉ cơ sở n Hằng số là chỉ số n Định địa chỉ chỉ số n Hằng số là địa chỉ cơ sở n Thanh ghi chứa chỉ số NKK-HUT 4.4. Kiến trúc tập lệnh MIPS n Giới thiệu kiến trúc MIPS n Tập thanh ghi n Các khuôn dạng lệnh n Các chế độ địa chỉ n Một số lệnh cơ bản n Lập trình hợp ngữ sử dụng tập lệnh MIPS 50IT3030 NKK-HUT MIPS n MIPS- Microprocessor without Interlocked Pipeline Stages n Sở hữu bởi MIPS Technologies (www.mips.com) Được sử dụng rộng rãi trong các thiết bị điệnn tử dân dụng, các thiết bị mạng, camera, máy in… 51IT3030 NKK-HUT Các thanh ghi của MIPS NKK-HUT Các khuôn dạng lệnh MIPS 5 bits 5 bits 31 25 20 15 0 Opcode Source register 1 Source register 2 op rs rt R 6 bits 5 bits rd 5 bits sh 6 bits 10 5 fn Destination register Shift amount Opcode extension 31 25 20 15 0 op rs rt operand / offset I IT3030 Slide 53 Imm ediate operand or address offset Opcode Destination or data Source or base 5 bits 6 bits 16 bits 5 bits 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 31 0 Opcode op jump target address J Memory word address (byte address divided by 4) 26 bits 25 6 bits NKK-HUT MIPS R-format Instructions n Các thành phần của lệnh n op: mã thao tác op rs rt rd shamt funct 6 bits 6 bits5 bits 5 bits 5 bits 5 bits n rs: thanh ghi nguồn thứ nhất n rt: thanh ghi nguồn thứ hai n rd: thanh ghi đích n shamt: dự trữ (mặc định hiện nay là 00000) n funct: mã chức năng (extends opcode) 54IT3030 NKK-HUT Ví dụ lệnh R-format add $t0, $s1, $s2 op rs rt rd shamt funct 6 bits 6 bits5 bits 5 bits 5 bits 5 bits special $s1 $s2 $t0 0 add 0 17 18 8 0 32 000000 10001 10010 01000 00000 100000 0000 0010 0011 0010 0100 0000 0010 00002 = 0232402016 55IT3030 NKK-HUT Phân tích khuôn dạng lệnh R-format NKK-HUT MIPS I-format Instructions n Các phép toán tức thì và các lệnh load/store op rs rt constant or address 6 bits 5 bits 5 bits 16 bits n rt,rs: thanh ghi toán hạng đích hoặc thanh ghi nguồn n Hằng số: –215 to +215 – 1 n Địa chỉ: địa chỉ độ lệch so với địa chỉ cơ sở 57IT3030 NKK-HUT Load and Store Instructions 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 x 1 0 0 0 0 0 0 31 25 20 15 0 lw = 35 sw = 43 Base register Data register Offset relative to base op rs rt operand / offset I 1 1 0 0 1 1 1 1 1 A[0] A[1] Address in base register Memory Note on base and offset: The memory address is the sum of (rs) and an immediate value. Calling one of these the base and the other the offset is quite lw $t0,40($s3) lw $t0,A($s3) MIPS lw and sw instructions and their memory addressing convention that allows for simple access to array elements via a base address and an offset (offset = 4i leads us to the i th word). A[2] A[i] Offset = 4i . . . Element i of array A arbitrary. It would make perfect sense to interpret the address A($s3) as having the base A and the offset ($s3). However, a 16-bit base confines us to a small portion of memory space. 58IT3030 NKK-HUT lui Instructions op rs rt operand / offset lui $s0, 61 # The immediate value 61 is # loaded in upper half of $s0 # with lower 16b set to 0s 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 31 25 20 15 0 lui = 15 Destination Unused Immediate operand I Content of $s0 after the instruction is executed 59IT3030 NKK-HUT Các chế độ địa chỉ IT3030 60 NKK-HUT Một số lệnh cơ bản n Lệnh toán học và logic n Lệnh load/store n Lệnh nhảy và rẽ nhánh (jump/branch) IT3030 61 NKK-HUT Lệnh toán học và logic IT3030 62 NKK-HUT Lệnh toán học và logic (kiểu I-Format) IT3030 63 NKK-HUT Lệnh load/store IT3030 64 NKK-HUT Lệnh load/store (I-Format) IT3030 65 NKK-HUT Lệnh nhảy và rẽ nhánh không điều kiện IT3030 66 NKK-HUT Lệnh nhảy và rẽ nhánh có điều kiện IT3030 67 NKK-HUT Lệnh kiểm tra điều kiện IT3030 68 NKK-HUT NKK-HUT Compiling If Statements n C code: if (i==j) f = g+h; else f = g-h; n f, g, h, i, j in $s0, $s1, $s2, $s3, $s4 n Compiled MIPS code: bne $s3, $s4, Else add $s0, $s1, $s2 j Exit Else: sub $s0, $s1, $s2 Exit: … Assembler calculates addresses 70IT3030 NKK-HUT Compiling Loop Statements n C code: while (save[i] == k) i += 1; n i in $s3, k in $s5, address of save in $s6 n Compiled MIPS code: Loop: sll $t1, $s3, 2 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, Exit addi $s3, $s3, 1 j Loop Exit: … 71IT3030 NKK-HUT NKK-HUT Lập trình hợp ngữ sử dụng tập lệnh MIPS n Khung chương trình hợp ngữ n Biên dịch và thực thi chương trình hợp ngữ IT3030 73 NKK-HUT Khung chương trình hợp ngữ Chương trình hợp ngữ cho MIPS bao gồm các thành phần ØĐịnh hướng biên dịch ØLệnh ØGiả lệnh NKK-HUT Khung chương trình hợp ngữ #include .data #Khai báo biến .text .globl start .ent start start: #Nội dung chương trình chính .end start .ent CTCon CTCon: #Nội dung chương trình con .end CTCon NKK-HUT Chương trình ví dụ #include .data test: .asciiz "Hello World" .text .set noreorder .globl start .ent start start: la a0,test #load the address of test string to a0 jal printf #print test tring to console .end start NKK-HUT Biên dịch và thực thi với MIPSIT & MIPS nMIPSIT2000 UPLOAD nMIPS n NKK-HUT 4.5. Kiến trúc tập lệnh x86 n Giới thiệu kiến trúc x86 n Tập thanh ghi 8086 n Tập lệnh và các chế độ địa chỉ n Ví dụ lập trình hợp ngữ sử dụng tập lệnh 8086 78IT3030 NKK-HUT 4.6. Kiến trúc tập lệnh Intel x86 n Evolution with backward compatibility n 8080 (1974): 8-bit microprocessor n Accumulator, plus 3 index-register pairs n 8086 (1978): 16-bit extension to 8080 n Complex instruction set (CISC) 8087 (1980): floating-point coprocessorn n Adds FP instructions and register stack n 80286 (1982): 24-bit addresses, MMU n Segmented memory mapping and protection n 80386 (1985): 32-bit extension (now IA-32) n Additional addressing modes and operations n Paged memory mapping as well as segments 79IT3030 NKK-HUT The Intel x86 ISA n Further evolution… n i486 (1989): pipelined, on-chip caches and FPU n Compatible competitors: AMD, Cyrix, … n Pentium (1993): superscalar, 64-bit datapath n Later versions added MMX (Multi-Media eXtension) instructions n The infamous FDIV bug n Pentium Pro (1995), Pentium II (1997) n New microarchitecture (see Colwell, The Pentium Chronicles) n Pentium III (1999) n Added SSE (Streaming SIMD Extensions) and associated registers n Pentium 4 (2001) n New microarchitecture n Added SSE2 instructions 80IT3030 NKK-HUT The Intel x86 ISA n And further… n AMD64 (2003): extended architecture to 64 bits n EM64T – Extended Memory 64 Technology (2004) n AMD64 adopted by Intel (with refinements) n Added SSE3 instructions n Intel Core (2006) n Added SSE4 instructions, virtual machine support n AMD64 (announced 2007): SSE5 instructions n Intel declined to follow, instead… n Advanced Vector Extension (announced 2008) n Longer SSE registers, more instructions n If Intel didn’t extend with compatibility, its competitors would! n Technical elegance ≠ market success 81IT3030 NKK-HUT Giới thiệu kiến trúc x86 IT3030 82 NKK-HUT Cấu trúc bên trong của 8086 n Gồm 2 phần: n Đơn vị nối ghép bus (Bus Interface Unit – BIU) n Đơn vị thực hiện (Execution Unit – EU) n Hai phần này có thể hoạt động đồng 83 thời: trong khi EU đang thực hiện lệnh trước thì BIU đã tìm và nhận lệnh tiếp theo từ bộ nhớ chính. NKK-HUT Bus Interface Unit - BIU n Bao gồm: n Các thanh ghi đoạn n Con trỏ lệnh n Mạch tạo địa chỉ và điều khiển bus n Hàng đợi lệnh (8088: 4 Byte, 8086: 6 Byte) 84 n Nhiệm vụ: n Tạo và phát địa chỉ n Nhận lệnh từ bộ nhớ n Trao đổi dữ liệu với bộ nhớ chính và cổng vào-ra n Phát tín hiệu điều khiển bộ nhớ và mạch vào-ra Nhận các tín hiệu yêu cầu từ bên ngoài NKK-HUT Execution Unit – EU n Gồm: n Các thanh ghi chung n Các thanh ghi đệm n Đơn vị số học và logic (ALU) Khối giải mã lệnh 85 n n Nhiệm vụ: n Giải mã lệnh n Thực hiện lệnh NKK-HUT Tập thanh ghi 8086 n 4 thanh ghi đoạn: n CS (Code Segment): thanh ghi đoạn lệnh n DS (Data Segment): thanh ghi đoạn dữ liệu n SS (Stack Segment): thanh ghi đoạn ngăn xếp n ES (Extra Segment): thanh ghi đoạn dữ liệu phụ n 3 thanh ghi con trỏ: n IP (Instruction Pointer): thanh ghi con trỏ lệnh n SP (Stack Pointer): con trỏ ngăn xếp 86 n BP (Base Pointer): thanh ghi con trỏ cơ sở n 4 thanh ghi dữ liệu: n AX (Accumulator): thanh chứa - thanh ghi tích lũy n BX (Base): thanh ghi cơ sở n CX (Count): thanh ghi đếm n DX (Data): thanh ghi dữ liệu Mỗi thanh ghi này đều có thể được chia ra thành 2 nửa có khả năng sử dụng độc lập. n Thanh ghi cờ NKK-HUT Tập thanh ghi (tiếp) 87 NKK-HUT Tập lệnh và các chế độ địa chỉ n Tập lệnh: Tập lệnh của 8088 có khoảng 120 lệnh, chia thành các nhóm như sau: n Các lệnh chuyển dữ liệu (copy) n Các lệnh số học 88 n Các lệnh logic, dịch, quay n Các lệnh xử lý xâu ký tự (string) n Các lệnh điều khiển hệ thống n Các lệnh chuyển điều khiển (rẽ nhánh) n Các lệnh xử lý đặc biệt n Các lệnh vào-ra trực tiếp NKK-HUT Tập lệnh và các chế độ địa chỉ (tiếp) n Các chế độ địa chỉ (Addressing modes): n Chế độ địa chỉ là cách xác định toán hạng của lệnh n Toán hạng gồm: toán hạng nguồn và toán hạng đích n Họ Intel x86: nếu trong lệnh có 2 toán hạng thì toán 89 hạng đích được viết ở bên trái. n Toán hạng có thể là: n Hằng số (được cho ngay trong lệnh) n Nội dung của thanh ghi (trong lệnh cần cho biết tên thanh ghi) n Nội dung của ngăn nhớ n Nội dung của cổng vào-ra NKK-HUT Các chế độ địa chỉ n Chế độ địa chỉ tức thì: n Toán hạng là một giá trị hằng số nằm ngay trong lệnh. n Ví dụ: MOV CX, 5 ; nạp giá trị 5 vào thanh ghi CX MOV 5, CX ; chú ý: không tồn tại lệnh này !!! 90 n Chế độ địa chỉ thanh ghi: n Toán hạng là nội dung của 1 thanh ghi mà tên thanh ghi được cho biết ở trong lệnh. n Ví dụ: MOV AX, BX ; chuyển nội dung của BX vào AX NKK-HUT Các chế độ địa chỉ (tiếp) n Chế độ địa chỉ trực tiếp: n Toán hạng là nội dung của ngăn nhớ mà địa chỉ của ngăn nhớ đó được cho ở trong lệnh. n Ví dụ: MOV AX, [1234h] ; khác với MOV AX, ES:[1234h] 91 n 1234h là địa chỉ offset của ngăn nhớ n Nếu không chỉ định địa chỉ đoạn thì ngầm định thanh ghi đoạn tương ứng là DS n Lệnh này chuyển 1 word nằm trong bộ nhớ bắt đầu từ địa chỉ DS:1234h vào thanh ghi AX NKK-HUT Minh họa chế độ địa chỉ trực tiếp 92 NKK-HUT Các chế độ địa chỉ (tiếp) n Chế độ địa chỉ gián tiếp qua thanh ghi: n Toán hạng là nội dung của ngăn nhớ có địa chỉ offset nằm trong 1 trong các thanh ghi sau: BX, SI, DI. 93 n Chú ý: nếu không chỉ định địa chỉ đoạn thì ngầm định thanh ghi đoạn tương ứng là DS. n Ví dụ: MOV AL, [SI] ; tương đương MOV AL, DS:[SI] Lệnh này chuyển 1 byte nhớ ở địa chỉ DS:SI vào thanh ghi AL NKK-HUT Minh họa 94 NKK-HUT Các chế độ địa chỉ (tiếp) n Chế độ địa chỉ cơ sở: n Toán hạng là nội dung của ngăn nhớ có địa chỉ offset bằng tổng nội dung của một thanh ghi cơ sở (BX hoặc BP) + hằng số. n Nếu không chỉ định thanh ghi đoạn thì ngầm định thanh ghi đoạn đó là: 95 n DS nếu thanh ghi cơ sở là BX n SS nếu thanh ghi cơ sở là BP n Ví dụ: MOV AL, [BX+3] ; tương đương MOV AL, [BX]+3 ; tương đương MOV AL, 3[BX] NKK-HUT Minh họa 96 NKK-HUT Các chế độ địa chỉ (tiếp) n Chế độ địa chỉ chỉ số: n Toán hạng là nội dung của ngăn nhớ có địa chỉ offset bằng tổng nội dung của một thanh ghi chỉ số (SI hoặc DI) + hằng số. n Nếu không chỉ định thanh ghi đoạn thì ngầm định thanh ghi đoạn đó là DS. 97 n Ví dụ: MOV AX, [SI+3] ; tương đương MOV AX, [SI]+3 ; tương đương MOV AX, 3+[SI] ; tương đương MOV AX, 3[SI] NKK-HUT Minh họa 98 NKK-HUT Các chế độ địa chỉ (tiếp) n Chế độ địa chỉ chỉ số cơ sở: n Toán hạng là ngăn nhớ có địa chỉ offset bằng tổng của nội dung một thanh ghi cơ sở (BX, BP) với một thanh ghi chỉ số (SI, DI) và một hằng số. 99 n Ví dụ: MOV AL, [BX][SI]+4 ; Û MOV AL, [BX+SI+4] NKK-HUT Lập trình hợp ngữ với 8086 n Cú pháp n Khung chương trình n Ví dụ IT3030 100 NKK-HUT Chương trình dịch hợp ngữ n Được gọi là ASSEMBLER n Một số chương trình dịch hợp ngữ cho IBM-PC: n MASM – Microsoft Marco Assembler: Các tệp: MASM.EXE, LINK.EXE, 101 n EXE2BIN.EXE ... n TASM – Turbo Assembler: n Các tệp: TASM.EXE, TLINK.EXE ... n 8086 Emulator NKK-HUT Cú pháp của hợp ngữ n Chương trình hợp ngữ gồm các dòng lệnh, mỗi lệnh viết trên một dòng, mỗi dòng có thể là: n Lệnh của bộ vi xử lý (instruction) n Chỉ dẫn của chương trình dịch ASSEMBLER n Các lệnh hợp ngữ không phân biệt chữ hoa, chữ thường. n Khi dịch thành mã máy thì chỉ có các lệnh của bộ vi 102 xử lý mới được dịch. n Cấu trúc của một dòng lệnh : Tên Thao tác Toán hạng Chú thích (Name Operation Operand Comment ) n Giữa các trường phải có ít nhất một dấu cách (hoặc TAB) n Ví dụ: MAIN PROC BAT_DAU: MOV CX, 50 ; khoi tao bo dem NKK-HUT Khung chương trình EXE .Model Small .Stack 100h .Data ; khai báo biến và hằng ở đây .Code Main Proc mov ax, @Data mov ds, ax ; khởi tạo DS trỏ đến 103 đoạn Data ; mov es, ax ; bỏ dấu ; để khởi tạo ES = DS ; thân chương trình mov ah, 4Ch ; hàm thoát về DOS int 21h Main EndP End Main NKK-HUT Ví dụ .Model Small .Stack 100h .Data TBao db 'Hello World$' ; kết thúc bằng '$' .Code Main Proc mov ax, @Data mov ds, ax ; DS trỏ đến đoạn Data 104 HienTB: mov ah, 9 ; hàm hiện chuỗi lea dx, TBao ; DS:DX Þ chuỗi TBao int 21h ; gọi hàm Thoat: mov ah,4Ch ; hàm thoát về DOS int 21h Main EndP End Main NKK-HUT Hết chương 4 IT3030 105

Các file đính kèm theo tài liệu này:

  • pdfdoko_vn_36557_kien_truc_may_tinh_kien_truc_4043.pdf
Tài liệu liên quan