C ++ STL низкоуровневое программирование - PullRequest
0 голосов
/ 19 октября 2011

Можно ли выполнять низкоуровневое программирование с использованием STL, хотя бы контейнеров и алгоритмов?Мне нужно сделать простую ОС и знать, возможно ли попробовать C ++ и STL или перейти на простой C. Любые ресурсы принимаются.1003 *

А как насчет Boost?

Ответы [ 3 ]

2 голосов
/ 19 октября 2011

Большинство реализаций C ++ STL, с которыми я знаком, в значительной степени зависели от ОС (особенно для распределения памяти). Я не собираюсь исключать использование C ++ STL в ядре операционной системы, но вам придется проделать большую работу для переноса реализации STL в вашу среду (например, реализовать распределитель памяти, сделать обработку исключений). работать, написать шим совместимости iostreams для вывода на экран / TTY / что угодно) и получить компилятор для правильной настройки вашей реализации. В целом может быть меньше работы, просто написать ОС на C. :) 1001 *

1 голос
/ 24 октября 2011

Вы должны полностью использовать C ++ STL. Даже если вы работаете только с голыми указателями и массивами, алгоритмы STL значительно прояснят ваше мышление и программирование. Гениальность STL Александра Степанова состоит в том, что алгоритмы выражены относительно итераторов, а итераторы являются обобщением указателей, поэтому вы можете применять любой из его алгоритмов к необработанным указателям и массивам с нулевой задержкой времени выполнения.

Плюс, вот лучшая часть. Если вы думаете, как Александр Степанов, и используете его идиому указатель на начало и указатель на конец конца, все термины плюс один (+ 1) и минус один (- 1) выпадут из вашего массива и зацикливать логику, и вам больше никогда не придется остерегаться ошибок логики.

Вы должны написать операционную систему, которая изначально представляет строки в виде пары байтов * для начала и конца конца блока памяти UTF8. Тогда ваша ОС может заменить Unices и освободить нас от строк с нулевым символом в конце.

0 голосов
/ 19 октября 2011

Вы можете (и должны) использовать C ++ для ОС.В зависимости от того, где в ОС находится код, вам, возможно, придется отказаться от частей (или всех) стандартной библиотеки, а в некоторых случаях, возможно, даже от некоторых функций (исключения?);все зависит от контекста.

Что касается контейнеров STL, они, безусловно, будут использоваться на некоторых уровнях, если вы укажете пользовательские распределители.(Реализация библиотеки operator new будет зависеть от функциональности ОС, поэтому, вероятно, не будет доступна в самой ОС. Хотя даже это зависит от конструкции ОС.) И не должно быть проблем с большинством алгоритмов.

...