我写的程序大概也就是几KB的样子,然后通过反汇编查看也确实是1.2KB左右,可是为什么生成的bin文件却33KB还多,而且在正常的机器码之后全是00,这是如何造成的?我是在linux下用arm-linux-gcc编译的
因为生成的bin文件是根据芯片容量来定的呀,看下你选的芯片是不是flash容量36k,那么出来的结果就和你现在生成的33k多很接近了。
生成bin文件时,会将没有用到的区域填0或者1,出来的容量和芯片flash一致。
如果生成hex文件,还会稍微再大一些。
空的地方也是占字节的,不必理会就好
如果介意的话,不同的平台表示空的指令字不同,有的是00 有的是FF,你可以参考手册查看,更改成默认的空指令字可以加快烧写速度。
用作烧写的部分,后面无关的部分其实都是站位数据。程序运行不到,不必理会。
1. C语言翻译成汇编本身就会多出很多指令。一条C可能是几条指令
2.全局变量等,也就是ZI段会直接占用BIN很多空间。这段数据段被初始化为0。