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).
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoData.Network Vertical Generative Ai. Trao quyền cho chính mình. Truy cập Tại đây.
- PlatoAiStream. Thông minh Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Trung tâmESG. Than đá, công nghệ sạch, Năng lượng, Môi trường Hệ mặt trời, Quản lý chất thải. Truy cập Tại đây.
- PlatoSức khỏe. Tình báo thử nghiệm lâm sàng và công nghệ sinh học. Truy cập Tại đây.
- nguồn: https://hackaday.com/2024/02/17/wowmips-a-mips-emulator-for-windows-applications/