A programming language environment that includes an object compiler and
associated object execution engine. The object compiler parses and
converts source code into object-oriented, compiled code that is platform
independent and that can be executed by the object execution engine at
speeds close to that of a true compiled binary executable. The compiler
parses the statements of source code and converts each statement into one
or more pre-defined, persistent instruction objects. Then, it orders the
instruction objects, generating a sequence of instruction objects that are
stored as a platform-independent file. The instruction objects each have a
virtual initialize method, a virtual execute method, and an index
indicative of the next instruction object in the sequence. Data used in
the statements can be represented as persistent data objects and the
instruction objects and data objects can be stored in separate stacks
(i.e., as linked lists), with their indices indicating their position
within the stack. The memory address of each instruction object and data
object is allocated dynamically at run time, with the initialize method
being used to convert each index to a pointer that identifies the memory
address of the next object in the stack. The execute method executes at
least one machine language instruction and returns a pointer to the next
instruction object. Thus, the object execution engine executes the
sequence of instruction objects by calling the execute method of each
instruction object and using the returned pointer to access the next
instruction object.
Um ambiente da língua de programação que inclua um compilador do objeto e um motor associado da execução do objeto. O compilador do objeto analisa gramaticalmente e converte o código de fonte no código object-oriented, compilado que são plataforma independente e que pode ser executado pelo motor da execução do objeto em velocidades perto daquele de um executável binário compilado verdadeiro. O compilador analisa gramaticalmente as indicações do código de fonte e converte cada indicação em uma ou mais predefinida, objetos persistentes da instrução. Então, requisita os objetos da instrução, gerando uma seqüência dos objetos da instrução que são armazenados como uma lima plataforma-independente. A instrução objeta cada uma manda um virtual inicializar o método, um virtual executa o método, e um índice indicativo do objeto seguinte da instrução na seqüência. Os dados usados nas indicações podem ser representados enquanto os objetos persistentes dos dados e os objetos da instrução e os objetos dos dados podem ser armazenados em pilhas separadas (isto é, como listas ligadas), com seus índices que indicam sua posição dentro da pilha. O endereço de memória de cada objeto da instrução e de objeto dos dados é alocado dinâmicamente no tempo funcionado, com o método inicializar que está sendo usado converter cada índice a um ponteiro que identifique o endereço de memória do objeto seguinte na pilha. O método executar executa ao menos uma instrução da língua de máquina e retorna um ponteiro ao objeto seguinte da instrução. Assim, o motor da execução do objeto executa a seqüência de objetos da instrução chamando o método executar de cada objeto da instrução e usando o ponteiro retornado alcançar o objeto seguinte da instrução.