Owner: Sorry squire, I’ve had a look ‘round the back of the shop, and uh, we’re right out of parrots.
Customer: I see. I see, I get the picture.
Owner: <pause> I got a slug.
Parrot assembly (PASM) is an assembly language written for Parrot’s virtual CPU. PASM has an interesting mix of features. Because it’s an assembly language, it has many low-level features, such as flow control based on branches and jumps, and direct manipulation of values on the software registers and stacks. Basic register operations or branches are generally a single CPU instruction. On the other hand, because it’s designed to implement dynamic high-level languages, it has support for many advanced features, such as lexical and global variables, objects, garbage collection, continuations, coroutines, and much more.
The first step before you start playing with PASM code is to get a copy of the source code and compile it. There is some information on this in Section 188.8.131.52. For more information and updates, see http://www.parrotcode.org and the documentation in the distributed code.
The basic steps are:
$ perl Configure.pl $ make $ make test
With versions of Parrot later than 0.0.10, you can speed up the testing process significantly by compiling IMCC first (see Section 7.1) and running the tests with IMCC instead of the Parrot assembler:
$ make test IMCC=languages/imcc/imcc
Once you’ve compiled Parrot, create ...