Máquinas de Pilha - Forth


3 - A linguagem de programação Forth

3.1 - Introdução

Como a maioria das máquinas de pilha tem as suas raízes na linguagem Forth, uma introdução à linguagem impõem-se. Esta linguagem foi inventada por Charles Moore para controlar telescópios em observatórios, usando computadores com poucos recursos. Por causa das suas raízes, a linguagem Forth pretende ser eficiente, compacta, flexível e proporcionar uma eficiente interacção entre software e hardware. É, no entanto, suficientemente poderosa para ser usada numa variedade de tarefas computacionais, incluindo gestão de bases de dados, software de contabilidade, processadores de texto, manipulação de gráficos, sistemas periciais e aplicações científicas.

Algumas das suas vantagens são a facilidade de alteração dos programas, a flexibilidade, rápido ciclo de desenvolvimento das aplicações, elevada portabilidade entre sistemas e obtenção de programas de reduzidas dimensões.

A principal característica dos programas Forth, que os distingue dos programas em outras linguagens, é a elevada frequência de chamadas a subrotinas. As subrotinas são normalmente constituídas por apenas 5 a 10 instruções e aproximadamente 50% das instruções de um programa são chamadas a subrotinas. Este tipo de software é extremamente eficiente em ambientes com capacidade de memória limitada, encorajando o uso de máquinas com chamadas rápidas a subrotinas.

As operações podem ser de 16 ou 32 bits, mas existem dois casos onde estes tipos podem estar misturados: uma multiplicação de dois números de 16 bits, colocando um número de 32 bits na pilha ou uma divisão de um número de 16 bits por um número de 32 bits, produzindo um quociente de 16 bits e um resto de 16 bits. 

3.2 - A máquina virtual Forth

A linguagem assenta em duas características principais: threaded code e instruções com 0 operandos, usando a máquina virtual como modelo de computação. A máquina virtual Forth tem duas pilhas: uma pilha de dados e uma pilha de endereços de retorno. Os programas Forth emulam uma máquina com múltiplas pilhas e 0 operandos a correr no hardware. Estes programas são constituídos por pequenas subrotinas que executam chamadas a outras subrotinas e operações na pilha.

Com estas características o Forth é a linguagem natural para as máquinas de pilha com 0 operandos. Um processador desenvolvido para executar programas em Forth consegue executar programas noutras linguagens de alto nível, porque as primitivas da linguagem Forth estão definidas a baixo nível e correspondem a operações que existem em qualquer máquina de pilha.