All Projects → sunho → AheuiJIT

sunho / AheuiJIT

Licence: other
Aheui JIT compiler for PC and web

Programming Languages

C++
36643 projects - #6 most used programming language
javascript
184084 projects - #8 most used programming language
CMake
9771 projects
CSS
56736 projects
kotlin
9241 projects
Makefile
30231 projects

Projects that are alternatives of or similar to AheuiJIT

interp
Interpreter experiment. Testing dispatch methods: Switching, Direct/Indirect Threaded Code, Tail-Calls and Inlining
Stars: ✭ 32 (+18.52%)
Mutual labels:  x86-64, wasm, aarch64
Asmjit
Machine code generation for C++
Stars: ✭ 2,874 (+10544.44%)
Mutual labels:  x86-64, jit, aarch64
Wag
WebAssembly compiler implemented in Go
Stars: ✭ 177 (+555.56%)
Mutual labels:  x86-64, wasm, aarch64
Dora
Dora VM
Stars: ✭ 371 (+1274.07%)
Mutual labels:  x86-64, jit, aarch64
lsp-dsp-lib
DSP library for signal processing
Stars: ✭ 37 (+37.04%)
Mutual labels:  x86-64, aarch64
Onednn
oneAPI Deep Neural Network Library (oneDNN)
Stars: ✭ 2,600 (+9529.63%)
Mutual labels:  x86-64, aarch64
libcluon
libcluon is a small and efficient, single-file and header-only library written in modern C++ to power microservices.
Stars: ✭ 81 (+200%)
Mutual labels:  x86-64, aarch64
ArvernOS
💾 A minimal, experimental and "toy" monolithic kernel to learn about OS development // Work In Progress
Stars: ✭ 313 (+1059.26%)
Mutual labels:  x86-64, aarch64
Mcsema
Framework for lifting x86, amd64, aarch64, sparc32, and sparc64 program binaries to LLVM bitcode
Stars: ✭ 2,198 (+8040.74%)
Mutual labels:  x86-64, aarch64
vox
Vox language compiler. AOT / JIT / Linker. Zero dependencies
Stars: ✭ 288 (+966.67%)
Mutual labels:  x86-64, jit
docker-dns-ad-blocker
A lightweight dnsmasq DNS server to block traffic to known ad servers with optional DNSCrypt support. Supports x86_64 and Raspberry Pi (armhf).
Stars: ✭ 78 (+188.89%)
Mutual labels:  x86-64, aarch64
Minijit
A basic x86-64 JIT compiler written from scratch in stock Python
Stars: ✭ 185 (+585.19%)
Mutual labels:  x86-64, jit
peekaboo
An standalone execution trace library built on DynamoRIO.
Stars: ✭ 17 (-37.04%)
Mutual labels:  x86-64, aarch64
Mandibule
linux elf injector for x86 x86_64 arm arm64
Stars: ✭ 171 (+533.33%)
Mutual labels:  x86-64, aarch64
fp256
An efficient library for 256 bit integer arithmetic
Stars: ✭ 21 (-22.22%)
Mutual labels:  x86-64, aarch64
rpaheui
Industrial-strength implementaiton of Aheui written in RPython with JIT
Stars: ✭ 52 (+92.59%)
Mutual labels:  jit, aheui
profiler-api
The portable version of JetBrains profiler API for .NET Framework / .NET Core / .NET / .NET Standard / Mono
Stars: ✭ 21 (-22.22%)
Mutual labels:  x86-64, aarch64
dynarmic
An ARM dynamic recompiler.
Stars: ✭ 675 (+2400%)
Mutual labels:  x86-64, jit
Docker Homebridge
Homebridge Docker. HomeKit support for the impatient using Docker on x86_64, Raspberry Pi (armhf) and ARM64. Includes ffmpeg + libfdk-aac.
Stars: ✭ 1,847 (+6740.74%)
Mutual labels:  x86-64, aarch64
Rcore
Rust version of THU uCore OS. Linux compatible.
Stars: ✭ 2,175 (+7955.56%)
Mutual labels:  x86-64, aarch64

Brief English introduction

AheuiJIT is a just in time compiler for Aheui language built from scratch. Its design is inspired by LLVM and dynarmic project. It's about 10 times faster than the previously fastest implementations of Aheui language.

아희짓

개요

아희짓은 아희 언어를 위한 JIT (Just in Time) 컴파일러입니다. 어셈블러와 유틸 라이브러리외에 외부 라이브러리에 전혀 의존하지 않고 JIT을 바닥부터 구현합니다.

지원 환경

  • 64비트 windows, mac, linux (x86 아키텍쳐)
  • 웹어셈블리를 지원하는 웹 브라우저 및 nodejs (웹 데모)
  • 안드로이드 (arm 64비트)

완성도

  • 아희 테스트 케이스 중 64 비트 정수 최대값 출력을 제외한 모든 테스트를 통과합니다.
    • 특히 저장소의 원소를 모두 소모하면 반대로 가는 스펙을 제대로 구현합니다.
  • 아희아희를 원할하게 구동합니다. (quine과 logo가 작동하는 것을 확인했습니다.)
  • 빠릅니다.
    • logo 아희 테스트를 0.21초 안에 완료합니다. (JIT 컴파일 시간 0.05초 포함)
    • 아희아희 + quine 테스트를 0.7초안에 완료합니다. (기존 jit 컴파일러인 rpaheui보다 8배 빠른 결과입니다.)
  • 웹버전도 꽤나 빠릅니다.
    • logo 아희 테스트를 JIT 컴파일 시간을 제외하면 0.23초 안에 완료합니다.

사용법

PC 버전

릴리즈 페이즈에 가서 운영체제에 맞는 압축파일을 다운받고 압축을 푸세요.

bin/AheuiJITCli 아희파일 

로 아희 프로그램을 실행해볼 수 있습니다.

inlcude와 lib폴더에는 정적 라이브러리로 빌드된 AheuiJIT이 있습니다.

웹 버전

npm install aheui-jit

하신 다음

import AheuiJIT from 'aheui-jit';

AheuiJIT.callbacks.printChar = msg => { 
    console.log(msg);
};

AheuiJIT.callbacks.printNum = num => { 
    console.log(num.toString());
};

AheuiJIT.config.logIR = true;

AheuiJIT.ready.then(() => {
    return AheuiJIT.run("밤밣따빠밣밟따뿌\n빠맣파빨받밤뚜뭏\n돋밬탕빠맣붏두붇\n볻뫃박발뚷투뭏붖\n뫃도뫃희멓뭏뭏붘\n뫃봌토범더벌뿌뚜\n뽑뽀멓멓더벓뻐뚠\n뽀덩벐멓뻐덕더벅");
}).then(() => {
    console.log("finish");
});

이런식으로 쓰실 수 있습니다.

빌드

C++17을 지원하는 컴파일러와 cmake을 깔고 아래 명령어를 실행하면 됩니다.

git submodul update --init
mkdir build
cd build
cmake ..

웹어셈블리 버전은 cmake .. 대신 emcmake cmake .. 을 사용하시면 됩니다.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].