Live briefing
Everything about Bytecode
Instruction set designed to be run by a software interpreter
Bytecode is an instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: BytecodeA 5-minute orientation
- Skim a recent paper: Enhancing Ethereum smart-contracts static analysis by computing a precise Control-Flow Graph of Ethereum bytecodeInfluential work since 2022
- Pick up a classic book: Building a C-Subset Compiler for the FRISC ArchitectureThe most-reprinted book on the subject
- Read the landmark paper: DefectChecker: Automated Smart Contract Defect Detection by Analyzing EVM BytecodeCited 141 times
- Go sideways: Interpreter (computing)A closely related topic
- Go sideways: Just-in-time compilationA closely related topic
📖 Definitions
Noun P-code (various forms of instruction sets designed for efficient execution by a software interpreter as well as being suitable for further compilation into machine code).
🏆 Landmark papers (most cited)
DefectChecker: Automated Smart Contract Defect Detection by Analyzing EVM Bytecode
Symbolic PathFinder: integrating symbolic execution with model checking for Java bytecode analysis
PicoJava: a direct execution engine for Java bytecode
Hunting Vulnerable Smart Contracts via Graph Embedding Based Bytecode Matching
Cost analysis of object-oriented bytecode programs
A termination analyzer for Java bytecode based on path-length
Java Bytecode Verification: Algorithms and Formalizations
Android malware detection method based on bytecode image
🆕 Influential since 2022
Enhancing Ethereum smart-contracts static analysis by computing a precise Control-Flow Graph of Ethereum bytecode
VulHunter: Hunting Vulnerable Smart Contracts at EVM Bytecode-Level via Multiple Instance Learning
Android malware detection based on a novel mixed bytecode image combined with attention mechanism
DexBERT: Effective, Task-Agnostic and Fine-Grained Representation Learning of Android Bytecode
Coverage-Based Debloating for Java Bytecode
📚 Books worth reading
Building a C-Subset Compiler for the FRISC ArchitectureKarlo Knežević · 2026
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Interpreter (computing) In computing, an interpreter is software that executes source code without first compiling it to machine code. An interpreted runtime environment differs…
- Just-in-time compilation Just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is compilation of computer code during execution of a program at run…
- HHVM HipHop Virtual Machine (HHVM) is an open-source virtual machine based on just-in-time (JIT) compilation that serves as an execution engine for the Hack…
- Java virtual machine A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages, referred…
- JVM bytecode JVM bytecode is the instruction set architecture (ISA) of the Java virtual machine (JVM), the language to which Java and other JVM-compatible source code…
- Tracing just-in-time compilation Tracing just-in-time compilation is a technique used by virtual machines to optimize the execution of a program at runtime. This is done by recording a…
- Ahead-of-time compilation In computer science, ahead-of-time compilation (AOT compilation) is the act of compiling an (often) higher-level programming language into an (often) lower-leve…
- Dalvik (software) Dalvik is a discontinued process virtual machine (VM) in the Android operating system that executes applications written for Android. Dalvik was an integral…