Nhấp nháy trình giả lập x86-64 hứa hẹn vượt qua QEMU

nhấp nháy-gcc

Ảnh chụp màn hình của nháy mắt chạy

Tin tức gần đây đã phá vỡ rằng dự án Blink đang phát triển một trình giả lập mới của bộ xử lý x86-64 cho phép bạn chạy các ứng dụng Linux đã biên dịch tĩnh trong một máy ảo có bộ xử lý mô phỏng.

Nó được đề cập rằng emục tiêu chính của dự án là cung cấp khả năng chạy các chương trình Linux được biên dịch cho kiến ​​trúc x86-64 trên các hệ điều hành khác (macOS, FreeBSD, NetBSD, OpenBSD) và trên các máy tính có kiến ​​trúc phần cứng khác (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Trong kho lưu trữ dự án, họ mô tả nháy mắt như sau:

nháy mắt là một máy ảo chạy các chương trình x86-64-linux được biên dịch tĩnh trên các hệ điều hành và kiến ​​trúc phần cứng khác nhau. Nó được thiết kế để làm điều tương tự như lệnh qemu-x86_64, ngoại trừ (a) thay vì là tệp nhị phân 4mb, Blink chỉ có dung lượng ~160kb; và (b) Blink nhanh hơn gấp 2 lần so với Qemu trong một số điểm chuẩn, chẳng hạn như mô phỏng GCC. Sự đánh đổi là Blink không có nhiều tính năng như Qemu. Blink hoàn toàn phù hợp khi bạn muốn có một máy ảo cực kỳ nhỏ và chạy các chương trình tạm thời nhanh hơn nhiều. Để biết thêm chi tiết về động lực cho công cụ này, vui lòng đọc https://justine.lol/ape.html.

Điều đáng nói là dự án được phát triển bởi tác giả của các phát triển như thư viện Cosmopolitan C, một cổng của cơ chế cách ly cam kết cho Linux và hệ thống tệp thực thi phổ quát Redbean.

Về chức năng, Nhấp nháy trông giống như lệnh qemu-x86_64nhưng khác với QEMU ở thiết kế nhỏ gọn hơn và hiệu suất tăng đáng kể. Ví dụ: tệp thực thi Blink chỉ có 157 KB thay vì 4 MB cho qemu-x86_64 và về mặt hiệu suất trong quá trình chạy thử nghiệm trên trình giả lập GCC, Blink đánh bại QEMU hai lần.

Để đảm bảo hiệu suất cao, một trình biên dịch JIT được sử dụng, giúp chuyển đổi hướng dẫn nguồn thành mã máy cho nền tảng đích một cách nhanh chóng (cho đến nay chỉ có x86_64 và aarch64 hỗ trợ JIT).

Khởi chạy trực tiếp trên trình giả lập các tệp thực thi ở định dạng ELF, PE (Portable Executables) và bin (Flat Executable), được biên dịch với các thư viện C tiêu chuẩn Cosmopolitan, Glibc và Musl được hỗ trợ.

Bên cạnh đó, Nó cũng nổi bật là nó có hỗ trợ tích hợp cho hơn một trăm cuộc gọi đến hệ thống Linux, bao gồm fork() và clone(). Hỗ trợ mô phỏng các tập lệnh i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED và RDTSCP.

Bên cạnh đó, dự án đang phát triển tiện ích đèn nháy, cung cấp giao diện để gỡ lỗi chương trình trên các nền tảng khác nhau, trực quan hóa việc thực thi chương trình và phân tích nội dung bộ nhớ. Một tính năng của trình gỡ lỗi là hỗ trợ chế độ gỡ lỗi ngược (Reverse Debugging), cho phép bạn quay lại lịch sử thực thi và quay lại điểm đã thực hiện trước đó.

Blinkenlights là một giao diện TUI có thể được sử dụng để gỡ lỗi các chương trình x86_64-linux trên tất cả các nền tảng. Không giống như GDB, Blinkenlights tập trung vào việc trực quan hóa quá trình thực thi chương trình. Nó sử dụng các ký tự UNICODE IBM Code Page 437 để hiển thị các bảng bộ nhớ nhị phân, các bảng này thay đổi khi bạn di chuyển qua mã hợp ngữ của chương trình. Các bảng bộ nhớ này có thể được cuộn và phóng to bằng con lăn chuột. Blinkenlights cũng hỗ trợ gỡ lỗi ngược, trong đó cuộn bánh xe trên màn hình lắp ráp cho phép bạn tua lại lịch sử thực hiện.

Cuối cùng, đối với những người muốn tìm hiểu thêm về dự án này, họ nên biết rằng mã dự án được viết bằng C (ANSI C11) và được phân phối theo giấy phép ISC. Trong số các phụ thuộc, chỉ libc (POSIX.1-2017) là bắt buộc.

nháy mắt

Đối với những người quan tâm đến việc có thể thử nháy mắt, họ nên biết rằng việc biên dịch nó cực kỳ đơn giản, họ chỉ cần lấy mã nguồn của nó, họ có thể thực hiện nó từ liên kết sau hoặc từ một thiết bị đầu cuối bằng cách gõ lệnh sau :

git https://github.com/jart/blink.git

Và đã xong, bạn chỉ cần nhập thư mục blik và biên dịch:

cd blink

make -j4

Nếu bạn muốn biết thêm về cách hoạt động của Blink, bạn có thể thực hiện điều đó từ liên kết theo dõi.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.