Next: Data Model Up: Byte-codes Previous: Byte-codes Contents

# Compilation

In computer science compilation means transforming one language into another. The first reason to introduce compilers in computer science was expressiveness: people implement the solution to a problem in a computer language in which they are able to express themselves without difficulty. Then this solution was compiled into a language that is understandable for a computer: a machine language.

The same reasoning can be applied to (neuronal) modeling: you express the model with something you feel comfortable with (e.g. the modeling elements of Genesis). Then to simulate the model, it must be compiled into a language that is understandable for a machine and efficient to solve numerical calculations. This language is the byte-code that `hsolve` deals with. To put it in other words, the byte-codes are tailored to encode the numerical calculations required to solve the equations that occur in a neuronal model. The compilation step consists of two phases: in the first phase an intermediary representation is built and optimized for structure. In the second phase the optimized intermediary representation is used to generate the actual byte-codes. The generated byte-codes are again optimized such that e.g. redundant computations are removed (see figure 6.1).

After a successful `SETUP` and `RESET`, `hsolve` has examined the full model and has stored all the byte-codes necessary to compute the behavior of the model. But besides the byte-codes that encode the model, `hsolve` also stores the results of the calculations and descriptive values necessary to do the calculations. For technical reasons `hsolve` stores the operators (the byte-codes) separately from the operands (the results of the calculations and descriptive values).

Subsections

- Data Model

Next: Data Model Up: Byte-codes Previous: Byte-codes Contents