Embedded 用D(编程语言)嵌入

Embedded 用D(编程语言)嵌入,embedded,32-bit,d,16-bit,Embedded,32 Bit,D,16 Bit,我喜欢我读到的很多关于D 统一文档(即 让我的工作轻松多了。) 测试功能内置于 语言 语言中的调试代码支持 转发声明。(我总是 我觉得申报是愚蠢的 相同的函数两次。) 内置功能以取代 预处理器 模块 Typedef用于正确的类型检查 而不是别名 嵌套函数。(咳嗽帕斯卡 咳嗽) 输入和输出参数。(这是多么明显啊!) 支持低级编程- 嵌入式系统,哦,是的 然而: D能支持一个嵌入式系统吗 不打算运行操作系统 彻底澄清 它不支持16位处理器 完全禁止其嵌入 在这样的机器上运行的应用程序?有时候你

我喜欢我读到的很多关于D

  • 统一文档(即 让我的工作轻松多了。)
  • 测试功能内置于 语言
  • 语言中的调试代码支持
  • 转发声明。(我总是 我觉得申报是愚蠢的 相同的函数两次。)
  • 内置功能以取代 预处理器
  • 模块
  • Typedef用于正确的类型检查 而不是别名
  • 嵌套函数。(咳嗽帕斯卡 咳嗽)
  • 输入和输出参数。(这是多么明显啊!)
  • 支持低级编程- 嵌入式系统,哦,是的
然而:

  • D能支持一个嵌入式系统吗 不打算运行操作系统
  • 彻底澄清 它不支持16位处理器 完全禁止其嵌入 在这样的机器上运行的应用程序?有时候你不需要锤子来解决你的问题
  • 垃圾收集在Windows或Linux上非常好,但不幸的是,嵌入式应用程序有时必须进行显式内存管理
  • 数组边界检查,你爱它,你恨它。非常适合设计保证,但不总是允许出现性能问题
  • 在不运行操作系统的嵌入式系统上,多线程支持意味着什么?我们有一个客户甚至不喜欢被打断。更不用说操作系统/多线程了
  • 嵌入式系统是否有D-Lite
因此,D基本上适用于只有几兆字节(有时小于一兆字节)的嵌入式系统,而不运行操作系统,在编译时(根据要求)必须知道最大内存使用量,并且可能在小于32位处理器的系统上

我对其中一些功能非常感兴趣,但我觉得它是针对桌面应用程序开发人员的


具体是什么使得它不适合16位实现?(假设16位体系结构可以在闪存或RAM中寻址足够数量的内存来保存运行时。)32位值仍然可以使用库代码进行计算,尽管比16位慢并且需要更多操作。

我不得不说,这个问题的简短答案是“否”

  • 如果您的机器是16位的,那么将D安装到其中会有很大的问题—它显然不是为它设计的
  • D本身并不是一种轻量级语言,它会生成大量的运行时类型信息,这些信息通常会链接到你的应用程序中,类型安全变量也需要这些信息(因此,标准格式功能可能是Tango或Phobos)。这意味着,即使是最小的应用程序,其大小也出人意料地大,因此可能会取消D在低RAM系统中的资格。同样,将运行时作为共享库(这可以缓解其中的一些问题)进行测试的也很少
  • 所有当前的D库都需要一个C标准库,因此通常也需要一个操作系统,因此即使这样也不利于使用D。然而,D中确实存在实验内核,因此这本身并不是不可能的。从今天起,就不会有图书馆了
我个人希望看到你成功,但我怀疑这是否容易。

首先阅读。他在D运行时工作过,知道自己在说什么

我只想补充一句:你所问的一些问题已经有可能了。一失之毫厘,谬以千里,但仍然,FY: < /P> 垃圾收集在Windoze或Linux上非常好,但不幸的是,嵌入式应用有时必须进行明确的内存管理

您可以关闭垃圾收集。各种各样的实验操作系统都能做到这一点。请参阅模块,特别是
std.gc.disable
。还请注意,您不需要使用
new
分配内存:您可以使用
malloc
free
。即使可以使用它分配数组,您也只需要使用一个片在分配的内存周围附加一个D数组

数组边界检查,你爱它,你恨它。非常适合设计保证,但不总是允许出现性能问题

特别要求编译器允许进行边界检查(请参阅“实现说明”)
gdc
提供
-fno边界检查
,在
dmd
中使用
-release
应禁用它

在不运行操作系统的嵌入式系统上,多线程支持意味着什么?我们有一个客户甚至不喜欢被打断。更不用说操作系统/多线程了


这一点我不太清楚,但考虑到大多数C运行时都允许关闭多线程,似乎也可以让用户禁用它。尽管我现在不能告诉你这是容易的还是可能的。

这个问题的答案已经过时了:

D支持不运行操作系统的嵌入式系统吗

D可以是,也可以是。一些项目的目标是为Cortex-M架构或类似的架构创建库。(您可以在ARM Cortex-M上的D中实现自己的简约操作系统。)

它完全不支持16位处理器,这是否意味着它完全无法运行在这些机器上的嵌入式应用程序?有时候你不需要锤子来解决你的问题

不,见上面的答案。。。(但我不认为在不久的将来会支持比Cortex-M“更小”的体系结构。)

垃圾收集在Windows或Linux上非常好,但不幸的是,嵌入式应用程序有时必须进行显式内存管理

你可以写。(D基金会的目标似乎是“无GC兼容”标准库PHOBOS,但这是正在进行中的工作。) 数组边界检查,你爱它,你恨它。非常适合设计保证,但不总是允许出现性能问题

(正如你今天所说的