Thanh ghi mục đích chung
Khám phá cách các thanh ghi đa năng hoạt động như một "bảng cào" cực nhanh cho bộ não máy tính của bạn.
Thanh ghi là một tập hợp các dép xỏ ngón. Dữ liệu kỹ thuật số một bit được lưu trữ bằng dép xỏ ngón. Bằng cách kết hợp nhiều dép xỏ ngón, dung lượng lưu trữ có thể được mở rộng để chứa một số lượng lớn bit. Chúng ta phải sử dụng thanh ghi n-bit với n dép xỏ ngón nếu chúng ta muốn lưu trữ một từ n-bit.
Thanh ghi mục đích chung (GPR) là các thành phần thiết yếu trong CPU, đóng vai trò là vị trí lưu trữ tạm thời cho dữ liệu đang được xử lý tích cực. Không giống như các thanh ghi mục đích đặc biệt, dành riêng cho các tác vụ cụ thể, GPR rất linh hoạt và có thể lưu trữ nhiều loại dữ liệu, bao gồm toán hạng cho các phép toán số học và logic, địa chỉ bộ nhớ hoặc kết quả trung gian.
Hoạt động của các thanh ghi
Khi chúng ta cung cấp cho hệ thống đầu vào, đầu vào đó được lưu trữ trong các thanh ghi và khi hệ thống trả về kết quả sau khi xử lý, những kết quả đó cũng được rút ra từ các thanh ghi. để CPU có thể sử dụng chúng để xử lý dữ liệu mà người dùng cung cấp.
Thanh ghi được thực hiện dựa trên ba hoạt động:
- Tìm nạp: Thao tác tìm nạp được sử dụng để truy xuất các hướng dẫn do người dùng cung cấp đã được lưu trữ trong bộ nhớ chính. Thanh ghi được sử dụng để tìm nạp các hướng dẫn này.
- Giải mã: Thao tác giải mã được sử dụng để giải thích các Hướng dẫn, có nghĩa là CPU sẽ xác định Thao tác nào phải được thực hiện trên Hướng dẫn sau khi các Hướng dẫn đã được giải mã.
- Thực thi: CPU quản lý Hoạt động thực thi. Kết quả mà CPU tạo ra sau đó được lưu trữ trong bộ nhớ trước khi được hiển thị trên màn hình người dùng.
Các loại thanh ghi
- Trạng thái và thanh ghi kiểm soát.
- Thanh ghi dữ liệu đa năng.
- Đăng ký mục đích đặc biệt.
Đăng ký trạng thái và kiểm soát
Thanh ghi trạng thái và kiểm soát báo cáo và cho phép sửa đổi trạng thái của bộ xử lý và của chương trình đang được thực thi.
.png)
Thanh ghi dữ liệu đa năng:
Thanh ghi mục đích chung là các thanh ghi bổ sung có trong CPU và được sử dụng bất cứ lúc nào cần dữ liệu hoặc vị trí bộ nhớ. Chúng chủ yếu được sử dụng để giữ những thứ sau:
- Toán hạng cho các phép toán logic và số học
- Toán hạng để tính toán địa chỉ
- Con trỏ bộ nhớ
Có 3 loại thanh ghi dữ liệu đa năng đó là:
Thanh ghi dữ liệu: Thanh ghi dữ liệu bao gồm bốn thanh ghi dữ liệu 32 bit, được sử dụng cho các phép toán số học, logic và các phép toán khác. Thanh ghi dữ liệu một lần nữa được phân thành 4 loại đó là:
- AX: Đây được gọi là thanh ghi tích lũy. 16 bit của nó được chia thành hai thanh ghi 8 bit, AH và AL, cho phép nó thực hiện các lệnh 8 bit. Trong bộ vi xử lý 8086, nó được sử dụng trong các hướng dẫn số học, logic và truyền dữ liệu. Một trong những số liên quan đến thao tác và chia phải ở dạng AX hoặc AL.
- BX: Đây được gọi là thanh ghi cơ sở. Nó có 16 bit và được chia thành hai thanh ghi với 8 bit mỗi thanh ghi, BH và BL. Một thanh ghi địa chỉ là thanh ghi BX . Nó thường bao gồm một con trỏ dữ liệu để định địa chỉ gián tiếp dựa trên, được lập chỉ mục dựa trên hoặc dựa trên thanh ghi.
- CX: Đây được gọi là thanh ghi đếm. 16 bit của nó được chia thành hai thanh ghi 8 bit, CH và CL, cho phép nó thực hiện các lệnh 8 bit. Điều này hoạt động như một bộ đếm cho các vòng lặp. Nó tạo điều kiện thuận lợi cho việc phát triển các vòng lặp chương trình. Các hướng dẫn dịch chuyển / xoay và thao tác chuỗi đều cho phép sử dụng thanh ghi đếm làm bộ đếm.
- DX: Đây được gọi là thanh ghi dữ liệu. 16 bit của nó được chia thành hai thanh ghi 8 bit, DH và DL để nó cũng có thể thực hiện các lệnh 8 bit. Trong các hoạt động I / O, thanh ghi dữ liệu có thể được sử dụng làm số cổng. Nó cũng được áp dụng để chia và nhân.
Thanh ghi con trỏ: Thanh ghi con trỏ bao gồm các phần bên trái 16 bit (SP và BP) và thanh ghi ESP và EBP 32 bit.
- SP: Đây được gọi là con trỏ ngăn xếp được sử dụng để trỏ ngăn xếp chương trình. Để truy cập phân đoạn ngăn xếp, nó hoạt động với SS. Nó có kích thước 16 bit. Nó chỉ định mục ở trên cùng của ngăn xếp. Con trỏ ngăn xếp sẽ là (FFFE) H nếu ngăn xếp trống. Phân đoạn ngăn xếp có liên quan đến địa chỉ bù đắp của nó.
- BP: Đây được gọi là con trỏ cơ sở được sử dụng để trỏ dữ liệu trong các phân đoạn ngăn xếp. Chúng ta có thể sử dụng BP để truy cập dữ liệu trong các phân đoạn khác, không giống như SP. Nó có kích thước 16 bit. Nó chủ yếu đóng vai trò như một cách để truy cập các tham số được cung cấp thông qua ngăn xếp. Phân đoạn ngăn xếp có liên quan đến địa chỉ bù đắp của nó.
Thanh ghi chỉ mục: Các bit 16 bit ngoài cùng bên phải của thanh ghi chỉ mục ESI và EDI 32 bit. SI và DI đôi khi được sử dụng để bổ sung và đôi khi trừ cũng như để lập địa chỉ được lập chỉ mục.
- SI: Thanh ghi chỉ mục nguồn này được sử dụng để xác định các địa chỉ bộ nhớ trong phân đoạn dữ liệu mà DS đang định địa chỉ. Do đó, rất đơn giản để truy cập các vị trí bộ nhớ liên tiếp khi chúng ta tăng nội dung của SI. Nó có kích thước 16 bit. Liên quan đến phân đoạn dữ liệu, nó có một độ lệch.
- DI: Chức năng của thanh ghi chỉ mục đích này giống với chức năng của SI. Các hoạt động chuỗi là một lớp con của các lệnh sử dụng DI để truy cập các địa chỉ bộ nhớ do ES chỉ định. Nó thường được sử dụng như một chỉ mục đích cho các hoạt động chuỗi.
Đăng ký mục đích đặc biệt:
Để lưu trữ dữ liệu trạng thái máy và thay đổi cấu hình trạng thái, các thanh ghi mục đích đặc biệt được sử dụng. Nói cách khác, nó cũng được định nghĩa là CPU có một số thanh ghi được sử dụng để thực hiện lệnh, các thanh ghi này được gọi là thanh ghi mục đích đặc biệt. Thanh ghi mục đích đặc biệt có 8 loại, đó là thanh ghi cs, ds, ss, es, fs và gs thuộc thanh ghi phân đoạn. Các thanh ghi này chứa tối đa sáu bộ chọn phân đoạn.
- CS (Thanh ghi phân đoạn mã): Thanh ghi 16 bit được gọi là phân đoạn mã (CS) giữ địa chỉ của phần 64 KB cùng với các lệnh CPU. Tất cả các truy cập vào các hướng dẫn được tham chiếu bởi thanh ghi con trỏ lệnh (IP) được CPU thực hiện bằng cách sử dụng phân đoạn CS. Không thể thay đổi trực tiếp đăng ký CS. Khi sử dụng các hướng dẫn nhảy xa, gọi xa và trả về xa, thanh ghi CS sẽ tự động được cập nhật.
- DS (Thanh ghi phân đoạn dữ liệu): Một phân đoạn dữ liệu chương trình 64KB được giải quyết bằng cách sử dụng thanh ghi 16 bit được gọi là phân đoạn dữ liệu. Bộ xử lý theo mặc định tin rằng phân đoạn dữ liệu chứa tất cả thông tin được tham chiếu bởi các thanh ghi chung (AX, BX, CX và DX) và thanh ghi chỉ mục (SI, DI). Các lệnh POP và LDS có thể được sử dụng để thay đổi trực tiếp thanh ghi DS.
- SS (Thanh ghi phân đoạn ngăn xếp): Một thanh ghi 16 bit được gọi là phân đoạn ngăn xếp giữ địa chỉ của phân đoạn 64KB với ngăn xếp phần mềm. CPU theo mặc định tin rằng phân đoạn ngăn xếp chứa tất cả thông tin được tham chiếu bởi thanh ghi con trỏ ngăn xếp (SP) và con trỏ cơ sở (BP). Hướng dẫn POP cho phép sửa đổi trực tiếp thanh ghi SS.
- ES (Thanh ghi phân đoạn bổ sung): Một thanh ghi 16 bit được gọi là phân đoạn bổ sung giữ địa chỉ của phân đoạn 64KB, thường chứa dữ liệu chương trình. Trong các hướng dẫn thao tác chuỗi, CPU mặc định giả định rằng thanh ghi DI tham chiếu đến phân đoạn ES. Các lệnh POP và LES có thể được sử dụng để cập nhật trực tiếp thanh ghi ES.
- FS (File Segment register): Các thanh ghi FS không có mục đích được xác định trước bởi CPU; thay vào đó, hệ điều hành chạy chúng cung cấp cho chúng một mục đích. Trên các quy trình Windows, FS được sử dụng để trỏ đến khối thông tin luồng (TIB).
- GS (Thanh ghi phân đoạn đồ họa): Thanh ghi GS được sử dụng trong Windows 64-bit để trỏ đến các cấu trúc do hệ điều hành xác định. Nhân hệ điều hành thường sử dụng GS để truy cập bộ nhớ dành riêng cho luồng. Thanh ghi GS được Windows sử dụng để kiểm soát bộ nhớ dành riêng cho luồng. Để truy cập bộ nhớ dành riêng cho CPU, nhân Linux sử dụng GS. Con trỏ đến bộ nhớ cục bộ luồng, hoặc TLS, thường được sử dụng như GS.
- IP (Thanh ghi Con trỏ lệnh): Các thanh ghi CS và IP được 8086 sử dụng để truy cập các lệnh. Số phân đoạn của lệnh sau được lưu trữ trong thanh ghi CS, trong khi độ lệch được lưu trữ trong thanh ghi IP. Mỗi khi một lệnh được thực thi, IP được sửa đổi để trỏ đến lệnh sắp tới. IP không thể được sửa đổi trực tiếp bằng một lệnh, không giống như các thanh ghi khác; một lệnh có thể không có IP làm toán hạng của nó.
- Thanh ghi cờ: Thanh ghi trạng thái cho CPU x86 chứa trạng thái hiện tại của nó và nó được gọi là thanh ghi FLAGS. Kích thước và tầm quan trọng của các bit cờ khác nhau tùy thuộc vào kiến trúc. Nó thường bao gồm thông tin về các hạn chế hoạt động hiện tại của CPU cũng như kết quả của các phép toán học. Một số hạn chế này có thể cấm thực hiện một lớp lệnh "đặc quyền" cụ thể và ngăn một số ngắt kích hoạt. Các cờ trạng thái khác có thể ghi đè ánh xạ bộ nhớ và chỉ định phản hồi mà CPU sẽ có trong trường hợp chạy quá mức số học.
