繁体   English   中英

使用C ++进行低级系统编程

[英]Low level systems programming with C++

我已经使用C ++一段时间了,我开始对低级系统编程感兴趣,比如驱动程序和东西。 甚至某种原始操作系统也可能是非常有趣的项目!

我不知道我可以从哪里开始。 是否有任何不太具挑战性的事情我可以开始使用C ++我应该尽量避免像性能关键代码中的异常一样?

我的当前操作系统是Windows 7,如果这很重要的话。

用C ++编写Windows设备驱动程序并非不可能,没有很多CRT函数可以用来帮助您解决问题。 例如,新运算符不可用,您不必担心std :: bad_alloc。 除非你替换它,否则会削减相当大的标准C ++库类。

但这并不是设备驱动程序的重点,重要的是让它尽可能小。 编写复杂代码时,C ++会得到回报。 您明确地希望在设备驱动程序中编写复杂的代码。 调试它是redrum。

Linus真的很喜欢内核中的C语言。 这是有充分理由的。

看一下osdev.org (在考虑开发自己的操作系统时会想到很多问题在这里得到解答)。

C ++没有提供实际实现完整操作系统所需的全部工具。 在c ++中有一些特定于机器的东西无法完成。 这些都是处理和提升中断,控制MMU,控制对supervisor cpu指令的访问,以及一些其他小的可能性和结束。

幸运的是,这些东西很少,可以用从C ++访问的汇编语言编写。

我强烈建议你从黑客攻击现有的开源设备驱动程序和内核开始,你只能在Linux或* BSD中进行操作。 这段经历也会让你很好地了解你是否已经完成了这种编程。

听说最近开源的Symbian OS是用C和C ++编写的。 不知道它的哪些部分是用C ++完成的,因为我还没有读过代码库。 考虑调查一下。

Kerneltrap.org对Linux内核在其代码库中没有C ++的原因进行了一些非常好的讨论。 考虑一下阅读。

Symbian OS是用C ++的变体编写的。 当然,还有低级别事物的汇编代码,但这一切都已完成。 你不能使用异常,对于实时驱动程序你不能做正常的事情,比如动态内存分配,甚至不能用C.

我推荐C编程语言和汇编程序。 我不确定C ++是否有可能低级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM