
最速のLoongArchサンドボックス
libloong は、組み込みおよび高頻度スクリプティング向けに設計された64ビット高性能LoongArchエミュレータライブラリです。libriscv のアーキテクチャを基盤としており、ゼロ依存でコンパクトな約18k行のコードベースを維持しながら、利用可能な最速の64ビットインタプリタ性能を提供します。
コマンドラインインターフェース でLoongArch64 Linuxプログラムを実行することもできます。
CoreMark 1.0 インタプリタベンチマーク(2025年12月)において、libloong はRyzen 7950X上で64ビットカテゴリをリードし、安定的に 3000+ のスコアに到達しています。
| インタプリタ | アーキテクチャ | スコア |
|---|---|---|
| libloong | 64ビットLoongArch | 3045 |
| libriscv | 64ビットRISC-V | 2865 |
| stitch | Wasm | 2743 |
| wasm3 | Wasm | 2368 |
| wasmer (WAMR) | Wasm | 2314 |
| wasmi | Wasm | 1967 |
高度なモード: インタプリタは移植性のための主要な焦点ですが、libloongには ネイティブの38% (15.5k CoreMark)に達する軽量JITと、ネイティブの約77% (31.9k CoreMark)に達する組み込みバイナリトランスレータが含まれています。
libloongが優れているのはゲームエンジンスクリプティングです。従来のゲームは、共有ライブラリ(フルシステムアクセス)、Luaのような組み込みVM(約150nsの呼び出しオーバーヘッド)、またはJavaランタイムを通じてMOD作成を提供します。libloong の呼び出しオーバーヘッドは約4nsです。

Asteroidゲームの例 を参照してください。
CMake設定オプション:
LA_DEBUG=ON/OFF - デバッグ出力を有効にする(デフォルト: OFF)LA_BINARY_TRANSLATION=ON/OFF - バイナリトランスレーションを有効にする(デフォルト: OFF)LA_THREADED=ON/OFF - スレッド化されたバイトコードディスパッチを有効にする(デフォルト: ON)LA_MASKED_MEMORY_BITS=N - マスク付きメモリアリーナのサイズを2^Nバイトに設定(0 = 無効、デフォルト: 0)オプション付きの例:
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DLA_MASKED_MEMORY_BITS=32 \
-DLA_BINARY_TRANSLATION=ON
make -j6
#include <libloong/machine.hpp>
int main() {
// Load a LoongArch ELF binary
std::vector<uint8_t> binary = load_file("program.elf");
// Create a machine with 64MB memory
loongarch::Machine machine { binary, {
.memory_max = 64 * 1024 * 1024
}};
// Setup program arguments
machine.setup_linux({"program"}, {"LC_ALL=C"});
// Run the program
machine.simulate();
}