MIPS Assembly parser

MIPS architecture is used in many embedded systems today, including gaming consoles, routers, and other devices. It is a RISC architecture, which makes decoding of the instructions easier, and the number of basic instructions is not that big (in contrast with CISC architecture, used e.g. in x86). This makes MIPS a good learning architecture, and that’s why it’s often used in universities in compiler class for code generation. And as a part of course for implementing a virtual machine for a subset of MIPS instructions, I have built the parser for its assembly.

Read more »

x86: More code – less code

Sometimes more code in a source language, can mean less code in a generated language.

Read more »

Notes. ECMAScript: Unresolved references

Recently an old playing ES5 bug was raised on Twitter, and as the poll shown, sometimes results can be very fun :)

Let’s talk about References.

Read more »

OO Relationships

In this small note we recap concepts of objects relationships in Object-Oriented programming.

Recently Allen Wirfs-Brock raised an interesting topic for distinguishing and abstracting a concept of “an open set of objects that share a common interface and implementation”.

Read more »

x86: Generated code optimizations and tricks

I’ve been playing with generated (native) code in order to test how compilers (specific or in general) translate a = a + 1 and a++, and found some other interesting optimizations.

Read more »

Заметки ES6: значения параметров по умолчанию

Read this article in English, Chinese.

В этой небольшой заметке мы затронем еще одну тему ES6 — параметры функций со значениями по умолчанию. Как мы увидим, там есть некоторые тонкости.

Read more »

ES6 Notes: Default values of parameters

Read this article in Chinese, Russian.

In this small note we’ll cover another ES6 feature, function parameters with default values. As we will see there are some subtle cases there.

Read more »

Pattern Matching

In this article we briefly describe the generic topic of pattern matching in programming languages. We’ll see that this powerful technique is present in our every day programming, even if we may not notice it.

Read more »

Essentials of interpretation. Checkpoint: part 1

This article describes in some details our interpreter which we have created during the course Essentials of interpretation. We summarize intermediate results and the main parts of the evaluator making notes which were omitted in the code articles.

Read more »

Essentials of interpretation. Intro.

“Essentials of interpretation” is a new series which consists of small lessons on interpretation of computer programs. The lessons are implemented in JavaScript and contain detailed comments. The sources can be found on the appropriate GitHub repository.

Available lessons:


Read more »