2010-07-26 20 views
-1

當客戶端打開我的網站時,我可以在客戶端瀏覽器上創建gcc編譯器的虛擬實例嗎?
通過這樣做,我可以直接將用戶.c文件作爲參數傳遞給我的編譯器實例,然後執行它,而無需對服務器進行POST調用並在那裏執行文件?客戶端瀏覽器上的C編譯器的虛擬實例

+0

你想做什麼?我不明白你的意思。客戶端不應該編譯瀏覽器中的任何內容,這並不合理。 – Coltin 2010-07-26 06:31:24

+0

@Coltin: - 在線編程競賽將用戶文件傳遞到執行它的服務器。如果有數百萬用戶,那麼服務器效率會降低。 因此,如果有一種方法可以動態地創建我的gcc編譯器的虛擬實例,這樣我就不必進行服務器調用來執行該文件。 如果還有疑問,請告訴我 – 2010-07-26 06:39:39

+0

我認爲讓每位參賽者告訴你天氣與否他們贏得比賽可能會更好。爲了從瀏覽器託管的編譯器中獲得任何合理的性能,它需要用JavaScript或更好的Java虛擬機(或可能的其他插件語言)編寫。 – nategoose 2010-07-26 20:42:27

回答

2

本來我userstood你的問題要面向本地平臺上運行瀏覽器:

考慮到瀏覽器可以在許多不同的平臺, 。運行系統和處理器架構 運行 。按照 的方式編譯C可能在技術上 是可行的,但實際上不可行。

我在支持大量廣泛使用的瀏覽器平臺的難度上,「基本上不可行」。

現在我明白你正在考慮針對虛擬環境。我會修改幾乎不可行的「大量工作」。

如果我理解你的意圖,那就是運行一個C編譯器,它會發出x86編譯代碼並執行它。爲此,我們需要模擬JavaScript環境中的x86環境。更重要的是,我認爲你的意圖是在這個環境中執行這個討論者,以便你可以重新使用gcc。所以你也需要模擬一個文件系統。這是可以做到的「顯而易見的」,但它確實是很多工作。是不是真的值得嗎?

即使有很多程序員,競爭代碼也很小(我猜)同時編譯的數量不可能如此龐大,只有一個體面的排隊請求系統,一點Ajax以及一些後端擴展成本高昂是否支持預期的人口?開發者與後端系統的比例是多少?

無論如何,如果我要解決這個問題,我會去開源瀏覽器的代碼,並融入海灣合作委員會的代碼。生成一個編譯器/瀏覽器混合。給開發人員並告訴他們「使用它並獲得快速的編譯速度,或者使用您自己的瀏覽器並加入隊列。」

+0

當然,您不會爲本地機器創建本機二進制文件。您編譯C以在用JavaScript編寫的虛擬機上運行。當然在JavaScript中編寫一個C編譯器會有點工作.. :-) – 2010-07-26 06:42:00

+0

另一種方法(更容易但更慢)將編寫一個x86虛擬機在JavaScript中,並運行gcc ... – 2010-07-26 06:43:14

+0

+1 - I像這樣的推論實際上是不可行的。 – 2010-07-26 06:43:21

0

您不打算使用GCC,因爲它是爲此編寫的。在AT BEST中,如果你有一個用Java編寫的針對JVM的編譯器,並且可以作爲一個applet運行,那麼你可以完成一些simalar。我不知道如何才能達到這樣的效果,但是,我懷疑需要做一些工作才能完成它。據我所知,目前還沒有任何事情可以做到這一點。

0

也許在後臺使用了一個jsLinux?製作過程可以在虛擬機中運行。通信可以通過擴展剪貼板傳輸,也許成多個管道來完成......

我也會對基於JavaScript的gcc解決方案感興趣。

+0

這實在是一個評論,而不是一個答案。有了更多的代表,[你將能夠發表評論](http://stackoverflow.com/privileges/comment)。 – 2014-03-20 22:50:26

相關問題