La máquina virtual de Perl 5 actual es una máquina de pila. Comunica valores entre operaciones manteniéndolos en una pila. Las operaciones cargan valores en la pila, hacen lo que sea necesario y devuelven el resultado a la pila. Es fácil trabajar con esto, pero es lento.
Para sumar dos números, debe realizar tres empujes de pila y dos estallidos de pila. Peor aún, la pila tiene que crecer en tiempo de ejecución, y eso significa asignar memoria justo cuando no quieres asignarla.
Así que Parrot va a romper la tradición establecida de las máquinas virtuales y utilizará una arquitectura de registro, más parecida a la arquitectura de una CPU de hardware real. Esto tiene otra ventaja. ¡Podemos usar toda la literatura existente sobre cómo escribir compiladores y optimizadores para CPU basadas en registros para nuestra CPU de software!
Parrot tiene registros especializados para cada tipo: 32 registros IV, 32 registros NV, 32 registros de cadena y 32 registros PMC. En el ensamblador Parrot, estos se denominan I1 ... I32, N1 ... N32, S1 ... S32, P1 ... P32 respectivamente.
Ahora veamos algún ensamblador. Podemos configurar estos registros con el operador set:
set I1, 10
set N1, 3.1415
set S1, "Hello, Parrot"
Todas las operaciones de Parrot tienen el mismo formato: el nombre del operador, el registro de destino y luego los operandos.