2

我想知道高级语言的一些低级能力。在我的脑海中,我可以指出:-按位运算-位域-指针算术-内联汇编-中断函数

如果您指出一些不在我列表中的内容,我将不胜感激。如果 C 或 Pascal 有它们会很好,但基本上任何高级语言都可以。谢谢你。

4

3 回答 3

5

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

以下是 C 的其他一些重要的、与硬件相关的特性:

  • 函数指针对于 C/C++ 来说是相当独特的,它可以执行位于特定内存地址的代码,并可以执行其他与硬件相关的任务。有关函数指针使用的更多详细信息,请参见此处:嵌入式系统中的函数指针

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

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

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

  • const 关键字用于与硬件相关的编程,以确定数据将在哪里结束:NVM 或 RAM。

C 缺乏的其他重要特性是作为语言一部分的多线程支持和内存屏障支持。一些 C 编译器通过 volatile 关键字实现内存屏障,但不能保证它在任何标准下都能正常工作。

于 2011-05-25T11:05:54.247 回答
1

引用维基百科

高级编程语言是一种从计算机细节中抽象出来的编程语言。

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


并查看您的清单:

  • 按位运算
  • 位域
  • 指针算术
  • 内联汇编
  • 中断函数

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

于 2011-05-25T10:26:39.873 回答
1

一种对低级编程有很好支持的高级语言是 Ada。

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

对于数据访问,数据的精确表示可以通过使用表示子句来定义。由于强类型化,定义不同数据表示之间的视图转换也很简单,例如允许在空间和速度之间进行权衡。

也可以根据需要通过机器代码插入直接生成汇编。

于 2011-05-25T13:30:06.357 回答