Kompilator do bytecodu

0

Witam
Znacie jakiś kompilator języka C lub C++ do bytecodu (najlepiej do jak najprostszego)?
Pozdrawiam

0

Clang na LLVM powinien kodem pośrednim się posługiwać chyba, obadaj go.

0

Tylko nie wiem jak go zmusić do wygenerowania bytecodu. Jedynie udało mi się wygenerować coś w rodzaju assemblera.

0

MSVC++ potrafi kompilować do bytekodu CLI (czyli .Net Framework). Nie wiem na ile jest on „najprostszy” bo nigdy się w to nie zagłębiałem. Ale znając wynalazki Microsoftu, zapewne jest wręcz odwrotnie ;-)

0

Gdzie mogę znaleźć opis tego bytecodu?

To kod LLVM, na stronie developerskiej tego projektu. To świetna rzecz na BSD, mocno wspierana przez Apple, z bardzo dobrym i czytelnym kodem (w porównaniu do tego śmiesznego GCC).

Co do MSILu to taki tragiczny nie jest chociaż mało się nim bawiłem. Maszyna stosowa, dosyć dobrze zaprojektowana, ale pewne rzeczy są dosyć złożone, poza tym C/C++ używające typowego runtime'u C/C++ niezbyt się tutaj 'prezentuje' - mieszkanka (wywołań) kodu zarządzanego z natywnym, odpada chyba.

0

@Azarien - CIL jest IMO dużo czytelniejszy od kodu maszynowego. (tak, to poniżej to jest bajtkod)

.assembly HelloWorld
.class auto ansi HelloWorldApp
{
     .method public hidebysig static void Main() cil managed
     {
          .entrypoint
          .maxstack 1
          ldstr "Hello world."
          call void [mscorlib]System.Console::WriteLine(string)
          ret
     }
}

I jest wystarczająco dużo narzędzi ułatwiających pracę z nim.

0

Może tępy jestem, ale znalazłem tylko to:
http://llvm.org/docs/BitCodeFormat.html - tu mamy opis formatu (przyda się, ale mało informacji)
http://llvm.org/docs/LangRef.html - opis języka, ale o bitkodzie nic

PS. Dużo pracy będzie kosztowało napisanie bardzo while(1){printf("bardzo");} bardzo prostego interpretera tego bitcodu?

0
MSM napisał(a)

@Azarien - CIL jest IMO dużo czytelniejszy od kodu maszynowego. (tak, to poniżej to jest bajtkod)

To jest efekt dezasemblacji bytekodu... Od asma x86 wcale czytelniejszy nie jest, może na poziomie hello-world. Jednak ma regularną strukturę, nie to co opkody x86. Weź pod uwagę, że to maszyna stosowa, dosyć skomplikowana. Teraz zagadka - jaka jest najbardziej znienawidzona część operacji w IA-32? Instrukcje stosowe koprocesora x87, zgadnij dlaczego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1