如何读取数组的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 09:32
汇报一下进展,感谢楼上各位兄弟标志
基本完成预期目标,首先使用tcc用rle算法生成初步压缩数组,最大会在40多k大小,已经可以容纳在64k里,但是原程序内存占用好大,还是不能直接放在工程里,新建一个工程容纳这些数组然后选中需要的其中一组,通过内存共享的方式传递参数
把这个项目生成的bin文件(不到10k)包含到原程序,复位后立刻调用,准备好选中数组后再调用__main

现在这样的做法只能使用绝对定位方式,原因是mdk貌似无法生成位置无关代码,不知道为何,我实验结果 是库文件生成代码不是位置无关的

一周热门 更多>