高级语言的低级功能

时间:2011-05-25 10:15:43

标签: c programming-languages pascal low-level high-level

我想了解一些高级语言的低级功能。 在我的脑海中,我可以指出: - 按位操作 比特字段 - 指针算术 - 在线组装 - 中断功能

如果你指出一些不在我名单中的话,我会赞成的。如果C或Pascal拥有它们会很好,但基本上任何高级语言都可以。 谢谢。

3 个答案:

答案 0 :(得分:5)

C不支持内联汇编程序或中断,所有实现它们的C代码都使用非标准编译器扩展。但是,C ++通过标准支持内联汇编程序。

以下是C的其他一些与硬件相关的重要功能:

  • 函数指针对于C / C ++来说是相当独特的,并且可以执行位于特定内存地址的代码,并且可以执行其他与硬件相关的任务。有关函数指针使用的更多详细信息,请参阅此处:Function pointers in embedded systems

  • 整数类型。 C和Pascal都支持不同大小的int类型(字节,字,双字等),尽管标准没有规定它们的大小。出于同样的原因,sizeof运算符也很重要。

  • C也支持内存对齐,例如明确说明填充字节的行为规则。

  • volatile关键字也是硬件相关编程的一个重要特性,因为它允许实时更新变量,而无需担心编译器优化。

  • const关键字用于与硬件相关的编程,以确定数据的最终位置:NVM或RAM。

C缺乏的其他重要功能是多线程支持作为语言的一部分,以及内存屏障支持。一些C编译器通过volatile关键字实现内存屏障,但无法保证它可以通过任何标准工作。

答案 1 :(得分:1)

引用Wikipedia

  

高级编程语言是一种编程语言,具有强大的计算机细节抽象功能。

C不是这样的语言,因为它与计算机的细节非常接近。


看着你的清单:

  • 按位操作
  • 位字段
  • 指针算术
  • 内联汇编
  • 中断功能

所有与计算机/操作系统架构本身密切相关,被认为是高级别。

答案 2 :(得分:1)

一种支持低级编程的高级语言是Ada。

除了之前提到的C,Ada还对并发系统提供内在支持。 Tasks 是一种语言结构,不需要单独的库。对于并发系统,Ada还提供所谓的受保护类型,它允许在任务之间使用共享变量或数据,而无需额外考虑互斥或信令。基本语言库还支持中断处理

对于数据访问,可以使用表示子句来定义数据的确切表示。作为强类型的结果,在不同的数据表示之间定义视图转换也是微不足道的,例如允许在空间和速度之间进行权衡。

也可以通过机器码插入直接生成装配。