剛剛在透過宗董的噗浪看到:
http://www.plurk.com/p/c8rqs4
有人用Javascript實作了x86環境,可以跑busybox...
實作的網址:
http://bellard.org/jslinux/
瀏覽器所使用的Javascript引擎,需要支援TypedArray,所以目前只能在Firefox4以及Chrome上面跑。Chrome12會有bug,所以建議在Chrome11上面跑。剛剛試跑的執行畫面:
看了一下原始碼,他用一個javascript來模擬終端機http://bellard.org/jslinux/term.js,模擬器則是:http://bellard.org/jslinux/cpux86.js。模擬器的程式,會透過ajax下載linux kernel image及root filesystem image等來執行...
據說在Firefox4下的執行速度大約是Chrome11的兩倍...
我只能說,作者太強了
使用FireFox4.0.1
執行指令:top, uname -a, df
原始程式就看不懂了
還給他obfuscated
說實在
這除了方便練習使用linux CLI之外
我還真想不出有什麼用處
他寫這個據說是想要研究Javascript引擎以及執行效率。
原始碼並沒有做混淆,只去掉不必要的空格。
太妙了!
雖然有 原理 的說明,
還是不了解怎麼能夠把這些東西鬥在一起…
如果能在裡面綁個虛擬網卡,
又能連外的話,
又能與PC的檔案系統互通的話,
應會有更多的應用吧。
不能輸入中文。
只可從CLI裡複製文字出來,
但無法從外面貼文字進CLI裡。
作者是超級神人:
介紹:http://www.hksilicon.com/kb/articles/5760/Fabrice-Bellard
fillano提到:
作者是超級神人:
太強了
瞠目結舌
http://bellard.org/jslinux/term.js
http://bellard.org/jslinux/cpux86.js
但是
"use strict";
這是什麼? 我不記得JavaScript裡有這種用法?
還有
Linux是在哪邊載入的?
謎?
不過也有點收獲了
FireFox4 在JavaScript裡可以用 ctypes 去Call外部的dll來用?
https://developer.mozilla.org/en/js-ctypes/Using_js-ctypes
既然用JavaScript可以做到模擬x86去跑Linux
那是不是有一天
我們可能可以在網頁瀏覽器上
去玩到傳統TV-Game的遊戲呢?
如果以同樣的原理去模擬TV-Game主機的CPU與GPU
並利用ctypes去將繪圖拋轉到DirectX或OpenGL去處理的話
街機、大型電玩的模擬器,應早就有javascript版:
http://www.smashcat.org/personal/html/games_arcade.html
http://def-logic.com/main/
不大會去分辨這些是否透過ROM跑出來的?
那個smashcat裡的
大金剛和太空侵略者
是整個用dHTML/Javascript寫出來的而不是跑ROM
已經有MAME類的模擬器了
用Javascript實作的模擬器
意義也不大
大概只有像這位天才說的:Just for fun (在末段What's the use中提到)
不過人家是天才
我的頭腦只是一塊海綿
use strict是ECMA-262 Edition 5定義的新語法,表示要用嚴格的Javascript語法來執行,有一些過去慣用的寫法就會出錯,例如使用變數前沒有用var宣告。
use strict主要是影響他所在的scope,如果在函數中使用,並不會讓global scope以及其他未使用的函數變成use strict。
linux是程式中利用ajax(XMLHttpRequest)從遠端載入的,你仔細看一下程式的話,可以看到cpux86.js最後有載入幾個*.bin檔的動作。