编译出错Number of virtual registers beyond limit. Reduce function size

2019-07-18 14:52发布

     一部分代码是用simulink生成的,c代码里边有比较长的矩阵运算,用6.4.12版本的编译工具编译就出现了Number of virtual registers beyond limit. Reduce function size错误,谷歌了一下别人用16.9.0版本的编译工具编译可以,但我用16.9.0版本的工具编译太慢了,编译一个工程就要花半小时,肯定有问题,请问一下论坛里有没有人遇到过同样的问题,能否给指点一下?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
大马哈鱼100
1楼-- · 2019-07-19 17:19
lzmm 发表于 2017-3-17 20:20
这个16.9.0版本的编译工具是什么

compiler version
大马哈鱼100
2楼-- · 2019-07-19 18:06
lzmm 发表于 2017-3-17 20:24
虚拟的寄存器需要应用在哪里?

我也不知道,没有找到相关的文档
大马哈鱼100
3楼-- · 2019-07-19 20:20
dirtwillfly 发表于 2017-3-17 20:19
ccs里的优化选项

测试了一下好像没太大的影响,出问题的部分程序,另外还有很多行这样的代码,用simulink导出的
  1.   /* '<S4>:1:148' */
  2.     rty_nextP[80] = ((((((((((((rtb_Init_p[1] * SF_idx_9 + rtb_Init_p[0]) +
  3.       rtb_Init_p[2] * SF_idx_11) + rtb_Init_p[3] * SF_idx_10) + rtb_Init_p[10] *
  4.       g_y) + rtb_Init_p[11] * h_y) + rtb_Init_p[12] * SF_idx_16) * SF_idx_4 +
  5.                           ((((((rtb_Init_p[81] * SF_idx_9 + rtb_Init_p[80]) +
  6.       rtb_Init_p[82] * SF_idx_11) + rtb_Init_p[83] * SF_idx_10) + rtb_Init_p[90]
  7.       * g_y) + rtb_Init_p[91] * h_y) + rtb_Init_p[92] * SF_idx_16)) +
  8.                          ((((((rtb_Init_p[33] * SF_idx_9 + rtb_Init_p[32]) +
  9.       rtb_Init_p[34] * SF_idx_11) + rtb_Init_p[35] * SF_idx_10) + rtb_Init_p[42]
  10.       * g_y) + rtb_Init_p[43] * h_y) + rtb_Init_p[44] * SF_idx_16) * SF_idx_3) +
  11.                         ((((((rtb_Init_p[49] * SF_idx_9 + rtb_Init_p[48]) +
  12.       rtb_Init_p[50] * SF_idx_11) + rtb_Init_p[51] * SF_idx_10) + rtb_Init_p[58]
  13.       * g_y) + rtb_Init_p[59] * h_y) + rtb_Init_p[60] * SF_idx_16) * SF_idx_5) -
  14.                        ((((((rtb_Init_p[17] * SF_idx_9 + rtb_Init_p[16]) +
  15.       rtb_Init_p[18] * SF_idx_11) + rtb_Init_p[19] * SF_idx_10) + rtb_Init_p[26]
  16.                           * g_y) + rtb_Init_p[27] * h_y) + rtb_Init_p[28] *
  17.                         SF_idx_16) * SPP_idx_0) + ((((((rtb_Init_p[225] *
  18.       SF_idx_9 + rtb_Init_p[224]) + rtb_Init_p[226] * SF_idx_11) + rtb_Init_p
  19.       [227] * SF_idx_10) + rtb_Init_p[234] * g_y) + rtb_Init_p[235] * h_y) +
  20.       rtb_Init_p[236] * SF_idx_16) * SPP_idx_2) - ((((((rtb_Init_p[209] *
  21.       SF_idx_9 + rtb_Init_p[208]) + rtb_Init_p[210] * SF_idx_11) + rtb_Init_p
  22.       [211] * SF_idx_10) + rtb_Init_p[218] * g_y) + rtb_Init_p[219] * h_y) +
  23.       rtb_Init_p[220] * SF_idx_16) * SPP_idx_10) + ((((((rtb_Init_p[241] *
  24.       SF_idx_9 + rtb_Init_p[240]) + rtb_Init_p[242] * SF_idx_11) + rtb_Init_p
  25.       [243] * SF_idx_10) + rtb_Init_p[250] * g_y) + rtb_Init_p[251] * h_y) +
  26.       rtb_Init_p[252] * SF_idx_16) * (2.0F * rtb_Init[0] * rtb_Init[1] - 2.0F *
  27.       rtb_Init[2] * rtb_Init[3]);
复制代码
dirtwillfly
4楼-- · 2019-07-20 01:00
大马哈鱼100 发表于 2017-3-17 21:24
测试了一下好像没太大的影响,出问题的部分程序,另外还有很多行这样的代码,用simulink导出的 ...

这种代码没啥可读性。有时间的话建议重写。推荐使用ti提供的数学库
chuntian2016
5楼-- · 2019-07-20 02:30
这个没怎用过的,,不很清楚的,,跟大家学习的
大马哈鱼100
6楼-- · 2019-07-20 06:35
dirtwillfly 发表于 2017-3-18 08:06
这种代码没啥可读性。有时间的话建议重写。推荐使用ti提供的数学库 ...

其实自己按照模型也写过一版,但算法部分都固定了不好改,谢谢帮忙解答

一周热门 更多>