什么是代码替换?
代码替换技术改变函数和运算符的代码生成器生成的代码来满足应用程序代码的需求。例如,您可以取代生成的代码来满足要求,比如:
优化为一个特定的运行时环境,包括但不限于特定的目标硬件。
与现有的应用程序代码的集成。
符合标准的,如AUTOSAR。
修改代码的行为,如启用或禁用非限定的或内联的支持。金宝app
应用程序或项目特定的代码要求,如:
消除
math.h
。消除系统头文件。
消除调用
memcpy
或memset
。布拉斯特区的使用。
使用一个特定的布拉斯特区。
应用这种技术,配置代码生成器应用代码替换库(CRL)代码生成。默认情况下,代码生成器代码替换库并不适用。你可以选择从以下MathWorks的库®提供:
GNU C99 extensions-GNU®(1]C99 gcc数学库,它提供了扩展定义的编译器选项
化gnu99
。AUTOSAR 4.0产生更紧密地与AUTOSAR标准的代码。需要嵌入式编码器®许可证。
英特尔x86 - 64年IPP (Windows)生成调用英特尔®性能原语(IPP)图书馆的Windows x86 - 64®平台。
英特尔IPP / SSE x86 - 64 (Windows)生成调用IPP (SSE)和流媒体SIMD扩展库x86 - 64 Windows平台。
英特尔x86 - 64年IPP (Windows使用MinGW编译器)生成调用IPP图书馆x86 - 64 Windows平台和MinGW的编译器。
英特尔IPP / SSE x86 - 64 (Windows使用MinGW编译器)生成调用IPP和SSE库x86 - 64 Windows平台和MinGW的编译器。
英特尔IPP x86 /奔腾(Windows)生成调用IPP图书馆x86 /奔腾Windows平台。
英特尔IPP / SSE x86 /奔腾(Windows)生成调用英特尔x86的性能IPP和SSE库/奔腾Windows平台。
英特尔x86 - 64年IPP (Linux)生成调用Linux x86 - 64的IPP图书馆®平台。
英特尔IPP / SSE GNU99扩展x86 - 64 (Linux)生成调用GNU库IPP和上交所的GNU C99扩展,x86 - 64 Linux平台。
库,包括GNU99扩展仅供使用GCC编译器。如果你使用其中一个库与另一个编译器,生成的代码可能无法编译。
根据产品许可证,其他库可能是可用的。如果你有一个嵌入式编码人员许可,您可以查看和选择从其他图书馆和您可以创建自定义代码替换库。
代码替换库
一个代码替换库由一个或多个代码替换表指定特定于应用程序的函数和运算符实现。例如,为一个特定的嵌入式处理器库指定函数和运算符替换优化生成的代码,处理器。
一个代码替换表包含一个或多个代码替换条目,每个条目表示一个潜在的替代函数或运算符。每个条目映射概念上的表示的一个函数或一个操作符实现表示和优先级。
表条目组件 | 描述 |
---|---|
概念上的表示 | 标识表条目,包含匹配标准代码生成器。包括:
|
实现表示 | 指定替换代码。包括:
|
优先级 | 定义条目的优先级相对于其他表中的条目。值的范围可以从0到100,0是最高优先级。如果多个条目有相同的优先级,代码生成器使用的第一场比赛,优先级。 |
当代码生成器代码替换库中查找匹配,它创建和填充调用站点对象概念与函数或操作符表示。如果匹配存在,代码生成器使用匹配的代码替换条目填充实现表示和使用它来生成代码。
代码生成器的搜索匹配的代码替换库中的表,表的顺序出现在图书馆。如果代码生成器发现多个匹配表内,优先级决定了比赛。代码生成器使用一个高优先级的条目在一个类似的条目以较低的优先级。
代码替代术语
术语 | 定义 |
---|---|
缓存命中 | 代码替换条目一个函数或运营商指定的代码替换库中定义,代码生成器找到一个匹配。 |
缓存错过 | 函数或运算符的概念表示的代码生成器没有找到匹配。 |
调用站点对象 | 概念表示的函数或操作符代码生成器使用时遇到一个叫网站功能或操作符。代码生成器使用对象查询的代码替换库概念表示匹配。如果匹配存在,代码生成器代码替换返回一个对象,充分填充概念表示,实现表示,和优先级,并使用该对象生成替换代码。 |
代码替换库 | 一个或多个代码替换表指定特定于应用程序的函数和运算符实现。当配置为使用一个代码替换库,代码生成器使用标准库中定义的搜索匹配。如果找到匹配,它生成的代码生成器替换代码中定义的默认情况下和特定于应用程序的代码库。 |
代码替换表 | 一个或多个代码替换表条目。提供了一种方法来组织相关或共享条目使用在不同的库。 |
代码替换条目 | 代表了一种潜在的替代函数或运算符。地图的概念表示一个函数或运算符表示和实现优先级。 |
概念上的参数 | 代表一个输入或输出参数的函数或操作符所取代。概念参数观察命名约定(“日元” ,‘u1’ ,“u2” 熟悉,…)和数据类型代码生成器。 |
概念上的表示 | 表示匹配标准代码生成器使用资格函数和运算符替代。包括:
|
实现参数 | 代表一个输入或输出参数C或c++替换功能。实现参数观察C / c++名称和数据类型规范。 |
实现表示 | 指定C或c++替换函数原型。包括:
|
关键 | 标识一个函数或运算符所取代。出现一个函数名或关键的概念表示代码替换条目。的关键RTW_OP_ADD 标识加法操作符。 |
优先级 | 定义了代码替换条目匹配的优先级相对于其他条目,参数列表相同的名称和概念,在一个代码替换库。优先级的范围可以从0到100,0是最高优先级。默认值是100。如果一个库提供了两种实现函数或运算符,实现与更高的优先级阴影的较低的优先级。 |
代码替换的局限性
代码替换代码替换验证——可能比你想象的表现不同。例如,你观察的数据类型代码生成器的输入可能不匹配代码生成器使用作为中间数据类型在一个操作。验证代码替换通过检查生成的代码。
代码代替矩阵-代码替换库不支持动态和符号大小的矩阵。金宝app
相关的话题
(1]自由软件基金会的GNU是一个注册商标。