题
我想了很多我读约D。
- 统一的文档(会 让我的工作容易多了.)
- 测试能力建的 语言。
- 调试代码支持在语言。
- 向声明。(I总是 认为这是愚蠢的声明 同样的功能的两倍。)
- 建立在功能来代替 预处理器。
- 模块
- Typedef用于适当类型的检查 而不是混淆。
- 嵌套的职能。(咳嗽 PASCAL 咳嗽)
- 在和输出参数。(怎么显而易见的是,!)
- 支持低水平编程 嵌入式系统,哦,是啊!
但是:
- 可以发支持一个嵌入式系统,该系统 不要运行一个操作系统?
- 不彻底的declearation, 它不支持16位处理器 proclude它完全嵌入 上运行的应用程序这样的机器?有时你不需要一个锤子来解决您的问题。
- 垃圾收集是伟大的在Windows和Linux,但是,不幸的是嵌入式应用程序的某个时候必须做到明确的存管理。
- 阵列的边界检查,你喜欢它,你恨它。伟大设计保证,但并不总是允许对表现问题。
- 有什么影响在一个嵌入式系统不能运行OS,对于多线程的支持?我们有一个顾客,甚至不喜欢中断。多小的操作系统/多线程。
- 是否有一个D-Lite,用于嵌入式系统?
所以基本上是D适用于嵌入式系统的只有几个兆字节(有时候低于一magabyte),不能运行OS,其中最大存储器的使用必须已知在汇编时(每需求。) 和可能的东西的小于一个32位的处理器?
我非常感兴趣的一些特征,但是我得到的印象是,它的目的在桌面应用程序开发。
什么是具体地说,使它不适用于16位的执行?(假设的16位结构可以处理的足够数量的记忆保持运行时,无论是在快速存储器或RAM。) 32位的价值观仍然可以计算出,尽管速度慢于16位和需要更多的行动、利用图书馆的代码。
解决方案
我必须说,这短短的这个问题的答案是"不"。
- 如果你的机器是16点,你会有很大的问题配合D入吧-这是明确不适用于它。
- D不是一个光语言在本身,就产生一个很大的运行时间类型的信息,通常被链接到你的应用程序,这也需要类型安全的可变参数(并因此标准格式的功能是火卫一探戈或).这意味着即使是最小的应用程序都令人惊讶的大小尺寸,并可因此取消资格的D从系统低RAM。还D运行时作为共享lib(这可以减轻其中一些问题),已经点测试。
- 目前所有的D图书馆需要C的标准图书馆下方,因而通常也是一个操作系统,因此,即使工作对使用D。然而,确实存在实验内核D,所以它不是不可能的。那里就不会有任何库,作为今天。
我个人想看到你成功,但无疑问,这将是容易的工作。
其他提示
首先读 larsivi的答案.他曾在D运行时,并且知道什么他是在谈论。
我只是想添加: 一些 什么,你要求对已经是可能的。它不会得到你所有的方式,而是作为良好作为一英里在这里,但是,供参考:
垃圾收集是伟大的Windoze或Linux,但是,不幸的是嵌入式应用程序的某个时候必须做explicite存管理。
你可以把垃圾收集关闭。各种实验D操作系统的出有这样做。看看 std。gc 模块,在特定的 std.gc.disable
.还注意到,你不需要分配的记忆 new
:你可以使用 malloc
和 free
.甚至阵列可以分配给它,你只是需要附加一个D阵列围绕的分配的存储器的使用一片。
阵列的边界检查,你喜欢它,你恨它。伟大设计保证,但并不总是允许对表现问题。
的 规范阵列 具体而言,需要编译器,允许用于边界检查可以 关闭 (见"实施情况的注意"). gdc
提供 -fno-bounds-check
, ,并在 dmd
使用 -release
应该禁止。
有什么影响在一个嵌入式系统不能运行OS,对于多线程的支持?我们有一个顾客,甚至不喜欢中断。多小的操作系统/多线程。
这个我不太清楚,但鉴于大多数C运行时允许关闭多线程,似乎可能的一个可能获得的 D运行时 禁用它。是否这就是容易或可能现在虽然我不能告诉你。
对这个问题的答案已经过时:
可以发支持一个嵌入式系统,该系统不是运行一个操作系统?
D可以 截编为臂Linux 和对 手臂的皮层-M.一些项目旨在建立库皮层-M架构 像MiniLibD的STM32 或者这个 项目采用一个通用图书馆的STM32.(你能实现你自己简单的操作系统中D手臂上的皮层-M)
不彻底的declearation,它不支持16位处理器proclude它完全嵌入式应用程序运行在这样的机器?有时你不需要一个锤子来解决您的问题。
没有,请参阅以上的答案...(但是我不会指望那个"较小的"体系结构比皮层-M将支持在不久的将来。)
垃圾收集是伟大的在Windows和Linux,但是,不幸的是嵌入式应用程序的某个时候必须做到明确的存管理。
你可以写 垃圾收集免费码.(D基金会似乎旨在"GC免费符合"标准图书馆的火卫一,但是进展中的工作。)
阵列的边界检查,你喜欢它,你恨它。伟大设计保证,但并不总是允许对表现问题。
(正如你所说的这取决于你的"个人"和设计的决定。但我会承担一种可接受的性能开销往的检查由于背景的D编译器的开发商和D的设计目的。)
有什么影响在一个嵌入式系统不能运行OS,对于多线程的支持?我们有一个顾客,甚至不喜欢中断。多小的操作系统/多线程。
(有什么问题吗?一个可以实现mutlithreading使用的语言能力,例如 如解释说这个问题.顺便说一句:如果你想使用中断考虑这个 "你好世界"的项目cm3.)
是否有一个D-Lite,用于嵌入式系统?
的 SafeD的子集D 目标在内嵌的领域。