关于Simulink CodeGeneration代码比较

使用同一个MBD方式创建的车辆控制模型,测试mdl模型文件,six模型文件使用不同编译器生成代码的异同:

测试模型:mdl格式和six格式
测试环境:Matlab 2016a 64bit Windows 版 and Matlab 2015b 64bitGlinux 版
操作系统:en_windows_10 enterprise x64
操作系统:CentOS-7-x86_64-1511
Embedded hardware selection: Freescale->HC(S)12
比较对象:模块子系统.c和.h文件,模型.c和.h文件文件

1:通过测试发现mdl和six生成的主要.c和.h文件以及a2l文件都相同;
2:以下情况生成的主要.c和.h文件以及a2l文件都相同:

测试Microsoft Visual C++ 2012 和 Microsoft Visual C++ 2015;
测试Microsoft Visual C++ 2012 和 Matlab LCC-win64 v2.4.1;
测试Microsoft Visual C++ 2012 和 MinGW64 v4.x;

3:测试Microsoft Visual C++ 2012 和 GCC Win64 Linux发现:
GCC代码简洁,不太符合规范
MS C++代码规范,略显冗长

比如abs操作:
MS C++代码:
absIn1 = in1 < 0L ? ~(uint32_T)in1 + 1UL : (uint32_T)in1; 
absIn0 = in0 < 0L ? ~(uint32_T)in0 + 1UL : (uint32_T)in0;
GCC代码:
absIn1 = (uint32_T)(in1 < 0L ? -in1 : in1); 
absIn0 = (uint32_T)(in0 < 0L ? -in0 : in0);

4:测试Matlab 2010b 32bit + Win7 32bit 与Matlab 2016a 64bit + Win10 64 bit
这个比较意义其实没有什么意义,时隔六年,已是物是人非,生成的一部分.c和.h文件极为相似,详细的比较等待补充……

猜你喜欢

转载自blog.csdn.net/lm393485/article/details/88895385