# interpreter

Published articles for interpreter.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Generating Java bytecode: Write yourself a compiler, Part V

DevFeed: [Generating Java bytecode: Write yourself a compiler, Part V](<https://devfeed.tech/articles/generating-java-bytecode-write-yourself-a-compiler-part-v-38041.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/09/generating-java-bytecode-write-yourself-a-compiler.html>)

Published: 2026-09-14T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [bytecode](<https://devfeed.tech/tags/bytecode.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [file](<https://devfeed.tech/tags/file.md>), [go](<https://devfeed.tech/tags/go.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [java](<https://devfeed.tech/tags/java.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [virtual-machine](<https://devfeed.tech/tags/virtual-machine.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial explains how to extend a toy-language compiler to emit valid JVM bytecode in a .class file that can run on the Java Virtual Machine. It introduces JVM instruction families for pushing integer values and explains how the constant pool stores constants and symbolic references for reuse.

### Source excerpt

Last time we created a virtual machine for our toy language. I think you can agree that designing a language which barely recognizes expressions like 2 + 3w and building a brand-new virtual machine for it seems a bit tedious. So what about keeping our microscopic language for now, but running it on a real, production-ready, battle-proven virtual machine? Like the Java Virtual Machine? Our task for today is to emit JVM bytecode in the form of a valid .class file. That file can then be fed directly to the JVM to run our program.

## Your First Virtual Machine: Write yourself a compiler, Part IV

DevFeed: [Your First Virtual Machine: Write yourself a compiler, Part IV](<https://devfeed.tech/articles/your-first-virtual-machine-write-yourself-a-compiler-part-iv-38040.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/08/your-first-virtual-machine-write-yourself-a-compiler.html>)

Published: 2026-08-24T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [arithmetic](<https://devfeed.tech/tags/arithmetic.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [feature](<https://devfeed.tech/tags/feature.md>), [go](<https://devfeed.tech/tags/go.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [reverse-polish-notation](<https://devfeed.tech/tags/reverse-polish-notation.md>), [stack](<https://devfeed.tech/tags/stack.md>), [virtual-machine](<https://devfeed.tech/tags/virtual-machine.md>), [vm](<https://devfeed.tech/tags/vm.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial explains how to build a virtual machine that reads and executes a binary intermediate representation. It covers the instruction loop, operand stack, arithmetic operations, postfix notation, and how the resulting executable compares with JVM files and .NET assemblies.

### Source excerpt

In the previous article, we emitted an intermediate representation (IR) for our programming language that is easier to process than source code. However, we did not build a program that could read and execute that IR. Such a program is called a virtual machine. Technically, it's still an interpreter. But instead of interpreting source code, it interprets IR. Our IR is binary, compact, structured, and generally faster to interpret than the original source. Moreover, as you'll see later, the VM's instruction set can express programs that our source language cannot produce yet!

## Compiling to intermediate representation: Write yourself a compiler, Part III

DevFeed: [Compiling to intermediate representation: Write yourself a compiler, Part III](<https://devfeed.tech/articles/compiling-to-intermediate-representation-write-yourself-a-compiler-part-iii-38039.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/08/compiling-to-intermediate-representation-write-yourself-a-compiler.html>)

Published: 2026-08-16T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [virtual machines](<https://devfeed.tech/topics/virtual-machines.md>), [Code](<https://devfeed.tech/topics/code.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [go](<https://devfeed.tech/tags/go.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [ir](<https://devfeed.tech/tags/ir.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [python](<https://devfeed.tech/tags/python.md>), [virtual-machines](<https://devfeed.tech/tags/virtual-machines.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial explains how a small interpreter project evolves into a compiler by emitting intermediate representation (IR). It contrasts interpreted and compiled languages, describes bytecode and virtual machines, and uses Java and WebAssembly examples to show how IR instructions are executed.

### Source excerpt

It's time to dive a bit deeper and abandon the naive realm of interpreters. Our tiny little project can finally call itself a compiler. In this part we'll emit so-called intermediate representation instead of just evaluating and running the source code as-is. OK, what does this all mean?

## Arithmetic interpreter: Write yourself a compiler, Part II

DevFeed: [Arithmetic interpreter: Write yourself a compiler, Part II](<https://devfeed.tech/articles/arithmetic-interpreter-write-yourself-a-compiler-part-ii-38036.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/07/arithmetic-interpreter-write-yourself-a-compiler.html>)

Published: 2026-07-21T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Regular expression](<https://devfeed.tech/topics/regular-expression.md>)

Tags: [arithmetic](<https://devfeed.tech/tags/arithmetic.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [go](<https://devfeed.tech/tags/go.md>), [intermediate](<https://devfeed.tech/tags/intermediate.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [operations](<https://devfeed.tech/tags/operations.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial extends a simple arithmetic interpreter to support addition, subtraction, multiplication, and division. It updates the regular-expression parsing and interpreter logic, with a later installment planned to compile the language into an intermediate representation.

### Source excerpt

In the previous article, we created the most naive interpreter, which can basically execute number + number expressions. A logical extension is obviously to handle all basic operations: addition, subtraction, multiplication and division. The time has come!

## The simplest interpreter: Write yourself a compiler, Part I

DevFeed: [The simplest interpreter: Write yourself a compiler, Part I](<https://devfeed.tech/articles/the-simplest-interpreter-write-yourself-a-compiler-part-i-38038.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/07/simplest-interpreter-write-yourself-a-compiler-part-i.html>)

Published: 2026-07-16T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [go](<https://devfeed.tech/tags/go.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [lexer](<https://devfeed.tech/tags/lexer.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial begins a series on building a compiler by implementing a simple interpreter in Go. The interpreter lexes and evaluates an input expression containing the addition of two numbers, using a regular expression to validate the structure and extract tokens.

### Source excerpt

I've always felt that writing a compiler is the most romantic software engineering task. You're writing a program that reads textual instructions describing precisely what a computer should do. Do not confuse this with prompting an LLM, where you write vague, verbose instructions that only loosely describe what a computer might do. But I digress.

## Introduction to SpiderMonkey exploitation.

DevFeed: [Introduction to SpiderMonkey exploitation.](<https://devfeed.tech/articles/introduction-to-spidermonkey-exploitation-39707.md>)

Original publisher: [Read original article](<https://doar-e.github.io/blog/2018/11/19/introduction-to-spidermonkey-exploitation/>)

Author: Axel "0vercl0k" Souchet

Published: 2018-11-19T16:25:00Z

Content type: article

Language: en

Sources: [Diary of a reverse-engineer](<https://devfeed.tech/sources/diary-of-a-reverse-engineer.md>)

Topics: [Exploit](<https://devfeed.tech/topics/exploit.md>), [spidermonkey](<https://devfeed.tech/topics/spidermonkey.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [JIT](<https://devfeed.tech/topics/jit.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [ctf](<https://devfeed.tech/topics/ctf.md>)

Tags: [blazefox](<https://devfeed.tech/tags/blazefox.md>), [ctf](<https://devfeed.tech/tags/ctf.md>), [exploit](<https://devfeed.tech/tags/exploit.md>), [exploitation](<https://devfeed.tech/tags/exploitation.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jit](<https://devfeed.tech/tags/jit.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [payload](<https://devfeed.tech/tags/payload.md>), [spidermonkey](<https://devfeed.tech/tags/spidermonkey.md>), [ttd](<https://devfeed.tech/tags/ttd.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This blog post explains the development of three exploits targeting the SpiderMonkey JavaScript engine and Mozilla Firefox on 64-bit Windows. It progresses from a WinDbg JavaScript extension and a build-specific interpreter exploit to dynamically resolving targets and using the baseline JIT to generate ROP gadgets or native code payloads.

### Source excerpt

Introduction This blogpost covers the development of three exploits targeting SpiderMonkey JavaScript Shell interpreter and Mozilla Firefox on Windows 10 RS5 64-bit from the perspective of somebody that has never written a browser exploit nor looked closely at any JavaScript engine codebase. As you have probably noticed, there has been ...

## (An ((Even Better) Lisp) Interpreter (in Python))

DevFeed: [(An ((Even Better) Lisp) Interpreter (in Python))](<https://devfeed.tech/articles/an-even-better-lisp-interpreter-in-python-40573.md>)

Original publisher: [Read original article](<http://norvig.com/lispy2.html>)

Published: 2010-10-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Peter Norvig](<https://devfeed.tech/sources/peter-norvig.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>), [scheme](<https://devfeed.tech/topics/scheme.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [python](<https://devfeed.tech/tags/python.md>), [repl](<https://devfeed.tech/tags/repl.md>)

### AI overview

This article presents an improved version of Lispy, a Lisp interpreter implemented in Python. It adds input ports for reading complete expressions across multiple lines, improved error handling, macro examples, and a non-recursive evaluator implemented with a loop and mutable evaluation state.

### Source excerpt

A new version of Lispy (Lisp interpreter in Python). I released an earlier version on Sept. 30th, but this version is improved.

## (How to Write a (Lisp) Interpreter (in Python))

DevFeed: [(How to Write a (Lisp) Interpreter (in Python))](<https://devfeed.tech/articles/how-to-write-a-lisp-interpreter-in-python-40572.md>)

Original publisher: [Read original article](<http://norvig.com/lispy.html>)

Published: 2010-09-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Peter Norvig](<https://devfeed.tech/sources/peter-norvig.md>)

Topics: [Lisp](<https://devfeed.tech/topics/lisp.md>), [Python](<https://devfeed.tech/topics/python.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [scheme](<https://devfeed.tech/topics/scheme.md>), [compilers](<https://devfeed.tech/topics/compilers.md>)

Tags: [compilers](<https://devfeed.tech/tags/compilers.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [python](<https://devfeed.tech/tags/python.md>), [semantics](<https://devfeed.tech/tags/semantics.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This tutorial explains how to implement computer-language interpreters in general and presents Lispy, an interpreter for most of Scheme written in Python 3. It introduces Scheme syntax and semantics and compares its simplicity with Java and Python.

### Source excerpt

A Lisp interpreter in 90 lines of Python

## Ejacs: a JavaScript interpreter for Emacs

DevFeed: [Ejacs: a JavaScript interpreter for Emacs](<https://devfeed.tech/articles/ejacs-a-javascript-interpreter-for-emacs-38766.md>)

Original publisher: [Read original article](<https://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html>)

Author: Steve Yegge (noreply@blogger.com)

Published: 2008-11-17T06:19:00Z

Content type: article

Language: en

Sources: [Steve Yegge](<https://devfeed.tech/sources/steve-yegge.md>)

Topics: [Emacs](<https://devfeed.tech/topics/emacs.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [emacs](<https://devfeed.tech/tags/emacs.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [language](<https://devfeed.tech/tags/language.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>)

### AI overview

A blog article titled "Ejacs: a JavaScript interpreter for Emacs." The supplied excerpt mainly provides personal context and indicates that the author is writing about work done on Ejacs, but the technical details are truncated.

### Source excerpt

So! I have all these cool things I want to write about, but I broke my thumbnail. Can you tell that's a long story? See, this summer I got excited about playing guitar again. I usually switch between all-guitar and all-piano every other year or so. This summer I dusted off the guitars and learned a bunch of pieces, and even composed one. I was prepping for -- among other things -- a multimedia blog entry. It was going to have a YouTube video, and a detailed discussion of a wacky yet powerful music programming language you've probably heard of but never used, and generally just be really cool. And then it all came crashing down when I busted my thumbnail off. And I mean off -- it broke off at least a quarter inch below where the nail and skin meet. Ick. I just accidentally jabbed my steering wheel, and that was that. I remember reading an interview with some dude who said he had punched a shark in the nose. He said it was like punching a steering wheel. So now I know more or less what it's like to punch a shark in the nose, I guess. There's always an upside! Anyway, that was going to be my magnum opus (literally: Op. 1) for the year, but it fell through for now. I'll have to revisit the idea next year. My thumbnail's back, but it's been at least 2 months since I touched my guitar, so I'll have to start over again. Work has been extraordinarily busy, what with having to collect all these Nuka-Cola Quantum bottles and so on. I'm sure you can imagine. So I haven't had much time to blog lately. But I do like to publish at least once a month, whether or not anyone actually cares. It's been about a month, or it feels that way anyway, and all I have to show for it is this box of Blamco Mac and Cheese. So I'm cheating this month. You know how on Halloween how you walk around in your costume holding your little bag and you say "trick or treat", and every once in a while some asshole does a trick instead of dumping half a pound of candy into your bag? And then he has to explain t