OSDev
http://osdev.ru/

Место Си и ассемблера в разработке ОС
http://osdev.ru/viewtopic.php?f=30&t=1089
Страница 1 из 1

Автор:  Himik [ 12 май 2015, 19:57 ]
Заголовок сообщения:  Место Си и ассемблера в разработке ОС

Тема выделена из "Лаборатории Единой среды". Начало обсуждения: раз и два. Freeman.

Yoda писал(а):
Himik писал(а):
К сожалению С/С++ культовым скорее всего не станет, потому что он занимает промежуточную позицию между низко в высокоуровневыми ЯП.

"С" был культовым языком на протяжении длительного времени. Другое дело, что он совершенно устарел. "С++" тоже был, но не долго. Проблема С++ в том, что он не смог преодолеть недостатков С.

Мне кажется, что надо обратить внимание, что Си постепенно занимает позицию низкоуровневого программирования, вытесняя Ассемблер.
И ОС, и драйвера к ним, всё чаще пишутся на Си. С костылём в виде ассемблерных вставок, но всё же. При этом в компиляторы добавляют всё больше и больше встроенных (или пристроенных?) ассемблерных функций, так что и ассемблерные вставки скоро будут не нужны.

Автор:  Freeman [ 12 май 2015, 23:06 ]
Заголовок сообщения:  Re: Место Си и ассемблера в разработке ОС

Himik писал(а):
И ОС, и драйвера к ним, всё чаще пишутся на Си. С костылём в виде ассемблерных вставок, но всё же. При этом в компиляторы добавляют всё больше и больше встроенных (или пристроенных?) ассемблерных функций, так что и ассемблерные вставки скоро будут не нужны.

Мне кажется, что имеет место встречное движение, конвергенция. Ассемблер-то сейчас уже не тот, что был лет 10 назад. Понадобавляли разных инструкций в процессоры и сопроцессоры, компиляторам тоже пришлось подтягиваться. На размер всем давно плевать.

Автор:  rst256 [ 01 окт 2015, 00:55 ]
Заголовок сообщения:  Re: Место Си и ассемблера в разработке ОС

Himik писал(а):
Тема выделена из "Лаборатории Единой среды". Начало обсуждения: раз и два. Freeman.

Yoda писал(а):
Himik писал(а):
К сожалению С/С++ культовым скорее всего не станет, потому что он занимает промежуточную позицию между низко в высокоуровневыми ЯП.

"С" был культовым языком на протяжении длительного времени. Другое дело, что он совершенно устарел. "С++" тоже был, но не долго. Проблема С++ в том, что он не смог преодолеть недостатков С.

Мне кажется, что надо обратить внимание, что Си постепенно занимает позицию низкоуровневого программирования, вытесняя Ассемблер.
И ОС, и драйвера к ним, всё чаще пишутся на Си. С костылём в виде ассемблерных вставок, но всё же. При этом в компиляторы добавляют всё больше и больше встроенных (или пристроенных?) ассемблерных функций, так что и ассемблерные вставки скоро будут не нужны.


"При этом в компиляторы добавляют всё больше и больше встроенных (или пристроенных?) ассемблерных функций" - хоть одну назови? Просвети уж дурака, если не трудно.

Ага ассемблер не нужен, ведь процессоры скоро исходный код на си кушать надо полагать начнут.
Ведь ассемблер === машинный код (именно ===), на чем же тогда, боюсь спросить,
для нового железа будет написан ПЕРВЫЙ компилятор языка си?
Варианта только два на ассемблере или сразу в двоичном коде (кто не знает это когда открываем справочник, находим нужную команду, записываем ее на БУМАЖКУ (возможно команда будет составной), потом аргументы, и т.д. после через ПЕРФОКАРТУ... Короче боже благослови ассемблер)
P.S.
Дрова это вам не ядро и уж тем более не BIOS

Автор:  panotnap [ 01 окт 2015, 01:21 ]
Заголовок сообщения:  Re: Место Си и ассемблера в разработке ОС

rst256 писал(а):
Ага ассемблер не нужен, ведь процессоры скоро исходный код на си кушать надо полагать начнут.
Ведь ассемблер === машинный код (именно ===), на чем же тогда, боюсь спросить,
для нового железа будет написан ПЕРВЫЙ компилятор языка си?
Ну, компилятор для железа :) надо написать всего один раз, а дальше программ можно уже сколько угодно. Видимо, имеется ввиду, что для обычного программирования он как правило не используется из-за запаса по скорости и ёмкости.
Например, транзисторную логику никто отменять не собирается, но если её гипотетически поместить в ассемблер, то нетрудно будет увидеть в этом обременяющее для него излишество.

Автор:  Yoda [ 01 окт 2015, 11:47 ]
Заголовок сообщения:  Re: Место Си и ассемблера в разработке ОС

rst256 писал(а):
"При этом в компиляторы добавляют всё больше и больше встроенных (или пристроенных?) ассемблерных функций" - хоть одну назови?

Например, memcpy. А вообще их счёт идёт на десятки, а в некоторых компиляторах (GCC) приближается к сотне.

rst256 писал(а):
Ведь ассемблер === машинный код (именно ===), на чем же тогда, боюсь спросить,
для нового железа будет написан ПЕРВЫЙ компилятор языка си?

Традиционно первый компилятор для нового железа пишут на C/C++.

Автор:  SII [ 01 окт 2015, 12:53 ]
Заголовок сообщения:  Re: Место Си и ассемблера в разработке ОС

Yoda писал(а):
rst256 писал(а):
"При этом в компиляторы добавляют всё больше и больше встроенных (или пристроенных?) ассемблерных функций" - хоть одну назови?

Например, memcpy. А вообще их счёт идёт на десятки, а в некоторых компиляторах (GCC) приближается к сотне.


Но если функции типа memcpy вполне можно написать и на языке высокого уровня (на том же Си, например), то целый ряд функций можно написать только на ассемблере -- например, разрешение и запрещение прерываний (эти функции используют специальные команды процессора, которые никогда не генерируются самим компилятором). Всякие манипуляции со стеком (например, для его "раскручивания" при обработке исключений) также требуют использования ассемблера. Ну и т.д. и т.п.

Yoda писал(а):
rst256 писал(а):
Ведь ассемблер === машинный код (именно ===), на чем же тогда, боюсь спросить,
для нового железа будет написан ПЕРВЫЙ компилятор языка си?

Традиционно первый компилятор для нового железа пишут на C/C++.


Написать можно, в принципе, на любом языке. Тут главное другое: для нового железа, ещё не имеющего своего родного инструментария, первые инструменты пишут на другом железе -- так называемые кросс-трансляторы и т.д. (ну, Yoda-то это и без меня прекрасно знает, а вот некоторые, похоже, не осознают, что разрабатывать программу для некоей железяки вовсе не обязательно на этой самой железяке).

Автор:  Yoda [ 01 окт 2015, 13:27 ]
Заголовок сообщения:  Re: Место Си и ассемблера в разработке ОС

SII писал(а):
для нового железа, ещё не имеющего своего родного инструментария, первые инструменты пишут на другом железе -- так называемые кросс-трансляторы

Ну вот, разжевал, а я надеялся, человек сам сообразит :D.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/