路径: 主页 > GB/T > 第220页 > GB/T 30997-2014
标准搜索结果: 'GB/T 30997-2014'
| 标准编号 | GB/T 30997-2014 (GB/T30997-2014) | | 中文名称 | 编程语言 C 支持嵌入式处理器的扩展 | | 英文名称 | Programming languages-C -- Extensions to support embedded processors | | 行业 | 国家标准 (推荐) | | 中标分类 | L74 | | 国际标准分类 | 35.060 | | 字数估计 | 77,751 | | 发布日期 | 9/3/2014 | | 实施日期 | 2/1/2015 | | 引用标准 | ISO/IEC 9899-1999 | | 采用标准 | ISO/IEC TR 18037-2008, IDT | | 标准依据 | 中华人民共和国国家标准批准发布公告2014年第21号 | | 发布机构 | 中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会 | | 范围 | 本标准规定了ISO/IEC 9899-1999编程语言C的一系列扩展。这些扩展支持嵌入式处理器。本标准适用于使用C语言对嵌入式处理器进行程序开发的过程。 |
GB/T 30997-2014
ICS 35.060
L74
中华人民共和国国家标准
编程语言 C 支持嵌入式处理器的扩展
(ISO/IEC TR18037:2008,IDT)
2014-09-03发布
2015-02-01实施
中华人民共和国国家质量监督检验检疫总局
中国国家标准化管理委员会发布
目次
前言 Ⅲ
引言 Ⅳ
1 范围 1
2 规范性引用文件 1
3 符合性 1
4 定点运算 1
4.1 定点数据类型概述和原则 1
4.2 对ISO/IEC 9899:1999的详细变更 7
5 命名地址空间和命名寄存器存储类 27
5.1 命名地址空间概述及原则 27
5.2 命名寄存器存储类概述及其原则 28
5.3 对ISO/IEC 9899:1999的详细变更 30
6 基本I/O硬件寻址 34
6.1 原理 34
6.2 术语 35
6.3 基本I/O硬件寻址头文件< iohw.h > 36
6.4 规定I/O寄存器 37
6.5 对ISO/IEC 9899:1999的详细变更 40
附录A(资料性附录) 定点运算 46
A.1 定点数据类型 46
A.2 _Fract和_Accum中数据位的个数 48
A.3 可能的数据类型实现 48
A.4 舍入和溢出 49
A.5 类型转换,一般算术转换 50
A.6 涉及定点类型的运算 50
A.7 1和-1乘法结果的例外 51
A.8 语言变量和unsigned_Fract:无符号定点类型的示例 51
附录B(资料性附录) 命名地址空间和命名寄存器存储类 53
B.1 嵌入式系统的扩展内存支持 53
B.1.1 命名地址空间的修饰符 53
B.1.2 应用定义的多个地址空间支持 54
B.1.3 内在地址空间或用户定义地址空间的I/O寄存器定义 54
附录C(资料性附录) 实现< IOWH.H >头文件 56
C.1 通则 56
C.1.1 推荐步骤 56
C.1.2 编译器的考虑 56
C.2 I/O硬件连接选项概述 56
C.2.1 多寻址和I/O寄存器的字节序 57
C.2.2 地址交叉 57
C.2.3 I/O连接概述 57
C.2.4 通用的缓冲索引 58
C.3 不同的I/O寻址方法的I/O寄存器指定符 59
C.4 原子操作 59
C.5 读-改-写操作和多寻址的情况 60
C.6 I/O初始化 60
C.7 I/O硬件访问的内在特性 61
附录D(资料性附录) < IOHW.H >实现的迁移路径 62
D.1 < iohw.h >实现的迁移路径 62
D.2 基于C宏的< iohw.h >实现 62
D.2.1 访问规格方法 62
D.2.2 一种< iohw.h >的实现技术 62
D.2.3 特征 63
D.2.4 < iohw.h >头文件 63
D.2.5 用户的I/O寄存器指定符定义 66
D.2.6 驱动函数 67
附录E(资料性附录) 本标准中未包括的功能 69
E.1 循环缓冲 69
E.2 复杂数据类型 70
E.3 嵌入式系统中BCD数据类型的考虑 70
E.4 取模回绕溢出 70
附录F(资料性附录) C++兼容性和移植问题 71
F.1 定点运算 71
F.2 多地址空间支持 71
F.3 基础I/O硬件寻址 71
前言
本标准按照GB/T 1.1-2009给出的规则起草。
本标准使用翻译法等同采用ISO/IEC 技术报告ISO/IEC TR18037:2008《编程语言 C 支持嵌
入式处理器的扩展》,做了如下编辑性修改:
---增加对标准适用范围的描述;
---对原文的符合性要求做了以下编辑性修改:原文中表述“因为这是一份技术报告,所以不存在
theyneed.)”转化为我国国家标准后,不宜有此表述,故将其删除;
---原文中列举出对ISO/IEC 9899:1999编程语言C部分条目的编辑性修改,为与本标准自身条
目相区别,将ISO/IEC 9899:1999编程语言C的条目加实线框以区分;
---删除了资料性附录G对技术报告18037第二版的更新和变更。
本标准由全国信息技术标准化委员会(SAC/TC28)提出并归口。
本标准起草单位:中国电子技术标准化研究院、复旦大学、上海计算机软件评测重点实验室。
本标准主要起草人:李海波、杨丽蕴、丛培勇、贺红卫、苗宗利、王雷、钱乐秋、蔡立志。
引 言
在快速增长的嵌入式系统市场,使用诸如C语言之类高级语言编写应用程序的需求在不断增加。
基本上,造成这种趋势的原因有两种:嵌入式系统的程序变得更加复杂(使用汇编语言会难以维护)和嵌
入式系统处理器模型的生命周期在变短(这隐含了应用程序要更频繁地重新适应新的指令集)。C语言
级别上的编程所能获得的代码重用性被认为是解决上述问题的一个重要前进步骤。
很多技术领域都定义了由处理器提供的功能(例如DSP),这些在嵌入式系统中使用的功能不容易
被C语言编写的应用程序采用。比如,定点操作、不同内存空间的用法和底层I/O操作等。目前的提
案仅仅只能解决这些技术领域中的一小部分问题。
嵌入式处理器经常被用来分析模拟信号,以及通过对接收到的数据运用滤波算法来处理这些信号。
典型的应用程序可以在所有的无线设备中找到。滤波算法中使用的通用数据类型是定点数据类型,并
且,为了达到必要的速度,嵌入式处理器经常会配备特殊的定点数据设备。由于 C 语言(根据
ISO/IEC 9899:1999中的定义)不提供对定点运算操作的支持,导致目前程序员因无法选择而不得不使
用汇编语言手工编写其大多数算法。本标准为C语言指定了一个在一定精度和饱和度范围内定义的
定点数据类型。优化C编译器能像对整型和浮点型数据一样容易地为定点数据类型生成高效率的
代码。
许多嵌入式处理器拥有多个不同的内存库并且要求将数据按不同的库分组以达到最大的性能。例
如,确保针对FIR过滤设计出进入处理器的乘法器/累加器的并发数据流和协同数据,对处理器的操作
至关重要。为了允许程序员声明那个必须从中取出某特定数据对象的内存空间,本标准规定了对多个
地址空间的基本支持。因而,优化编译器能利用那些支持多个地址空间的处理器的能力,例如,在一个
周期内从两个分离的内存中读取数据,以获得最大执行速度。
随着C语言这些年的逐渐成熟,语言中加入了多种访问基本I/O硬件(iohw)寄存器的扩展来克服
语言的缺陷。如今,几乎所有的独立式环境和嵌入式系统的C编译器都支持一些从C源码级别上直接
访问iohw寄存器的方法。然而,这些扩展在不同的C语言“方言”之间仍然是不一致的。
本标准提供了一种方法,用于针对基本iohw寄存器寻址编纂通用实践和提供单一的统一语法。
建议本标准与ISO/IEC 9899:1999结合使用。
编程语言 C 支持嵌入式处理器的扩展
1 范围
本标准规定了ISO/IEC 9899:1999编程语言C的一系列扩展。这些扩展支持嵌入式处理器。
本标准的每章都处理一个特定的主题。第4、5、6章的第一条都包含了对该主题的特征的技术描
述。这些条文提供了概览但不包含所有的细节。每一章的最后一条都包含对ISO/IEC 9899:1999编
程语言C的编辑性修改,这些修改对完整地规定ISO/IEC 9899:1999中相关主题是必要的,并提供一
个完整的定义。附加的解释和原理列在附录中。
本标准适用于使用C语言对嵌入式处理器进行程序开发的过程。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
3 符合性
本标准分3章表述了基本独立的三个功能集合的规范(第4章定点运算、第5章命名地址空间和命
名寄存器存储类,以及第6章基本输入/输出硬件寻址)。如果实现某一章的功能,建议实现者实现该章
的全部功能。
4 定点运算
4.1 定点数据类型概述和原则
4.1.1 数据类型
本标准中,定点数据值是指小数值(介于-1.0~+1.0之间的值)或者由整数部分和小数部分组成
的值。由于小数点的位置是已知的,因此对这些数据类型值的操作,能以与整数值操作同样的效率实
现。对定点数据值及其操作的典型用法,可以在将模拟值转换成数字表示后的一些过滤算法的应用程
序中发现。更多关于定点数据类型的信息,参见A.1.1。
本标准中,对C语言增加了两组定点数据类型:fract类型和accum类型。fract类型的数据值没有
整数部分,因此fract类型的值介于-1.0~+1.0之间。accum类型的取值范围取决于该数据类型中整
数位的个数。
定点数据类型由相应的新的关键字和类型区分符_......
|