Logo Zephyrnet

WoWMIPS: Trình giả lập MIPS cho các ứng dụng Windows

Ngày:

Khi Windows NT ra mắt lần đầu, nó có cổng kết nối với nhiều nền tảng khác nhau, từ x86 và i860 của Intel đến Alpha của DEC cũng như kiến ​​trúc MIPS. Ngày nay, việc chạy các ứng dụng Windows được viết cho nhiều nền tảng này hơi khó khăn, [x86matthew] coi đây là lý do chính đáng để viết trình giả lập MIPS. Tuy nhiên, đây không chỉ là một trình giả lập cũ. Thay vào đó, nó ánh xạ các ứng dụng Windows 32-bit nhắm vào CPU MIPS R4000 sang CPU x86. Vì cả hai nền tảng đều chạy ở chế độ 32 bit, endian nhỏ nên về mặt lý thuyết, đây sẽ là một cuộc dạo chơi trong công viên.

Việc sử dụng định dạng thực thi của Windows PE cũng giống nhau, vì vậy nhiệm vụ đầu tiên là tìm ra cách tải tệp nhị phân MIPS PE theo cách có ý nghĩa đối với nền tảng x86. Điều này liên quan đến một số kỹ thuật đảo ngược của tệp MIPS ntdll.dll để tìm ra cách xử lý việc di chuyển trên nền tảng đó. Theo sau điều này, ánh xạ các hướng dẫn việc chuyển đổi CPU R4000 sang (CISC) x86 ISA khá dễ dàng. Chỉ còn lại hỗ trợ Đơn vị dấu phẩy động (FPU) là một thách thức trong tương lai. Truy cập bộ nhớ được để lại dưới dạng truy cập trực tiếp, nghĩa là không có hộp cát hoặc cách ly, vì mục đích đơn giản.

Nhiệm vụ cuối cùng là lập bản đồ lệnh gọi API gốc, gọi gần như trực tiếp vào API của hệ điều hành Windows của máy chủ cơ bản, với một chút logic kết dính. Với tất cả những điều này đã được thực hiện, các ứng dụng Windows NT ban đầu được viết cho MIPS những năm 1990 chỉ chạy tốt trên PC x86_64 hiện đại chạy Windows — miễn là bạn không cần FPU (hiện tại).

tại chỗ_img

Tin tức mới nhất

tại chỗ_img