Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
36 / 31 / 12
Регистрация: 31.05.2012
Сообщений: 586
1

Нужны пояснения насчет компиляторов для разных ОС

18.09.2015, 15:09. Просмотров 808. Ответов 11
Метки нет (Все метки)

Всем привет ребят! Есть несколько вопросов:
1) Существуют различные компиляторы (к примеру на с++), эти компиляторы предназначены для определенной операционной системы!??? А есть ли кросплатформенные компиляторы?? Если есть, то в чем именно разница между теми компиляторами, которые приспособлены для определенной оси или тем кто кросплатформенные (должно быть в возможностях и скорости)!??
2) В первом вопросе я думаю что нет кроссплатформенных компиляторов, так как любой компилятор должен связываться с ядром операционной системы через соответствующий апи операционки!??? Можно сказать что язык с++ кросплатформенный на уровне компилятора, типа для каждой оси свой компилятор!!??

2) Ребят, сами компиляторы на чем пишут?? На каком языке!??? Говорят что обычно компилятор преобразует в язык ассемблера, а потом уже асемблируется в машинку, а говорят что такие компиляторы как ogg к примеру не использует ассемблер и сразу переводит в машинку!!!


Объясните пожалуйста всё по пунктам, буду очень рад!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2015, 15:09
Ответы с готовыми решениями:

Нужны пояснения
Читаю "С++ руководство для начинающих" Герберта Шилдта. Дочитал до "передача аргументов командной...

Нужны некоторые пояснения
При выполнении программы есть область 20 на 20. 1) Почему при движении вправо или влево, после...

Conversion by constructor , нужны пояснения
Здравствуйте. Смотрю я, что пишут об этом Conversion by constructor, вижу одно: Вот, думаю,...

Нужны пояснения по вложенным классам
задался вот таким вопросом, почему не получается объявить вложенный класс следующим образом?...

11
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
18.09.2015, 15:15 2
компилятор из какого либо языка создает ассемблерный код(это и есть машинный код)
разница если только в том что эти исполняемые файлы имеют разные форматы для разных операционок
Цитата Сообщение от Левиафам Посмотреть сообщение
В первом вопросе я думаю что нет кроссплатформенных компиляторов, так как любой компилятор должен связываться с ядром операционной системы через соответствующий апи операционки!???
сомневаюсь, создается исполняемый модуль который содержит набор asm инструкций он может использовать "методы" ядра, а может и нет, зависимость, если только в том, что в операционках есть ограниченный набор ф-ций
причем набор asm инструкций зависит от того для кого процессора(платформы) создается этот асемблерный код
0
Грамотный. Безпорно.
16860 / 9755 / 1880
Регистрация: 27.09.2012
Сообщений: 24,164
Записей в блоге: 2
18.09.2015, 15:52 3
Цитата Сообщение от Левиафам Посмотреть сообщение
Существуют различные компиляторы (к примеру на с++), эти компиляторы предназначены для определенной операционной системы!?
компиляторы могут быть портированы под разные ОС. Считаются ли они кроссплатформенными?
Цитата Сообщение от Левиафам Посмотреть сообщение
Можно сказать что язык с++ кросплатформенный на уровне компилятора, типа для каждой оси свой компилятор!!??
C++ кроссплатформеный язык на уровне исходного кода, но не более, так что для каждой платформы нужно компилировать отдельно, но это же считается кроссплатформенным приложением, а значит
Цитата Сообщение от Левиафам Посмотреть сообщение
В первом вопросе я думаю что нет кроссплатформенных компиляторов
если компилятор портирован под множество платформ, то он кроссплатформенный. Или нет? Вот проблема...

Цитата Сообщение от Левиафам Посмотреть сообщение
Ребят, сами компиляторы на чем пишут?
открываем исходники, например gcc, и смотрим
0
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
18.09.2015, 15:55 4
Цитата Сообщение от Croessmah Посмотреть сообщение
Ребят, сами компиляторы на чем пишут?
мне вот было интересно, что сейчас то понятно компиляют на чем пишут, а вот когда еще не было 1го компилятора? его написали на чистом asm? а потом постепенно расширяли:?
0
Грамотный. Безпорно.
16860 / 9755 / 1880
Регистрация: 27.09.2012
Сообщений: 24,164
Записей в блоге: 2
18.09.2015, 15:58 5
Цитата Сообщение от aLarman Посмотреть сообщение
его написали на чистом asm?
ну так сначала нужно было написать компиль с asm'а
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
18.09.2015, 15:58 6
Сначала программы составляли в кодах и напрямую вводили в память, потом ассемблер, потом остальное.
0
13529 / 7183 / 1722
Регистрация: 30.01.2014
Сообщений: 12,014
18.09.2015, 16:07 7
Цитата Сообщение от aLarman Посмотреть сообщение
а вот когда еще не было 1го компилятора?
Кстати тут стоит помнить, что ассемблер - это тоже своего рода компилятор. И первый ассемблер тоже кто-то когда-то написал на машинных кодах.
Процессор же понимает только машинные коды. А язык ассемблера - это все же представление для человека.
Но вообще да, например язык С сперва был написан на ассемблере, а потом переписан сам на себе.
Кстати ни один из современных компиляторов не генерирует в промежутке ассемблерный код. Сразу создается машинный код из внутреннего представления программы. Можно попросить компилятор сделать ассемблерный листинг, но это будет дополнительный этап в его работе.
0
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
18.09.2015, 16:13 8
DrOffset, а разве ассемблер не есть машинные инструкции?

Добавлено через 1 минуту
не ну как бы понятно что проц все равно только битобайты понимает
0
Грамотный. Безпорно.
16860 / 9755 / 1880
Регистрация: 27.09.2012
Сообщений: 24,164
Записей в блоге: 2
18.09.2015, 16:14 9
Цитата Сообщение от aLarman Посмотреть сообщение
а разве ассемблер не есть машинные инструкции?
нет. Это мнемоники, более удобные для человека, нежели машинные коды. Но ведь их под железо тоже нужно писать
0
13529 / 7183 / 1722
Регистрация: 30.01.2014
Сообщений: 12,014
18.09.2015, 16:15 10
Цитата Сообщение от aLarman Посмотреть сообщение
а разве ассемблер не есть машинные инструкции?
Ассемблер - это мнемоники. Эти мнемоники - суть подсказки для человека. А мнемонике соответствует некий код. Так вот ассемблер, это такая программа, которая транслирует текст мнемоники в коды.
0
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
18.09.2015, 16:17 11
Цитата Сообщение от DrOffset Посмотреть сообщение
А мнемонике соответствует некий код. Так вот ассемблер, это такая программа, которая транслирует текст мнемоники в коды.
все все понял, так то да логично что для проца asm инструкция есть просто набор бит
0
36 / 31 / 12
Регистрация: 31.05.2012
Сообщений: 586
18.09.2015, 18:49  [ТС] 12
Раз компилятор портируем для различных ОС, то интересно как он адаптируется под разную ось, ведь компилятор так и так будет работать с ядром оси с помощью апи!??? Он должен будет превратить в код ассемблера, в ктором ассемблер вроде как должен будет задействовать подпрограммы оси, потому и нужно будет взаимодействавать с ядром....а ядро у всех разное.
Возможно бредовое представление, жду критики друзья!!!




Если современные компиляторы уже не превращают код в ассемблеровский вид, то как они поступают? Мне кажется так или иначе механизм будет такой же, это словно как прыгнуть с 10 этажа на землю, или по ступенькам спускаться!

Добавлено через 4 минуты
Кто-то сказал что "разве ассемблер не машинный код"....... ассемблер это обычный низкоуровневый язык программирования, у которого компилятор сразу переводит в машинный код. Причем ассемблер тем самым может на прямую взаимодействовать с железом (и плевал бы он на ось).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2015, 18:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Реализация связанного списка - нужны пояснения
#include <iostream> using namespace std; class cool { public: int number;...

Синглтон Мейерса, нужны некоторые пояснения
class Singleton{ public: static Singleton& init() { static Singleton Object; ...

Java EE против Spring: нужны пояснения для новичка
Здравствуйте, я недавно начал изучать JAVA WEB технологии, уже успел вкратце изучить Servlet,...

Почему нужны разные компиляторы для разных ОС, а не для разных процессоров?
Смотрю CS50 и там проходят C и говорится, что для для каждой ОС нужен свой компилятор, который для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.