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