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