如果你的程序只有几行,那肯定能看出大小差别。而且有可能这个汇编文件段还比你的程序大
如果你的程序很长很长,这不会看出来区别,可能还会因为程序内其他地方优化得好而看不出差别来。
试用版也是有优化代码的。
如果你非要优化,推荐用汇编来直接写程序,人脑来优化程序怎么也比电脑优化程序要好。
补充:你以为新的就一定是好的么?现在好多做计算机网络的人还专门用命令行界面而不用视窗界面;有些工厂在要求稳定系数高的场合现在还使用着ROM都没有的8031单片机,甚至是比8086还早的Z80芯片做控制。 NXP新研发出来的ARM芯片从来不敢在欧美卖,先卖到中国来,因为他们知道这肯定有bug,除问题在欧美是要赔个倾家荡产的,在中国出问题,那赔的就简单多了。而且中国人喜欢用新的,不管是否会有bug
1. 设置堆栈空间大小在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。一般默认的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。
这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可在编译的map文件中查看RAM资源占用的情况。
若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。
当工程中使用了malloc动态分配内存空间时,这时分配的空间就为堆的空间。所以若默认的堆空间大小不满足工程需求时,就需要手动调整堆空间的大小。
1. 直接在启动文件中修改堆栈空间的大小,如图1所示的位置;
2. 打开启动文件,点击下方Configuration Wizard,可在Option的设置框中设置堆栈空间的大小。
2. 相关理论补充
bss段:
bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。
bss是英文Block Started by Symbol的简称。
bss段属于静态内存分配。
data段:
数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。
数据段属于静态内存分配。
text段:
代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。
这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。
在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap):
堆是用于存放进程运行中被动态分配的内存段,它的大
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)