앵무새-레지스터
현재 Perl 5 가상 머신은 스택 머신입니다. 스택에 유지하여 작업간에 값을 전달합니다. 작업은 값을 스택에로드하고 필요한 작업을 수행 한 다음 결과를 스택에 다시 넣습니다. 이것은 작업하기 쉽지만 느립니다.
두 숫자를 더하려면 세 번의 스택 푸시와 두 번의 스택 팝을 수행해야합니다. 더 나쁜 것은 스택이 런타임에 증가해야한다는 것입니다. 즉, 할당하고 싶지 않을 때만 메모리를 할당해야합니다.
따라서 Parrot은 가상 머신의 기존 전통을 깨고 실제 하드웨어 CPU의 아키텍처와 더 유사한 레지스터 아키텍처를 사용할 것입니다. 이것은 또 다른 장점이 있습니다. 소프트웨어 CPU 용 레지스터 기반 CPU 용 컴파일러 및 최적화 프로그램을 작성하는 방법에 대한 기존의 모든 문헌을 사용할 수 있습니다!
Parrot에는 32 개의 IV 레지스터, 32 개의 NV 레지스터, 32 개의 문자열 레지스터 및 32 개의 PMC 레지스터 등 각 유형에 대한 전문 레지스터가 있습니다. Parrot 어셈블러에서는 각각 I1 ... I32, N1 ... N32, S1 ... S32, P1 ... P32로 이름이 지정됩니다.
이제 어셈블러를 살펴 보겠습니다. set 연산자로 이러한 레지스터를 설정할 수 있습니다.
set I1, 10
set N1, 3.1415
set S1, "Hello, Parrot"
모든 Parrot 작업은 연산자 이름, 대상 레지스터 및 피연산자의 형식이 동일합니다.