# CodeSize **Repository Path**: ufbycd/code_size ## Basic Information - **Project Name**: CodeSize - **Description**: ARM和RISC-V架构代码密度对比 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-23 - **Last Updated**: 2024-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ARM和RISC-V架构代码密度对比 ## 动机 看到SEGGER官方BLOG一篇非常有问题的[编译器输出目标文件大小对比文章](https://blog.segger.com/code-size-closing-the-gap-between-risc-v-and-arm-for-embedded-applications/) ## 实现 * 使用zig作为编译器以消除不同编译器所用的C库不同导致对测试的影响 * 目标文件大小的显示使用`binutils`软件包的`size`工具,故测试前需要将其安装好 ## 编译源码并显示目标文件大小 ### ARM Cortex-M23 指令集:ARMv8m (含单精度浮点单元) ``` $ zig build size --release -Dtarget=arm-freestanding-gnueabi -Dcpu=cortex_m23 text data bss dec hex filename 28828 16 0 28844 70ac /home/chenss/workspace/zig/code_size/zig-out/bin/code_size ``` ### RISC-V SiFive E34 指令集:I A C F M (含单精度浮点单元) ``` $ zig build size --release -Dtarget=riscv32-freestanding-gnueabi -Dcpu=sifive_e34 text data bss dec hex filename 31326 232 0 31558 7b46 /home/chenss/workspace/zig/code_size/zig-out/bin/code_size ``` ### 说明 * 目前Zig对ARM架构是最高的一级支持,对RISC-V32是最低的四级支持,所以有可能在语言层面ARM架构的优化要比RISC-V32的好 * 目前Zig版本0.12.0编译指令集ARMv7m时时出现编译错误,所以让人比较感兴的Cortex-M3/M4暂时无法对比 * 修改`-Dcpu`选项即可查看其它CPU下的目标文件大小,使用这个命令可以查看Zig支持的CPU:`zig targets`