Skip to content

bambuchaAdm/Lirk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LIRK - Lisp in AVR assebler Kernel

LIRK w przeciwieństwie do nazyw, nie jest implementacją lispa na AVR. W sumie w tam małym środowisku ciężko pchnąć takie wielkie jakim jest (Common) Lisp.

Lirk w zamnierzeniu miał być ćwieczeniem z Lispa. A jednak stał się czymś większym. Połączenie przyjemnego z porzytecznym (gdyż C na pojedynczych bitach jest niewygodne) LIRK ma za zadanie wypełnić słabe strony assemblera (wołanie procedur, czy logika)

Znane błędy

Brak binarki

Na obecną chwilę nie ma skryptu który biorąc na wejście nazwę pliku tworzyłby z niej plik hex. Jest to kolejny ważny punkt na drodze rozwoju Lirka.

Wołanie funkcji

Obecnie funkcje są tworzone z palca. Piszący musi mieć pełną świadomość co i jak pisze.

Cel: LIRK zajmuje się alokacją i zarządzaniem przestrzenią programu. Jednak to człowiek docelowo decuduje jak funkcja ma być wykonana (inline czy rjump).

Opratory

Wkykorzystanie predykatów do tworzenia odpowiednich konstrukcji logicznych oraz innych.

Obecny cel (if (zerop R2) (sbi PORTA 1) (rcall czekaj) (cbi PORTA 1))

było zamienione na cpi R2 0 brne 4 sbi PORTA 1 rcall czekaj cbi PORTA 1

Źródła

Przykłady z folderu avr&arm7 pochodzą z książki autorstwa Pawła Borkowskiego “AVR&ARM7 Programowanie mikrokontrolerów dla każdego” [Helion 2010]

TODOs

Wyczyścić projekt z duplikacji oraz drobne jego uporządkowanie.

Dotyczy przeniesienia właściwego kodu z ./examples do ./src

Naprawić generowanie include na postawie generowanego systemu.

Możeliwe że każdy mikrokontroler będzie wymagał osobnego systemu w ASDF Dzięki czemu będzie możliwe ich dynamiczne dobieranie i ładowanie przez implemnetacje

Dodanie binarki tworzącej pliki .hex