Memória - Lucas-S-T/LittleLanguage GitHub Wiki
Memória
Nesse tópico você poderá entender melhor o funcionamento da Memória em LittleLanguage.
Alocação de memória
Sempre que uma instrução de alocação de memória for chamada, um novo objeto Memória
será criado dentro da Máquina Virtual. Uma memória alocada nada mais é que um vetor de bytes. Não há definição de tipo primitivo em uma memória alocada, é de sua responsabilidade executar as operações corretas.
Quando alocada, a memória poderá conter qualquer valor em seu conteúdo, conhecido também como lixo de memória, você pode fazer um loop para limpá-la ou definir a flag "Clean Allocation" em sua Máquina Virtual, veja mais na seção VM Flags
.
Operações Lógicas/Aritméticas
Existem diferentes instruções para diferentes tipos primitivos(Int, Long, Char etc), essas instruções irão considerar o objeto primitivo como os primeiros bytes do vetor de conteúdo da memória para efetuar sua operação.
Exemplo:
Considere o código abaixo:
.ALC a 5 ; Aloca 5 bytes em a
.LIC a 8 ; Salva a constante int(4 bytes) 8 em a
No final da execução desse código, nosso vetor de conteúdo da memória a
será esse:
0x00 00 00 08 00
Inicialmente foi alocado 5 bytes, em seguida, a função Load Int Const
foi chamada, a Máquina Virtual interpretou essa memória como um inteiro de 4 bytes, sendo assim, apenas os primeiros 4 bytes do vetor de conteúdo foram utilizados nessa operação.
Tenha em mente que os bytes não necessáriamente estarão nessa ordem, isso ira depender da Endianness de seu computador. Cuidado ao manipular os bytes de forma "crua" utilize sempre as instruções recomendadas.