Задать вопрос
@Deka007

Почему не создают компьютеры с машинным языком на C/C++?

Почему нельзя разработать компьютер, у которого машинным языком был бы C или C++? А если можно то почему этого никто не делает? Неужели вопрос в деньгах...
  • Вопрос задан
  • 1077 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Можно конечно, но это не выгодно, исполнять машинные команды, представленные обычно несколькими байтами намного проще, чем C++.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
15432
@15432
Системный программист ^_^
Процессор это тупая железяка из транзисторов. Ну ладно, не настолько тупая, в современных x86 процессорах машинные коды на лету транслируются в еще более низкий уровень встроенным микрокодом. Но все все равно предположим, что это тупая железяка типа Intel 8086. Как происходит выполнение программы - процессор считывает очередной байт кода и смотрит, что же он такое считал. По значению байта, он определяет, что это за команда (сложение, вычитание) и сколько ещё нужно считать байт конкретно этого машинного слова (а они в x86 могут быть разной длины). Все это происходит на уровне железа, то есть нечто вроде "пятый бит 0, третий бит 1, ага! Это команда сложения двух восьмибитных регистров, надо переключить линию данных на арифметико-логическое устройство и считать туда еще два байта на шину данных. То есть операции очень и очень простые, на уровне бит, сигналов и чтения данных, никакого анализа кода и уж тем более никаких имен переменных. Вы же предлагаете на аппаратном уровне парсить сишный код, в котором при последовательном чтении иногда невозможно определить, что делать в данный момент!! А процессор в это время будет простаивать и считывать из памяти кучу ненужного текста.
Я вообще не представляю, как на уровне железа и транзисторов можно сделать синтаксический и лексический анализ сишного файла. Разве что сделать настоящий электронный мозг с миллиардом нейронов. Это уж точно не будет быстро, это вообще работать не будет. Изучите устройство компьютера, как именно работает процессор, научитесь думать на языке ассемблера, и поймёте всю абсурдность вашего предложения.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Ну ок, а зачем? Хотите говорить с машиной на её родном языке? Так если C осилили, то и с ассемблером разберетесь. Хотите выиграть в производительности? Упретесь в то, что процессор скобочки в исходниках считает, вместо того чтоб задачами заниматься. Хотите избежать шага компиляции? Опять же, зачем? Я вот щас по-говнокодерски скажу, но сейчас мощности компов позволяют быстро написать код на питоне и потратить свободное время на более полезные и приятные для себя и для человечества вещи, нежели байтики высчитывать. Так же и с компиляцией, нажал F5 и пошел чаю налить или просто размяться.

Плюс эта задача потребует создания какой-то совершенно новой архитектуры, ни на что не похожей и ни с чем не совместимой, и всё ради каких-то иллюзорных выгод.
Ответ написан
ZiggiPop
@ZiggiPop
Linux Admin / Frontend Developer
Хм, почему не делают? Есть мнение весьма уважаемых людей, что C (тот что без плюсов) — обернутый в человекопонятную форму машкод )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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