|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.08.2014, 16:31 | #1 |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
Вопрос про интерпретаторы и компиляторы
Добрый день.
Хочу задать вопрос, возможно не самый заумный, но важный для понимания. Точнее несколько. 1) У меня стоит mingw32, он компилирует в абсолютный код или в ассемблер? 2) Я правильно понял, интерпретатор не транслирует исходный код в абсолютный или в ассемблерный(имеется ввиду исполняемый модуль в результате), он попросту берет исходный код и сразу же его выполняет? 3) А компилятор в обязательном порядке выдает транслированный код, готовый для исполнения в любой момент? Вопросы немного абстрактные, тем не менее хотелось бы получить ответы/уточнения. Заранее спасибо. |
20.08.2014, 17:04 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1)ассемблер есть представление команд процессора.
а бинарник содержит их. итого, по умолчанию компилятор выдает нам бинарный файл(ексешник например) целевой платформы. но вроде как можно заставить его выдать нам асм листинг, а не бинарник. 2)да. 3)зависит от параметров, можно скомпилировать библиотеку, которая не предназначена для выполнения.(её подключают в другое приложение, которое уже выполняет её функции). PS:да и что такое абсолютный код? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.08.2014, 18:00 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Пепел Феникса, не вводите человека в заблуждение.
1. Ассемблер, - это мнемоническое представление машинных команд + спецификации самого Ассемблера. Ассемблер, это двухпроходный транслятор мнемоники в исполняемый код. 1-й проход - выполяется проверка на ошибки, формирование машинных команд без адресов и формирование стека меток. 2-й проход - производится присвоение командам физических адресов меток. 2. Да. 3. Не в обязательном. Можно из исходного кода получить объектный, а потом из объектного - мнемонические команды компилируемой программы. По большому счёту, компиляторы это многопроходные трансляторы. 1. Проверка синтаксиса и типизации. 2. Линковка - формируются связи между модулями. 3. Оптимизация - из модулей убирается всё лишнее. оставляется только нужное. Есть два вида оптимизации а) по быстродействию б) по размеру кода 4. Компоновка - модули располагаются в объектном файле наиболее оптимальным образом. 5. Из объектного файла, формируется непосредственно исполняемый код тот, что мы называем экзешниками.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 20.08.2014 в 18:10. |
20.08.2014, 20:10 | #4 |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
Исчерпывающие ответы, все ясно и понятно.
Спасибо всем участникам Но есть еще вопрос, как понять по какому принципу производится 3й проход в моем компиляторе? Или это все можно узнать в документации к компилятору, если да, то где найти документацию к компилятору c++ из под mingw32. Также интересует, у всех-ли компиляторов 5 проходов? И как обстоит дело с интерпретаторами в этом плане. P.s. Особая благодарность пользователю Smitt&Wesson за подробное описание. Последний раз редактировалось DakotaZ; 20.08.2014 в 20:20. |
20.08.2014, 20:27 | #5 | |||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
Цитата:
https://gcc.gnu.org/onlinedocs/gcc/O...e-Options.html http://gcc.gnu.org/onlinedocs/gcc-4....on-Levels.html Цитата:
Цитата:
|
|||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как парсят скрипт интерпретаторы? | Alex Defsen | Общие вопросы Delphi | 2 | 10.01.2011 20:50 |
Интерпретаторы UNIX | docbrain | Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) | 3 | 22.08.2010 20:20 |
Вопрос про Свойство Visible и про иконки в imagelist | Kappi4 | Компоненты Delphi | 2 | 21.05.2010 13:10 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |
У меня вопрос про базы данных,а точнее про таблицы!!! | Alexij | Общие вопросы Delphi | 1 | 13.04.2008 23:24 |