> Упомянутые вами уважаемые авторы обсуждают _общие_ принципы построения компиляторов, но ничего не говорят о том, нафига прикручивать сишный франтэнд к виртуальной машине.Про сишный франтэнд и виртуальную машину они и в самом деле ничего не говорят, тут Вы правы, крыть нечем. :-)
Но они вполне четко говорят, что выгоднее компилить языковые конструкции (безотносительно конкретного я зыка -- Си, Паскаль, калькулятор выражений, etc.) не сразу в машинный машинный код, а сначала в промежуточное представление, коих и предлагают несколько вариантов, одно из них, как раз, "трехадресный код". С их слов, так проще оптимизировать (а кто я такой, чтоб сомневаться в их словах?). А уже после оптимизации генерить машинный код, на основе этого промежуточного варианта. LLVM имеет средства для генерации машинного кода (для x86 и не только) на основе своих инструкций, следовательно, вполне логично прикрутить к нему сишный (и не только) франтэнд. По мне, так LLVM идеально вписывается в концепцию разработки компиляторов, описанную уважаемыми авторами, ИМХО.