Exemplos - Lucas-S-T/LittleLanguage GitHub Wiki
Exemplo 1: Função
Esse código apenas imprime "Hello World" na tela quando executado.
; Exemplo de Hello World em Little Language
.FUN print_stack: ; Declara a função print_stack
.POP hw ; Puxa o conteúdo da Stack e salva em hw
.OUTS hw ; Imprime o conteúdo de hw na tela
.FREE hw ; Limpa a memória de hw
.RET ; Retorna a função print_stack
.ALC sm 11 ; Aloca 11 bytes em sm
.DS sm "Hello World" ; Escreve "Hello World" em sm
.PUSH sm ; Joga o conteúdo na Stack
.FREE sm ; Limpa a memória de sm
.CALL print_stack ; Chama a função print_stack
Exemplo 2: Pulos Condicionais e Relativos
Esse comando escreve "Hello World" na tela quantas vezes for declarado na variável "c".
; Imprime "Hello World" na tela uma determinada quantidade de vezes
.FUN hello_loop_stack:
.ALC hw 11 ; Aloca 11 bytes em hw
.DS hw "Hello World" ; Salva "Hello World" em hw
.POP amount ; Puxa o conteúdo da Stack e joga em amount
.ALI one ; Aloca 4 bytes em one
.LIC one 1 ; Salva inteiro 1 em one
.RJMP 2 ; Faz um pulo relativo de 2 instruções (.PUSH)
.ISUB amount one ; Subtrai 1 de amount -> amount = amount-one
.PUSH amount ; Salva amount na Stack
.CJMP 2 ; Pulo condicional de duas instruções se a Stack for diferente de 0 (.OUTS)
.RJMP 3 ; Pulo relativo de 3 instruções (.FREE)
.OUTS hw ; Escreve na tela o conteúdo de hw ("Hello World")
.RJMP -5 ; Pulo relativo voltando 5 instruções (.ISUB)
.FREE hw ; Limpa a memória de hw
.FREE amount ; Limpa a memória de amount
.FREE one ; Limpa a memória de one
.RET ; Retorna a função
.ALI c ; Aloca 4 bytes em c
.LIC c 5 ; Salva inteiro 5 em c
.PUSH c ; Salva c na Stack
.FREE c ; Libera a memória de c
.CALL hello_loop_stack ; Chama a função hello_loop_stack