Вопросы для компиляции в LLVM

У вас неправильный формат для определения function

, который вам нужен { после создания функции для области

function myFunction(){
   // your code
}

function myFunction(){
            var text_input=document.getElementById("input001").value;
            if (text_input=="4"){                                           document.getElementById("message001").innerText="Correct!"
                        
            }
            else{
                document.getElementById("message001").innerText="nope"
                }
            }
<!--first question-->
            <div class=questions>
                <p>What is 9-5?</p>
            </div>
    
            <input id="input001" type="text" />
            <button onclick="myFunction()">Check</button>
            <p id="message001"></p>

10
задан sharptooth 9 April 2009 в 06:54
поделиться

4 ответа

Проблема заключается в C ++, а не в LLVM.

Используйте язык, разработанный для метапрограммирования, например OCaml , и ваш компилятор будет значительно меньше. Например, эта статья в OCaml Journal описывает 87-строчный компилятор Brainfuck на основе LLVM ,

17
ответ дан 3 December 2019 в 19:35
поделиться

Разве LLVM не оптимизирует IR в зависимости от конкретной архитектуры, реализованной в серверной части? ИК-код напрямую не переводится 1: 1 в окончательный двоичный файл. Насколько я понимаю, вот как это работает. Тем не менее, я только начал играть с бэкэндом (я портирую его на пользовательский процессор).

1
ответ дан 3 December 2019 в 19:35
поделиться

LLVM требует некоторого стандартного кода, но как только вы его поймете, это действительно довольно просто. Попробуйте найти простой интерфейс GCC, и вы поймете, насколько чист LLVM. Я определенно рекомендовал бы LLVM по C или ASM. ASM вообще не переносим, ​​и генерация исходного кода обычно плохая вещь, потому что это замедляет компиляцию.

1
ответ дан 3 December 2019 в 19:35
поделиться

Промежуточные представления могут быть немного более подробными по сравнению с невиртуальным ассемблером. Я узнал об этом, глядя на .NET IL, хотя никогда не заходил дальше поисков. Я не очень знаком с LLVM, но думаю, это та же проблема.

Хотя, если задуматься, это имеет смысл. Одно большое отличие состоит в том, что НП имеют дело с большим количеством метаданных. В ассемблере очень мало - процессор неявно определяет многое, а соглашения для таких вещей, как вызовы функций, оставляются на усмотрение программиста / компилятора. Это удобно, но создает большие проблемы с переносимостью и взаимодействием.

Промежуточные представления, такие как. NET и LLVM заботятся о том, чтобы отдельно скомпилированные компоненты могли работать вместе - даже компоненты, написанные на разных языках и скомпилированные разными интерфейсами компилятора. Это означает, что метаданные необходимы для описания того, что происходит на более высоком уровне, чем, например, произвольные нажатия, всплывающие сообщения и нагрузки, которые могут быть обработкой параметров, но могут быть чем угодно. Выплата довольно большая, но есть цена.

Есть и другие проблемы. Промежуточное представление на самом деле не предназначено для написания людьми, но предназначено для чтения. Кроме того, он должен быть достаточно общим, чтобы выжить в нескольких версиях без полной несовместимой с нуля редизайна.

По сути, в этом контексте явное почти всегда лучше, чем неявное, поэтому многословия трудно избежать.

Это означает, что метаданные необходимы для описания того, что происходит на более высоком уровне, чем, например, произвольные нажатия, всплывающие окна и загрузки, которые могут быть обработкой параметров, но могут быть чем угодно. Выплата довольно большая, но есть цена.

Есть и другие проблемы. Промежуточное представление на самом деле не предназначено для написания людьми, но предназначено для чтения. Кроме того, он должен быть достаточно общим, чтобы выжить в ряде версий без полной несовместимой с нуля редизайна.

По сути, в этом контексте явное почти всегда лучше, чем неявное, поэтому многословия трудно избежать.

Это означает, что метаданные необходимы для описания того, что происходит на более высоком уровне, чем, например, произвольные нажатия, всплывающие сообщения и нагрузки, которые могут быть обработкой параметров, но могут быть чем угодно. Выплата довольно большая, но есть цена.

Есть и другие проблемы. Промежуточное представление на самом деле не предназначено для написания людьми, но предназначено для чтения. Кроме того, он должен быть достаточно общим, чтобы выжить в нескольких версиях без полной несовместимой с нуля редизайна.

По сути, в этом контексте явное почти всегда лучше, чем неявное, поэтому многословия трудно избежать.

цена, которую нужно заплатить.

Есть и другие проблемы. Промежуточное представление на самом деле не предназначено для написания людьми, но предназначено для чтения. Кроме того, он должен быть достаточно общим, чтобы выжить в нескольких версиях без полной несовместимой с нуля редизайна.

По сути, в этом контексте явное почти всегда лучше, чем неявное, поэтому многословия трудно избежать.

цена, которую нужно заплатить.

Есть и другие проблемы. Промежуточное представление на самом деле не предназначено для написания людьми, но предназначено для чтения. Кроме того, он должен быть достаточно общим, чтобы выжить в ряде версий без полной несовместимой с нуля редизайна.

По сути, в этом контексте явное почти всегда лучше, чем неявное, поэтому многословия трудно избежать.

1
ответ дан 3 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: