ASN.1 / XML Software Tools from Objective Systems
首页 > 产品 > ASN1C 常见问题解答

ASN1C 编译器常见问题解答

下面是关于ASN1C编译器常见问题及解答:

你们产品使用了什么类型的ASN.1规范?

编译器如何处理信息对象和参数类型?

编译器支持X.682规定的表格约束?

由编译器生成源代码?

代码可用于实时,嵌入式系统应用?

支持ASN.1标准中所有规定的语句吗?

代码考虑过开放源吗?

ASN1C支持ROSE MACRO 标记吗?

支持X.694标准允许ASN.1从XML描述产生高效的XML数据二进制编码?

为什么在CAMEL Application Part (CAP)规范中的类型没有生成代码?

为什么某些生成项的名称很长?

Q. 你们产品使用了什么类型的ASN.1规范?
A. 我们的ASN.1编译器已用于各种各样的项目中,涉及定制和标准的 ASN.1规范。下面是一些标准的规范:
  • Universal Mobile Telecommunication System (UMTS) 3rd Generation Partnership Project (3GPP) Applications (RANAP, RRC, NBAP, RNSAP)
  • Security Related Specifications (X.509, PKCS, PKIX, X9 standards, XCBF Biometrics)
  • Computer Supported Telephony Applications (CSTA)
  • TAP3 (Transferred Account Procedure)
  • Telecom Protocols (GPRS, MAP, CAP, CAMEL)
  • Aeronautical Telecommunictions Network (ATN)
  • Manufacturing Message Specification (MMS)
  • H.323 VoiP related protocols (H.225, H.235, H.245)
  • T.38 Real-Time Fax over IP
  • Association Control Service Element (ACSE) and Remote Operation Support Element (ROSE)
Q. 编译器如何处理信息对象和参数类型?
A. ASN1C编译器获取含在这些定义内的主要类型定义,为这些类型生成准确的 C/C++ 及/或 Java 编码器/解码器。有时涉及到通过参数定义和类层向后链接,获取基本类型。编译器也可以从信息对象抽出嵌入类型和值定义,为它们生成代码。

有关进一步的详情,请下载我们的白皮书 ASN1C Support for Information Objects and Parameterized Types
Q. 编译器支持X.682规定的表格约束?
A. ASN1C版本5.4或更高版本可以解析和生成表格约束的代码。多部分消息类型上的约束,约束一个消息的某个部分中出现的域到规范内定义表格中的值。 ASN1C可以生成代码,使用这些表格,允许这些消息类型在一步内编码和解码。
Q. 由编译器生成源代码?
A. 是的,生成的C 和 C++代码遵从American National Standards Institute (ANSI)标准。  对于C++版本,避免使用非可移植构造如模板,I/O流算子和异常,确保最大的可移植性。可用的运行库版本包括源代码,它也符合ANSI标准,使得ASN1C代码可移植到各种平台。
Q. 代码可用于实时,嵌入式系统应用?
A. 我们为某些嵌入式目标机提供 C/C++二进制库以及Java的J2ME库或C#的C#紧凑版库。为我们没有二进制库的平台可以提供源代码。 可以编辑该代码以包括完成特定编解码任务所绝对必需的(你可以自己做,或者我们为你创建一个定制包)。这将允许你用较小的量创建代码,适合空间约束的系统。
Q. 支持ASN.1标准中所有规定的语句吗?
A. 我们可以解析1990到2002标准中定义的所有语句。为多数条目生成等价的 C, C++, 或 Java代码。有关目前不支持条目的信息,请参见我们最新的  release notes
Q. 代码考虑过开放源吗?
A. 取决于你对开放源的定义。它并不是GNU意义上的可供免费下载。 但是可用的产品版本包括运行C和C++源代码,允许最终用户移植他们的应用到更广泛的平台。
Q. ASN1C支持旧的Remote Operation Support Element (ROSE) MACRO 标记(OPERATION, ERROR, etc..)? 
A. ASN1C编译器有一个 '-1990'开关,支持这个标记。这些关键词并没有被置于标准的ASN1C编译器内,因为它们可能会和其它关键词冲突。描述ROSE MACRO支持的文章可在 这里得到。
Q. ASN1C支持X.694标准允许ASN.1从XML描述产生高效的XML数据二进制编码?
A. 这方面的支持计划添加到XBinder XML编译器。这将允许开发人员使用 XML(XSD)对给定描述生成编码器/解码器,它既可以生成 W3C标准XML,也可以生成ITU-T/ISO标准 BER 或PER 二进制编码。
Q. 在CAMEL Application Part (CAP)规范中的许多ASN.1类型定义没有生成类型/类和编码器/解码器。 有以下普遍的形态:
AccessPointName {PARAMETERS-BOUND: bound} ::= OCTET STRING (SIZE( bound.&minAccessPointNameLength .. bound.&maxAccessPointNameLength))

为什么会这样?
A. 当使用一个提供的参数具体实例化时,从它们只生成参数化类型和代码。不幸的是,在CAP中,这些 是在被除去了几个它们所需层次的信息对象中进行的。为了提供一种方法在他们定义层次上创建这些类型的具 体表述,-param命令行参数被添加到ASN1C中。对于CAP,添加"-param bound=CAP-classes.cAPSpecificBoundSet" 到ASN1C命令行中将提供所有这些类型的具体实例。
Q. 当生成许多ASN.1规范的代码时,某些项的名称非常长。有什么办法让它们短点吗?
A. 默认地,ASN1C为其生成的附加类型创建名称是连接该项所有中间嵌套名称而成的。 在说明很多重的嵌套结构时,这可能导致非常长的名称。在这种情况下可以使用-shortnames 限定 词生成短一些的名称。