В привязках Haskell LLVM я пытаюсь определить функцию с переменным числом аргументов (на самом деле я имею в виду постоянное число, которое неизвестно при компиляции время). Я нашел этот вопрос и пытаюсь следить за ответом.
Я не хочу полностью отказываться от использования FFI для генерации LLVM, я хочу использовать DSL как можно чаще и использовать FFI только для того, что я не могу делать через DSL.
Мне удалось определить тип с помощью functionType, я все еще не могу добавить функцию в модуль, созданный с помощью вызова defineModule
. Я также думаю, что следующим шагом будет добавление базовых блоков к функции через FFI.appendBasicBlock
, что, на мой взгляд, несложно, но как мне получить аргументы через FFI.getParam
внутри блока do в монаде CodeGenFunction
.