Wpis z mikrobloga

Czy ktoś kiedyś słyszał o komilatorze dla C/C++ do jakiegoś uniwerstalnego bytecodu, który następnie mógłbybyć konwertowany do arm/x86 itd? Wydaje mi się, że to dość proste (technicznie) do zrobienia, ale nie mogę nic gotowego znaleźć.

#programowanie #c #cpp #c++
  • 7
LLVM od początku to potrafił, na tym polega fenomen LLVM, dzięki któremu tak łatwo w nim zaimplementować kolejne języki programowania. Używanie tego w praktyce jednak nie jest takie łatwe. Może zacznij od zdefiniowania tego, co chcesz osiągnąć.
@Razi91: chcę połączyć możliwości projektów opensource (przekompilowanie z różnymi parametrami) bez udostępniania kodu. Czyli np. taki deb z apką, która kompiluje się w trakcie instalacji na odpowiednie środowisko/architekturę.
@lionbest: @Razi91: Wydaje mi się, że to coś o co mi właśnie chodziło. Wiecie może czy przechowuje sobie części warunkowe kompilacji, które są wykonywane w pre? Jak np. #ifdef XXX tak aby dało się zmienić działanie programu zmieniając parametr przy konwersji LLVM IF -> kod maszynowy
@dad1111: Oczywiście że nie przechowuje, tego nawet drzewo AST po parsowaniu nie przechowuje.
Generalnie LLVM wogóle nie posiada w sobie nawet wyrażeń stałych tylko same wartości, które oczywiście dalej mogą być optymalizowane poprzez filtry w LLVMce.
Jedyne rozwiązanie które widzę to podmiana globalnej zmiennej na wartość stałą i uruchomienie optymalizacji na zmodyfikowanym kodzie jeszcze raz.
Bilioteka LLVMki ma wszystko co potrzebujesz, parser i writer kodu IR, framework do filtrów i translatorów.