您尚未登录。

#1 Re: RISC-V » RISC-V代码密度相比Cortex-M差距明显 » 2021-10-30 19:56:52

提一点,GCC的rw段在binary里是不压缩的,启动时做全量拷贝。Keil的话,无论compiler V5还是V6,都会压缩rw段,__main函数里会调__decompress做解压,IAR/Segger/Green Hill/Ti的工具链也会做类似优化。考虑到多数全局变量只需要做部分初始化(比如一个大描述符中的个别初始化字段),rw段里是有非常多的zeros可以被优化掉的。如果固件里的rw segment size不小,工具链不做压缩带来的size overhead会非常多。楼主可以在AC5/AC6的link flag里添加 --datacompressor off 再和GCC固件比对下体积。

我做过调研,根据rw段的实际使用情况,仅使用zero-rle压缩就可以做到7%~20%的压缩比。
也就是说,假设rw segment有10K,做rw压缩可以减少固件7~9K的size。对mcu firmware来说,这个收益是相当可观的。

GCC Toolchain没有集成rw压缩功能,但是可以插postbuild流程,结合重写的startup load code手动实现。

#2 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » X86 指令地址为什么没有对齐?是为了节省空间,还是有其他原因? » 2018-09-04 18:04:28

因为x86指令集在设计的时候就没有固定长度吧,印象中是这样。微架构上还需要一个译码环节,将CISC风格的机器码转换成规整的RISC风格指令执行,此时的指令应该就是定长并且对齐,方便处理器前端的取指了

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn