Die aktuelle Perl 5 virtuelle Maschine ist ein Stack-Maschine. Es Werten zwischen Operationen kommunizieren, indem man sie auf einen Stapel. Operationen laden Werte auf den Stack, tun, was sie tun müssen und das Ergebnis wieder auf den Stapel müssen. Dies ist einfach zu handhaben, aber es langsam ist..
Um zwei Zahlen zu addieren zusammen, müssen Sie zu führen drei Stapel schiebt und zwei Stapel Pops durch . Schlimmer noch, hat der Stapel bei Laufzeit zu wachsen, und das bedeutet, dass das Zuweisen von Speicher eben, wenn Sie nicht wollen, werden es die Zuteilung es.
So Parrot wird den Tradition für virtuelle Maschinen zu brechen, und verwendung einem Register-Architektur,mehr an die Architektur eines echten Hardware-CPU. Dies hat einen weiteren Vorteil. Wir können verwendung alle die vorhandene Literatur, auf wie Compiler und Optimierer für registerbasierte CPUs für unsere Software-CPU schreiben !
Parrot verfügt über besondere Register für jeden Typ: 32 IV Register, 32 NV Register, 32-String-Register und 32 PMC Register. In Parrot Assembler, diese werden Namen I1 ... I32, N1 ... N32, S1 ... S32 P1 ... P32 beziehungsweise..
Nun Lassen Sie uns schauen zu einige bestimmten Assembler. Wir können set diese Register mit der Gruppenoperator ein:
set I1, 10 set N1, 3.1415 set S1, "Hello, Parrot"
Alle Parrot ops haben das gleiche Format: den Namen der Betreiber, die Zielregister und dann die Operanden.