17 điểm bởi xguru 2025-02-05 | 4 bình luận | Chia sẻ qua WhatsApp
  • Thông thường, người ta dễ nghĩ tệp PDF là tài liệu tĩnh, nhưng thực tế nó có tích hợp khả năng hỗ trợ Javascript
    • Tiêu chuẩn PDF có thư viện chuẩn Javascript riêng
    • Các trình duyệt hiện đại như Chromium, Firefox chỉ triển khai API ở mức cực kỳ hạn chế vì lý do bảo mật
  • Chỉ Adobe Acrobat hỗ trợ đầy đủ toàn bộ đặc tả Javascript trong PDF, bao gồm các tính năng rất rộng như kết xuất 3D, yêu cầu HTTP, phát hiện tất cả màn hình của người dùng, v.v.
  • Ngay cả khi dựa trên API trình duyệt bị giới hạn, vẫn có thể thực hiện logic tính toán mong muốn, nhưng phần IO thì bị hạn chế rất nhiều
  • Có thể biên dịch mã C sang asm.js để chạy bên trong PDF
    • Sử dụng phiên bản Emscripten cũ hơn (như 1.39.20, phiên bản còn hỗ trợ mục tiêu asm.js)
    • Chỉnh sửa trình giả lập RISC-V TinyEMU để biên dịch sang asm.js và chạy nó trong PDF
  • Cách xuất màn hình và nhập liệu giống hệt phương thức đã dùng trong DoomPDF (chạy Doom trong PDF)
    • Màn hình dùng mỗi dòng làm một trường văn bản và biểu diễn trạng thái pixel bằng ký tự ASCII
    • Nhập liệu truyền phím vào VM thông qua bàn phím ảo và hộp văn bản
  • Phát sinh vấn đề hiệu năng khá lớn
    • Ví dụ: khởi động nhân Linux mất khoảng 30~60 giây, chậm hơn hơn 100 lần so với chạy thông thường
    • V8 trong bộ máy PDF của Chrome bị vô hiệu hóa JIT nên hiệu năng suy giảm mạnh
  • Có thể chọn hệ thống tệp gốc cho bản 64 bit hoặc 32 bit
    • Mặc định dùng hệ thống Buildroot 32 bit (lấy từ ví dụ TinyEMU gốc)
    • Cũng có phiên bản Alpine Linux 64 bit, nhưng chậm hơn khoảng 2 lần nên thường không dùng

4 bình luận

 
xcutz 2025-02-06

Mức độ điên rồ ngang ngửa Doom, Linux lmao

 
tsboard 2025-02-05

Đây là sự lãng mạn hay là sự điên rồ vậy, rùng mình rùng mình.

 
kuthia 2025-02-05

wow...

 
kaydash 2025-02-05

Chà......