# Etap kodowania - Rubinius
Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.
Author: Less Than Three. <3. http://less.thanthree.com

1.2.3

## Etap kodowania

Po tym jak generator wygenerował bajtkod, musi odpowiednio go zakodować. Ten etap jest bardzo prosty i służy głównie ewidencjonowaniu.

Etap kodowania jest odpowiedzialny za dwie rzeczy:

- zamianę strumienia instrukcji utworzonego w poprzednim etapie (gdy węzły AST wywoływały `bytecode) na sekwencję instrukcji.
- sprawdzenie czy stos nie przepełnia się lub w jakikolwiek inny sposób znajduje się w niewłaściwym stanie.

Etap ten wykonywany jest na głównym obiekcie `Generatora` jak również na pomniejszych obiektach `Generatora` (tworzonych dla bloków, metod oraz innych struktur sterujących).

Po wykonaniu powyższego, obiekt `Generatora` przekazywany jest do następnego etapu czyli pakowania.

## Pliki

- lib/compiler/generator.rb: Metoda `encode` w tym pliku wykonuje większą część czynności wymienionych w tym etapie.

## Dostosowanie pakowania

Ponieważ ten etap jest bardzo prosty, nie jest konieczne jego dostosowanie. Może wystąpić konieczność zmiany jego działania (np. w celu profilowania lub wyświetlania na ekranie). Aby dowiedzieć się więcej o dostosowywaniu poszczególnych etapów kompilacji do swoich potrzeb przeczytaj Modyfikacja procesu kompilacji.