2015-02-10 11 views
5

Tại sao không có đăng ký cụ thể để truy cập vào phần đăng ký khác (16-32)?Tại sao không phải là 16 bit cao hơn trong EAX có thể truy cập theo tên (như AX, AH và AL)?

Giống như ah hoặc al để truy cập một phần 8-bit của rìu đăng ký.

enter image description here

+0

Ok, tôi đã thay đổi câu hỏi của mình ... – Alexandre

+0

Rgister-accessors không tồn tại cho mục đích cụ thể này, vì chúng không tồn tại để truy cập 32 bit cao hơn trong thanh ghi kích thước 64 bit. Nhưng bạn có thể thay đổi nội dung đăng ký thường xuyên, rằng chúng sẽ được đặt hoàn toàn bên trong rìu, mà sau đó lại có thể truy cập được với bộ rìu rìu, cũng như ah/al. Tôi luôn làm theo cách này. – icbytes

+0

Nếu bạn hỏi tại sao 16 bit trên không có tên - đó là vì lịch sử. Câu hỏi thích hợp để hỏi là tại sao 16 bit thấp hơn có tên - vì 8086. Đối với AH - đó là từ 8088 ngày. Bộ vi xử lý Intel theo dõi dòng dõi của họ đến 8088, đó là một bộ xử lý 8 bit. – sashoalm

Trả lời

3

Ý tưởng là để kéo dài tuổi thanh ghi đến 32 bit, không để tạo ra một cỗ máy với hai lần như nhiều 16 hoặc 8 thanh ghi chút vì bạn đã có đủ những. Để giữ cho mã hóa và phần cứng đơn giản hơn, họ quyết định không cấp quyền truy cập trực tiếp vào 16 bit hàng đầu. Mọi thứ đều có giá thành. Thực tế thú vị: tiện ích mở rộng 64 bit đã mang lại r8 - r15 với nó, nhưng bạn cũng không thể truy cập trực tiếp 32 bit trực tiếp trong số đó.

+1

Đó là lịch sử - 8088, sau đó là 8086 và 286, sau đó là 386. Đó là những lưu giữ từ những phiên bản ban đầu đó. Xem https://en.wikipedia.org/wiki/X86_instruction_listings#Original_8086.2F8088_instructions – sashoalm

+1

@sashoalm: 8088 là post-8086: nó chỉ là một 8086 với một bus dữ liệu 8 bit, nhưng vẫn còn 16-bit trong nội bộ. – ninjalj

2

Vì không cần thiết. Hầu hết thời gian bạn làm việc với đăng ký đầy đủ. Các thanh ghi thấp như AX, AL được sử dụng chủ yếu khi tải/lưu trữ các giá trị thay vì sử dụng để tính toán. Bạn hầu như không thể tìm thấy một cách sử dụng cho AH ngày nay.

Cho phép truy cập vào các phần cao đó yêu cầu giới thiệu các mã opcode mới và điều đó sẽ gây ô nhiễm không gian mã vạch x86 vốn đã kín và hỗn loạn. Nó không phải dễ dàng để tìm một opcode miễn phí cho những hướng dẫn hoặc. Hơn nữa, việc truy cập riêng biệt vào các phần khác nhau của thanh ghi sẽ giới thiệu sự phụ thuộc phức tạp hơn, gây áp lực nhiều hơn cho bộ điều phối lệnh. Đó có thể là một trong những lý do tại sao most x86_64 instructions zero the upper part of a 32 bit register thay vì bảo quản nó.

Các vấn đề liên quan