Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4

Почему с++ может работать с разными процессорами а на Ассемблере приходится писать код под разные

19.08.2020, 10:42. Показов 6608. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я смотрел библиотеки с++ видел тоже что код заточен под разные процессоры. Хотелось бы получить больше информации по этому поводу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2020, 10:42
Ответы с готовыми решениями:

почему может не работать код ?
Label10->Font->Style <<fsUnderline <<fsBold ; ошибок никаких не выдает...

Почему писать на ассемблере опасно?
Говорят пишут вирусы,и можно испортить CMOS,или это мифы?

Вход под разными интерфейсами c# (на разные формы)
Добрый день! Нужно, чтобы при вводе определенного логина и пароля переходило на определенную форму, заранее спасибо!

42
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
19.08.2020, 10:45
Цитата Сообщение от Nexi99 Посмотреть сообщение
Почему с++ может работать с разными процессорами
Это как это? С++ вообще не может работать ни с какими процессорами. С++ - язык высокого уровня. На свете нет ни одного процессора, который умеет выполнять программы, написанные на С++.

Чтобы выполнить программу на С++ ее сначала нужно перевести на машинный язык конкретного процессора, т.е. фактически "на ассемблер".
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 10:47  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Это как это? С++ вообще не может работать ни с какими процессорами. С++ - язык высокого уровня. Чтобы выполнить программу на С++ ее сначала нужно перевести на машинный язык конкретного процессора, т.е. фактически "на ассемблер".
Значит получается что есть подпрограммы, которые написаны под разные процессоры на машинных языках а с++ выводит на эти подпрограммы которые компилируют код под нужный процессор или на все сразу чтобы программа была переносимой?
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
19.08.2020, 11:03
Ты уже не первый раз интересуешься довольно низкоуровневыми вещами. Ты правильно выбрал инструмент для работы/изучения? Может стоит поинтересоваться архитектурой компьютера, операционными системами, принципом работы компиляторов? Я думаю, что интересующие тебя вопросы лежат вне плоскости C++, а на каждую из вышеупомянутых тем есть прекрасные книги.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 11:20  [ТС]
Цитата Сообщение от Nishen Посмотреть сообщение
Ты уже не первый раз интересуешься довольно низкоуровневыми вещами. Ты правильно выбрал инструмент для работы/изучения? Может стоит поинтересоваться архитектурой компьютера, операционными системами, принципом работы компиляторов? Я думаю, что интересующие тебя вопросы лежат вне плоскости C++, а на каждую из вышеупомянутых тем есть прекрасные книги.
Ну интересуюсь конечно. Компилируемые языки очень интересно взаимодействую с железом и в этом стоит разобраться. Каждый программист прежде чем использовать программу попытается поинтересоваться её исходниками. Я очень сильно интересуюсь тематикой памяти поэтому и задаю такие вопросы.
0
19.08.2020, 13:27

Не по теме:

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

0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 14:23  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
видимо, я не программист. )))
Пишите по теме. Если знаете как это работает и можете об этом сообщить давайте ссылки на статьи блоги литературу.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
19.08.2020, 15:04
Компилятор C++ генерирует машинный код под конкретный процессор. Соответственно есть куча разных С++ компиляторов для разных процессоров. Еще и формат исполняемых файлов может отличаться в зависимости от ОС, этим тоже компилятор занимается, но это уже другая история...
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 15:18  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Компилятор C++ генерирует машинный код под конкретный процессор. Соответственно есть куча разных С++ компиляторов для разных процессоров. Еще и формат исполняемых файлов может отличаться в зависимости от ОС, этим тоже компилятор занимается, но это уже другая история
Ну я выше об этом и упоминал https://www.cyberforum.ru/post14788714.html что программа компилируется для всех процессоров, получается что в IDE вшита такая инструкция, да и в принципе процессоров не так уж и много даже некоторые регистры AMD и Intel сходятся. Компилятор собирает все инструкции, скорее всего если для каждого процессора будет придумано что-то новое то в следующей IDE это будет учтено чтобы код получался мощным, но честно говоря что-то мало в эти процессоры добавляют что-то хорошее(смотрел я видео как их производят) значит получается что с++ тоже статический как и Ассемблер. В принципе можно написать программу которая будет читать процессор и дописывать нужные инструкции но это очень сложная задача.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
19.08.2020, 15:40
Nexi99, не для "всех процессоров", а для "архитектуры процессоров". Например, и AMD, и Intel в основной линейке делают процессоры архитектуры x64, потому могут работать с одними и теми же программами без необходимости перекомпиляции. А вот программный код от ARM-процессоров тут не заработает, даже если поставить ту же самую операционную систему.

Когда программа на лету переводится из одних команд в другие - такое тоже встречается, например, во всяких эмуляторах.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 18:00  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
не для "всех процессоров", а для "архитектуры процессоров". Например, и AMD, и Intel в основной линейке делают процессоры архитектуры x64, потому могут работать с одними и теми же программами без необходимости перекомпиляции.
Ну да. Я видел что некоторые команды на Ассемблере совпадают. Мне в голову приходила идея что с++ может использовать универсальные программы написанные на Ассемблере или других машинных языках, чтобы не переводить код разных процессоров или архитектур. Но возникает вопрос, процессоры всё же разные: могут содержать 8 регистров могут 6ть, даже однотипные процессоры могут отличаться по свойствам не говоря уже об AMD и Intel (которые тоже могут как отличаться так и не отличаться), как же тогда писать код на Ассемблере под отдельный процессор или использовать универсальные команды?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
19.08.2020, 19:23
Цитата Сообщение от Nexi99 Посмотреть сообщение
или использовать универсальные команды?
Таковых не существует. Можно написать исходный код на С++, и потом скомпилировать из него 100500 программ под разные архитектуры разными компиляторами. И тогда можно будет запустить на любой архитектуре (естественно только тот экземпляр, который к этой архитектуре подходит). Но, если компиляторы удовлетворяют выбранному стандарту С++ и исходный код программы написан в соответствии с этим стандартом, то результат выполнения программы будет идентичен для любого из её экземпляров (будет выводить одно и то же, посчитает одно и то же число, и т.д.)
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 20:22  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
Таковых не существует.
Почему взять к примеру команду mov присвоить она же одинаково звучит на обоих процессорах AMD и Intel, другой разговор что внутри они реализовываются по разному, потому что имя может быть одинаковым а выполняться задачи могут как угодно.
Получается что в с++ вшиты все процессоры/архитектуры известные на момент создания IDE, ведь если бы компилятор не знал бы о разных архитектурах как бы он скомпилировал код или передал на машинный язык?
0
Эксперт .NET
 Аватар для Rius
13114 / 7675 / 1674
Регистрация: 25.05.2015
Сообщений: 23,409
Записей в блоге: 14
19.08.2020, 20:29
Цитата Сообщение от Nexi99 Посмотреть сообщение
Получается что в с++ вшиты
Не в C++.
Код один, почти.
А конкретным компилятором компилируется под конкретный процессор (архитектуру).
Цитата Сообщение от Nexi99 Посмотреть сообщение
ведь если бы компилятор не знал бы о разных архитектурах
Компиляторы делаются под конкретные архитектуры и знают только их.
Если нужно скомпилировать тот же код под другую архитектуру, берётся другой компилятор.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 20:44  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
А конкретным компилятором компилируется под конкретный процессор (архитектуру).
Но на Ассемблере так не сделаешь, да и насколько я понял да и проверял сам лично на Ассемлере код пишется под 32ку, но я не знаю под какие процессоры он подходил, под мой подходил. В Visual Studio есть возможность писать на Ассемблере мне показали как, возможно универсальный получиться.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
19.08.2020, 20:45
Цитата Сообщение от Nexi99 Посмотреть сообщение
Но на Ассемблере так не сделаешь
Да ладно? Ассемблер тоже разный бывает как и его компиляторы...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
19.08.2020, 20:50
Цитата Сообщение от Nexi99 Посмотреть сообщение
В Visual Studio есть возможность писать на Ассемблере мне показали как, возможно универсальный получиться.
Не получится универсальный. Ассемблер уникален (в общем случае) для каждого процессора/архитектуры. Какие-то команды могут совпадать по имени, но не более того.
0
Эксперт .NET
 Аватар для Rius
13114 / 7675 / 1674
Регистрация: 25.05.2015
Сообщений: 23,409
Записей в блоге: 14
19.08.2020, 20:52
Цитата Сообщение от Nexi99 Посмотреть сообщение
Но на Ассемблере так не сделаешь
И что? Разве кто-то обещал, что ассемблер универсален?
Компилятором можно получить C++ код, переведённый в ассемблер той архитектуры, на которую рассчитан компилятор.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
19.08.2020, 20:52
Цитата Сообщение от Someone007 Посмотреть сообщение
Ассемблер тоже разный бывает как и его компиляторы...
Си иногда называют высокоуровневым ассемблером
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,835
Записей в блоге: 4
19.08.2020, 21:29  [ТС]
Я смотрю нормально никто не знает как это работает. Так я и не понял как приспосабливается код под разные архитектуры, то ли на с++ все процессоры есть, то ли моя теория верна что используются универсальные команды то ли что-то другое, про 32 и 64 говорить нет смысла а вот про AMD и Intel хотелось бы понять почему все блогеры говорят что нужно искать свой процессор под Ассемблер если выясняется что скомпилировать код можно под что угодно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2020, 21:29
Помогаю со студенческими работами здесь

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

Почему данный код игнорирует 1-ый символ и приходится первую букву дублировать?
Здравствуйте, подскажите пожалуйста почему данный код игнорирует 1-ый символ и приходится первую букву дублировать ? #include...

Как может сервер-сайд код работать или не работать на конкретном компе?
Всем привет! Вот такая проблема. Есть сайт, все работает ок, но - один из компов имеющий Win98 и IE6.0 and service pack 1 работает очень...

Что почитать что бы писать на ассемблере под arm?
Подскажите книги где учат программировать ARM только на ассемблере!

Может ли компьютер сам писать код и проверять его?
Всем привет! Такая мысль возникла, а что, если бы компьютер сам писал код, а программист бы лишь руководил процессом...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru