asmjit
dynarmic
Our great sponsors
asmjit | dynarmic | |
---|---|---|
9 | 6 | |
3,801 | 967 | |
1.7% | - | |
8.2 | 8.8 | |
26 days ago | about 2 months ago | |
C++ | C++ | |
zlib License | BSD Zero Clause License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
asmjit
-
The 6502 instruction set as a database
Some other instruction sets in some JSON: https://github.com/asmjit/asmjit/tree/master/db
-
30 years of DOOM: new code, new bugs
The attentive reader may notice that this code is from a third-party library. So, we didn't want to include it in the article at first. However, we found something interesting. In 2017, somebody opened an issue in the asmjit project: the GCC 7.2 compiler issued a warning to the code above. The project authors fixed it:
-
How do I get the registers of a process in C++?
You can use something like https://asmjit.com/ to generate and call x64 code at runtime.
- Ask HN: Recommendation for general purpose JIT compiler
-
Compiler Design in C++
But an easy to create a JIT would be to use https://github.com/asmjit/asmjit, which is used in RPCS3.
-
Are there any low level, cross platform assembly languages that allow jumping to non labels?
You could go the way of https://asmjit.com (or forth) and make it your assembler DSL on top of the low-level call.
-
C++ libraries for filtering collections and expression trees
But if you're willing to get closer to the hardware is https://github.com/bitfunnel/nativejit/ and https://asmjit.com/
- AsmJit
-
Wrapping dynamically generated void(*)() pointers in try-catch?
https://github.com/asmjit/asmjit is nice. But using a JIT seems like a sledgehammer working around a lacking design.
dynarmic
- Dynarmic – An ARM dynamic recompiler (AArch32/64 to x86-64/AArch64)
-
RyujinX – Open Source Nintendo Switch Emulator
They're probably referring to dynarmic: https://github.com/merryhime/dynarmic
-
[News] TouchHLE: high-level emulator for iPhone OS apps released
As an HLE, touchHLE is radically different from a low-level emulator (LLE) like QEMU. The only code the emulated CPU executes is the app binary and a handful of libraries; touchHLE takes the place of iPhone OS and provides its own implementations of the system frameworks (Foundation, UIKit, OpenGL ES, OpenAL, etc).
-
Latest news from Emulation regarding Mac
https://github.com/merryhime/dynarmic/pull/697 - Dynarmic implementing Arm backend support. Dynarmic is a dynamic recompiler for ARM.
-
Ryujinx - Progress Report July 2021
I did some work on Dynarmic, so there's my bias I guess. But I def believe Dynarmic would emit better context-aware assembly than a CIL->Native jitteror the JVM would emit. Dynarmic takes advantage of instruction sets like BMI2 and AVX{2,512} and uses a pretty darn concise intermediate representation to the original ARM assembly to emit efficient x86 while a C# JIT probably still only emits baseline x86-64 and struggles with efficient vectorization of things like Arm's NEON instructions. Can't even imagine a C# or Java VM trying to automatically emit optimal assembly for an FMADD including handling NaN propagation or detecting that FMINNM can be very quickly emulated with a single vrangep{s,d} x86 instruction.
-
What are the implications of AVX-512 for emulation?
For emulators, it's currently used in dynarmic(Yuzu's ARM-to-x86 recompiler backend) for the fast emulation of ARM's NEON instruction set.
What are some alternatives?
fasmg - flat assembler g - adaptable assembly engine
Ryujinx - Experimental Nintendo Switch Emulator written in C#
mir - A lightweight JIT compiler based on MIR (Medium Internal Representation) and C11 JIT compiler and interpreter based on MIR
libmorton - C++ header-only library with methods to efficiently encode/decode Morton codes in/from 2D/3D coordinates
oneDNN - oneAPI Deep Neural Network Library (oneDNN)
vvctre - A Nintendo 3DS emulator with Lua scripting for Windows 7+ and Linux (the default script is vvctre folder/script.lua)
mlibc - Portable C standard library
rpcs3 - PS3 emulator/debugger
Cwerg - The best C-like language that can be implemented in 10kLOC.
ClassicUO - ClassicUO - an open source implementation of the Ultima Online Classic Client.
ChrysaLisp - Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...
fujihack - Reverse engineering Fujifilm firmware