gsomix
С эмулятором, вот это все.
gsomix
На F#!
gsomix
С
Да, в C не нужен. Делай сразу в асм.
Nikolay
У SNES 16 битный проц
Nikolay
А у меня восьми!
Nikolay
Правда у него частота 3.58 МГц, а у меня 4 МГц
gsomix
Все, блин, я опять залип и смотрю демки.
Nikolay
Nikolay
Нет
Nikolay
Как он F# код компилирует в ASM?
Nikolay
Или юзает какой-то IL to ASM
gsomix
Он генерирует ASM программой на F#.
Nikolay
Ааа, вот как
gsomix
Зачем F#-то в ASM компилировать? :)
Nikolay
Нужно подумать
Vladislav
Nikolay
Так появился gc.cpp
Vladislav
Nikolay
Блин, не понимаю
Hog
Nikolay
Допустим, я хочу сделать такое, я пилю функцию:
let writePin pin value = sprintf "%s = %i;" pin value
...
writePin Pin.RB0 true
Nikolay
Так что-ли?
Nikolay
Образно
Romɑn
Romɑn
Или я не о том совсем?
Nikolay
Ну можно и так
gsomix
Nikolay
Если выходная программа будет типа компилятора, которая в консоль выводит скомпилированый
gsomix
Но да, в простейшем виде так.
Nikolay
Ну честно сказать, хрен знает
Romɑn
Romɑn
И потом по ast понимать что куда и где?
gsomix
Ну да, можно сабсет F# с помощью квотирования транслировать еще.
Romɑn
Nikolay
Лоооол
Nikolay
Нашёл OCaml
Nikolay
Для pic контроллера
Nikolay
Hog
while true -> tail rec
Nikolay
Мигание светодиодом это
Hog
или драгоценные байтики потеряются?
Nikolay
А тут хз как он скомпилит
Nikolay
Вообще можно проверить, но мне лень)
Hog
Nikolay
Ну смотрю код, выглядит страшно
Nikolay
Мб проще написать компилятор F# to C?
gsomix
Делай в ASM сразу.
Nikolay
Я асм поверхностно знаю
Nikolay
Сложно
Éminence grise
Сборщик мусора. LLVM можно попробовать
Nikolay
Блин
Сборщик
Мусора
Nikolay
Нужно как-то без него
Éminence grise
У LLVM есть реализации сборки мусора. Но вроде как биндинги к дотнет не совсем актуальны.
Nikolay
Какой сборщик мусора может быть на мк
Éminence grise
Бери раст. Он похож на фшарп.
gsomix
gsomix
Ну да, можно сабсет F# с помощью квотирования транслировать еще.
Nikolay
Ну как вариант
Éminence grise
А как с памятью работать? У нас вся схема на автоматическом управлении.
Nikolay
Типы, функции, и всё такое
Nikolay
Без стандартной библиотеки
Éminence grise
И без модели памяти.. Я не знаю, какой минимальный субсет пролезет. Ну очень теоритечески можно попробовать сделать что то типа RefCell с каунтингом ссылок с крмпиляцией в аутобоксинг. Но боюсь, это вопрос не снимет.
Nikolay
Я чёт не вижу проблем
Nikolay
Замыкания мб сложно будет реализовать
Nikolay
Хотя вроде тоже не особо
Éminence grise
Замыкания - не проблема. А вот циклические референсы + многопоточность + множественные ссылки.
Nikolay
Многопоточности не будет
Éminence grise
Элементарный лист сложно. Односвязный.
Nikolay
Ну это сложно разве что из-за того, что размер задаётся динамически
gsomix
Зачем лист? У нас массивы есть. :)
Éminence grise
Нет. Из за того что люая часть хвоста может использоваться где то еще и непонятно когда освобождать память.
Nikolay
Ну да, массивы фиксированной длины
Nikolay
Короче, проще свой язык сделать :D
Nikolay
На идеях F#
Éminence grise
Я уже писал, охота что то типа очень мощной проверки на этапе компиляции и отсутсвие расходов, возьми раст. У него как раз эмбеддед последнее время очень неплохо развивается.