您當前的位置:首頁 > 娛樂

方舟編譯器學習筆記53方舟編譯器Toy Runtime釋出v0.1,Helloworld可執行

作者:由 小乖他爹 發表于 娛樂時間:2019-10-23

PLCT實驗室(全稱:中國科學院軟體研究所智慧軟體研究中心程式語言與編譯技術實驗室)所開發的 方舟編譯器Toy Runtime釋出了第一個版本v0。1,已經可以支援方舟編譯器的Helloworld,執行該例子生成的。s檔案。

釋出地址:isrc-cas/pacific

本次釋出Note:

Release v0。1

本次提交發布面向方舟開源編譯器的 Toy Runtime 的首次釋出。 技術原理上,由於目前方舟的開源資訊,

只有編譯器框架, 幾乎沒有執行時的技術細節。我們在9月份的時候吹了牛皮, 在10月15日的時候開源一個

能跑方舟生成的二進位制的 Runtime, 真的做起來才發現FLAG立的太早,難度太大了。 在沒有方舟執行時環

境設計細節的前提下(我們跟大家一樣,目前 只能看到已開源部分,沒開源部分我們不是華為員工,看不到),

唯一的選擇是進行一定程度的hack和逆向(並沒有時間)。 我們選擇了用QEMU來提供AArch64的架構支援(因

為別的都不熟), 把方舟的Java的那一套巧妙地(硬生生)用GNU/Linux的方式「fake」 了一套可以跑「Hello

World」的 Toy Runtime 出來,兌現了 九月初吹的牛(幸虧沒有吹太大,只說了跑 helloworld(尬笑

————————————以下內容為正經老派介紹————————————

——Toy Runtime的開發背景——

方舟編譯器8月31日開源之後,並未開放其runtime,所以sample可以編譯出XXX。VtableImpl。s格式的檔案,但是並不能直接執行。關注方舟編譯器眾多工程師對Runtime呼聲很高,在這種情況下,PLCT實驗室藉助其在程式語言和編譯領域的多年積累,根據目前開源的有限資訊,構建了Toy Runtime。Toy Runtime並不是華為官方的專案,只是方舟編譯器Runtime的一個參考實現。

Toy Runtime現在還處於v0。1版本,雖然還很簡陋,但是畢竟是實現了從0到1的一個跨越,希望Toy Runtime能走得更遠。

——Toy Runtime的編譯和執行——

1、Toy Runtime的v0。1版本,目前是預設在Ubuntu18。04環境下編譯執行;

2、Toy Runtime依賴於aarch64-gun-toolchain,可以透過“sudo apt-get install gcc-8-aarch64-linux-gnu“來安裝;

3、Toy Runtime依賴於qemu-aarch64,可以透過原始碼中pacific/script/下的build-qemu-aarch64。sh來編譯qemu-aarch64;

4、使用命令列“make”,編譯Toy Runtime;

5、使用命令列“make sample”,執行Helloworld例子,成功執行後如下圖所示:

方舟編譯器學習筆記53方舟編譯器Toy Runtime釋出v0.1,Helloworld可執行

——————Ubuntu16。04下Toy Runtime的編譯和執行———————

1、使用命令列“sudo apt-get install gcc-aarch64-linux-gnu”,安裝aarch64-gun-toolchain的依賴。

2、將Makefile之中的

CROSS_AARCH64_GCC = aarch64-linux-gnu-gcc-8

修改為:

CROSS_AARCH64_GCC = aarch64-linux-gnu-gcc

3、將src/pacific。c中的591行的

for (int idx = 0; idx < num; idx++) {

修改為:

int idx;

for (idx = 0; idx < num; idx++) {

4、其他步驟和Ubuntu18。04的步驟一樣。

標簽: runtime  toy  aarch64  方舟  編譯器