Что такое внешний интерфейс для компилятора GCC?

769
yoyo_fun

Из того, что я знаю, интерфейс - это графический интерфейс для программы или для веб-сайта, у которого есть веб-приложение в «конце».

Я смущен тем, что для GCC (GNU C Compiler) существует много внешних интерфейсов, но кажется, что в этом контексте существуют различные определения термина "внешний интерфейс".

0

1 ответ на вопрос

1
David Schwartz

Внешний интерфейс GCC превращает код в промежуточную внутреннюю форму, используемую GCC. Серверная часть GCC превращает эту промежуточную внутреннюю форму в окончательную форму, которую выводит компилятор.

Так, например, если у вас есть внешний интерфейс C ++ и внешний интерфейс Java, вы можете принять ввод в C ++ и Java. Если у вас есть серверная часть x86 и серверная часть MIPS, вы можете создавать исполняемые файлы для процессоров x86 и MIPS.

Если вы хотите добавить поддержку Go в GCC, вы должны написать интерфейс Go для GCC. Затем вы можете скомпилировать код Go для каждой платформы, поддерживаемой GCC.

Если вы хотите добавить поддержку GCC для нового процессора, вы бы написали новый сервер для этого процессора. Затем вы можете создать код для этого процессора, используя все языки, которые поддерживает GCC.

но я думал, что Java компилируется в байт-код, который является переносимым и интерпретируется yoyo_fun 7 лет назад 0
Оно делает. Таким образом, Java является как внешним интерфейсом (исходный код должен быть превращен во внутренний формат), так и внутренним (внутренний формат должен быть превращен в исполняемый вывод). David Schwartz 7 лет назад 0
Я, хотя Java Xode никогда не превращается в исполняемый файл, но в код, который интерпретируется виртуальной машиной Java yoyo_fun 7 лет назад 0
@yoyo_fun Это просто вопрос определений. IMO, если вам не нужно разбирать его и запускать, и он не читается человеком, это исполняемый файл. David Schwartz 7 лет назад 0
но можно ли запускать исполняемые файлы Java, созданные gcc, без установки виртуальной машины Java? yoyo_fun 7 лет назад 0
@yoyo_fun Это зависит от того, как вы определяете «исполняемый файл Java». Теоретически, GCC мог бы использовать свой внешний интерфейс Java и свой внутренний сервер x86 и создать исполняемый файл, который будет работать непосредственно на x86. Но вам все равно нужно как-то предоставлять услуги, предоставляемые JVM, как управление памятью. David Schwartz 7 лет назад 0
Я предполагаю, что для Java в GCC в этом случае есть только Front-end. Я сомневаюсь, что GCC интерпретирует Java байт-код. yoyo_fun 7 лет назад 0

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