Pull to refresh

Comments 12

Здорово! Прям как веб-сервер с питанием от картошки.
Cделайте еще backend для llvm :)
Кстати, была идея транслировать уже существующий ассемблер или llvm-биткод, но решил, что не осилю.
Не, это не то. Там просто компилируют брейнфак в биткод. А я хотел наоборот, т. е. биткод в брейнфак.
А ведь трансляцию из этого Ассемблера в Brainfuck-инструкции можно еще и оптимизирующей сделать...)
Конечно можно (например, убирать лишние обнуления ячеек и т. п.), но на это у меня уже энтузиазма не хватает(
Такой ассемблер сам по себе достаточно высокоуровневый язык по сравнению с Brainfuck :-)
Можно ещё чуть-чуть доработать до ассемблера LCC и получить компилятор из C в Brainfuck абсолютно бесплатно.
Под ассемблером LCC понимается промежуточное представление кода, если да, то в каком виде он хранится, если в текстовом, то можно примерчик?
Да, это текстовое представление. Например, программа:
int add(int a, int b) {
    return a + b;
}
int main() {
    int sum;
    sum = add(1, 2);
    return sum;
}

компилируется в:
Скрытый текст
export add
code
proc add 0 0
ADDRFP4 0
INDIRI4
ADDRFP4 4
INDIRI4
ADDI4
RETI4
LABELV $1
endproc add 0 0
export main
proc main 8 8
CNSTI4 1
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 4
ADDRGP4 add
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
RETI4
LABELV $2
endproc main 8 8

По структуре байткода есть хорошая книжка: Building a C-based processor
Неплохая книжка.
В принципе, можно попробовать.
Sign up to leave a comment.

Articles