8 repositorios
A virtual machine architecture that uses virtual registers for instructions instead of a value stack.
Distinct from Register-Pressure Optimizations: Describes the architectural choice of a register-based VM for performance, distinct from CPU register pressure optimization.
Explore 8 awesome GitHub repositories matching programming languages & runtimes · Register-Based Bytecode. Refine with filters or upvote what's useful.
Lua is an embeddable scripting language written in ISO C, designed to be integrated into host applications for runtime customization. It provides a C-based scripting engine and a prototype-based object model that utilizes associative arrays and metatables to implement inheritance and complex data structures. The language features a cooperative multitasking system that manages concurrent execution threads via coroutines and an incremental garbage collector for automatic memory management. It includes a safe code sandbox to isolate global state and run untrusted scripts within a protected envir
Utilizes a set of virtual registers instead of a stack to reduce instruction count and improve execution speed.
Wasm3 es un intérprete de WebAssembly diseñado para la integración en tiempo de ejecución embebido. Permite la ejecución de lógica binaria portátil en microcontroladores y hardware con recursos limitados, proporcionando soporte para módulos que utilizan la WebAssembly System Interface (WASI) para interactuar con los recursos del sistema. El entorno de ejecución emplea interpretación de bytecode basada en registros y despacho de hilos directos para mapear registros virtuales a registros físicos de la CPU. Incluye una interfaz de llamadas al host para mapear importaciones a funciones de C y utiliza validación estática de módulos para garantizar que el bytecode siga las reglas de la especificación antes de la ejecución. El proyecto proporciona gestión de recursos mediante límites de asignación de memoria lineal y medición de gas a nivel de instrucción para evitar bucles infinitos y el agotamiento del sistema. La observabilidad se maneja mediante rastreo de ejecución, monitoreo de flujo y perfilado de operaciones del intérprete. Para el desarrollo y control de calidad, el entorno de ejecución incluye un REPL interactivo y admite fuzzing guiado por cobertura.
Employs a register-based bytecode architecture that maps virtual registers to physical CPU registers for improved performance.
Smali is a two-way binary translation toolset designed to convert Dalvik bytecode to human-readable assembly and back again. It provides a mechanism for the disassembly and assembly of executable files used in virtual machine environments. The project enables the modification of compiled Android application logic by transforming binary files into editable assembly and rebuilding them. It is used for reverse engineering, malware analysis, and the study of low-level instructions to identify program behavior or security flaws. The toolkit covers binary construction through smali code assembly a
Assigns virtual registers to handle local variables and method parameters during bytecode assembly.
seL4 is a formally verified microkernel whose C implementation is backed by machine-checked mathematical proofs of correctness, confidentiality, integrity, and availability. It enforces strict isolation between processes through hardware-enforced address space separation and a capability-based access control system, where each process holds explicit rights only to the resources it has been granted. The kernel exposes hardware resources through a minimal API of system calls that manage threads, address spaces, and inter-process communication, with synchronous IPC supporting sender-identifying b
Registers handlers for IOPort faults and VMCall instructions on IA32 guest VMs.
mruby is a lightweight Ruby interpreter designed to be embedded into C applications. It compiles Ruby source code into a compact, platform-independent bytecode that executes on a register-based virtual machine, and exposes a stable C API for host programs to initialize the interpreter, load bytecode, and invoke Ruby methods at runtime. The interpreter distinguishes itself through a tightly coupled parser and compiler that performs lexical analysis, syntax parsing, and bytecode generation in a single pass without constructing an intermediate AST, minimizing memory overhead. It also includes a
Uses a fixed set of virtual registers instead of a stack to execute bytecode, reducing instruction count and improving speed.
Este proyecto es una guía integral de preparación para entrevistas técnicas y base de conocimientos de ciencias de la computación. Sirve como un recurso de estudio estructurado diseñado para ayudar a los ingenieros de software a repasar conceptos fundamentales de ingeniería y prepararse para evaluaciones profesionales de codificación. El repositorio se centra en una amplia gama de dominios teóricos y prácticos, incluyendo referencias detalladas para arquitectura de aplicaciones móviles y fundamentos de sistemas operativos. Proporciona materiales curados sobre patrones de arquitectura de software y análisis de protocolos de red para apoyar el desarrollo profesional. El contenido cubre capacidades fundamentales como estructuras de datos y algoritmos, concurrencia y multihilo, y gestión de memoria. También incluye profundidad en arquitectura de sistemas, incluyendo planificación de procesos, comunicación entre procesos y optimización de renderizado de UI.
Explores virtual machine architectures that use registers for instructions instead of a value stack.
AsmJit es un generador de código máquina en tiempo de ejecución y backend de compilador JIT que traduce definiciones de alto nivel en instrucciones ejecutables para el procesador. Proporciona una API unificada de emisión de instrucciones y un gestor de memoria ejecutable para asignar y proteger páginas de memoria virtual a través de múltiples arquitecturas de CPU. La biblioteca funciona como un motor de ensamblador para x86 y ARM, soportando la generación de ensamblador multiplataforma a través de un backend unificado. Permite la creación de código máquina optimizado para diferentes CPUs manteniendo un único código base. El proyecto cubre abstracciones de sistema de bajo nivel, incluyendo asignación de registros, convenciones de llamada específicas de la arquitectura e instrumentación binaria dinámica. Gestiona la traducción de representaciones intermedias a código binario utilizando resolución de desplazamiento basada en etiquetas y emisión directa a búfer.
Maps abstract virtual registers to physical hardware registers to optimize resource use and execution speed.
Janet es un lenguaje de programación dinámico basado en Lisp que cuenta con una máquina virtual de bytecode basada en registros y un motor de scripting integrable. Funciona como un runtime de concurrencia basado en fibras e incluye un motor de análisis basado en Gramáticas de Expresión de Análisis (PEG). El proyecto se distingue por su capacidad de integrarse en aplicaciones de C o C++ a través de una interfaz de cabecera mínima. Utiliza un sistema de macros al estilo Lisp para la transformación de código en tiempo de compilación y emplea herencia de tablas basada en prototipos para el comportamiento orientado a objetos. El runtime cubre un amplio conjunto de capacidades, incluyendo la gestión de IO asíncrona a través de un bucle de eventos no bloqueante, interoperabilidad de bibliotecas nativas a través de una interfaz de funciones externas y procesamiento de texto integral utilizando gramáticas PEG. También proporciona herramientas para la automatización del sistema, como un bucle de lectura-evaluación-impresión (REPL), un sistema de módulos para la resolución de símbolos y utilidades para la comunicación de sockets de red y la gestión del sistema de archivos. El entorno incluye herramientas de diagnóstico para la depuración de la ejecución de bytecode y puede empaquetar el código fuente en ejecutables binarios independientes.
Features a register-based bytecode virtual machine to minimize stack operations and improve performance.