Try webassembly



ตอนแรกจะลอง ports เอา cu writer (เวิร์ดจุฬา) มาวิ่งผ่าน Web Browser แต่นึกขึ้นได้ว่า cu writer วิ่งอยู่บน DOS งั้นลอง ports DOS แล้วเอามาลง cu writer น่าจะได้นะ เมื่อ ports DOS มาได้ Windows 3.11, Windows 95 และเกมส์บน DOS ก็น่าจะได้เหมือนกัน



แต่ว่า #DOS นั้นเป็นของลิขสิทธิ์ Microsoft, ต่อมา IBM พัฒนาโปรแกรมจำลอง DOS อีกที เรียกว่า #DOSBox และปล่อยเป็น GPL เลยเอา dosbox เนี่ยแหล่ะ มา compile ได้ output ขนาดใหญ่กว่า 26 MB, แต่ไฟล์ที่น่าสนใจคือ dosbox.js มีขนาด 5.3 MB และ dosbox.html.mem ที่ขนาด 309 KB


ดัวอย่างไฟล์ dosbox.js



ตัวอย่างหน้าจอ edit.com เป็นโปรแกรมแก้ไขข้อความ


ตัวอย่างโปรแกรม GW-BASIC เป็นโปรแกรมสำหรับเอาเขียนภาษา BASIC


ตัวอย่างโปรแกรม CU Writer  โปรแกรมพิมพ์เอกสารยอดนิยม




เพิ่งรู้จัก #jsdosbox ทำเหมือนกันเลย แต่เข้าใจว่าเป็น JavaScript bytecode ส่วนผม port มาทั้งสองแบบ ทั้งที่เป็น js และ wasm  ไฟล์มีความต่างกันดังนี้

Javascript
 - dosbox.js 5.3MB

WebAssembly
 - dosbox.js 578KB
 - dosbox.o 70KB  (binary)
 - dosbox.wasm 3MB (binary)

ประโยชน์ของมัน
  • สามารถ port เอา C/C++ หรือภาษาอื่นๆ (ที่จะมามาเพิ่มเติม) แปลงมาเป็น JavaScript ได้ เช่นเอา library CV, GD มาเป็น wasm แล้วเรียกใช้งานผ่าน JavaScript ก็จะทำให้เพิ่มประสิทธิภาพในประมวลผลภาพได้
  • reuse เราสามารถเอาของที่มีอยู่แล้ว มาใช้ร่วมกับ JavaScript ได้
  • Plugin ที่ต้องติดตั้งบน Browser จะค่อยๆ ลดลง (จนไม่ใช้ในที่สุด) ยกตัวอย่าง Game Engine อย่าง #Unity และ #Unreal ก็ port มา wasm ได้ 
  • ก็จะเป็นทางเลือกหนึ่ง
  • Write one run any browser ??

ลองเล่นดู

Dosbox-JS

Dosbox-WASM


keyword: #webassembly #wasm #LLVM

Comments

Popular Posts