如何读取数组的c文件,在内存中映射成真正的数组

2020-01-01 17:48发布

介绍下问题提出背景,我的程序中有个90多k的数组,70%以上都是连续的0,我打算用rle算法压缩,估计降低一半以上大小是可行的

初步思路是搞个上位机的命令行程序,读取这个数组c文件,压缩后生成一个bin文件,mdk支持在编译前运行命令,然后mdk装载这个bin文件生成最后的程序文件,整个过程都会自动完成

现在事情还没开始就遇上一个麻烦事,如何读取数组c文件,因为这个3维数组使用嵌套大括号表示数组层次,连续的0其实都是没标出的,编译器当然明白这些,但是如果自己来做的话就要自己解析这个数组c文件到内存里,这个也不是一会儿功夫可以搞定的啊

请问谁有这方面的经验,或者有开源的库可以干这个活呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
36条回答
myxiaonia
2020-01-05 06:01
本帖最后由 myxiaonia 于 2016-7-28 11:46 编辑
styleno1 发表于 2016-7-28 11:19
我试了,1024字节数组。


真的可以  不好意思啊我刚才没看map  我给你比较看看

  1.     Total RO  Size (Code + RO Data)                52436 (  51.21kB)
  2.     Total RW  Size (RW Data + ZI Data)            133016 ( 129.90kB)
  3.     Total ROM Size (Code + RO Data + RW Data)      58152 (  56.79kB)
复制代码
使用内存数组,arm压缩存储超大数组,可以看到rw实际只增加了5KB,这个结果相当不错了,难以置信


现在的问题是如何在解压这个数组时把我需要的其中一些段提取出来,因为实际我只有64kram,我故意设置大内存才得出结果

我看arm链接器的rw压缩算法可能会用到lz77算法,此系列的算法基本都需要回溯,我必须指定只适用rle算法,再看看能压缩到多大

一周热门 更多>