PIC单片机用 PICC 9.8 编译代码不能优化

PIC单片机用 PICC 9.8 编译代码不能优化,第1张

这跟破解版或者购买版都没关系,8.05以后后的版本编译出来的程序全部都是加了一个 .as汇编文件段(8.05不会加这个)。

如果你的程序只有几行,那肯定能看出大小差别。而且有可能这个汇编文件段还比你的程序大

如果你的程序很长很长,这不会看出来区别,可能还会因为程序内其他地方优化得好而看不出差别来。

试用版也是有优化代码的。

如果你非要优化,推荐用汇编来直接写程序,人脑来优化程序怎么也比电脑优化程序要好。

补充:你以为新的就一定是好的么?现在好多做计算机网络的人还专门用命令行界面而不用视窗界面;有些工厂在要求稳定系数高的场合现在还使用着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):

堆是用于存放进程运行中被动态分配的内存段,它的大

pic线路优选的用法如下:

1、运行picpick程序,单击左上角的“文件”按钮。

2、在d出窗口的右侧列表单击一种截图类型。

3、在功能区中进行相关的设置。

4、接着再单击“文件”菜单,出来的列表将鼠标移动到“另存为”,点击一种图片格式。PicPick是一款截取全屏、活动窗口、指定区域、固定区域、手绘区域功能,支持滚动截屏,屏幕取色,支持双显示器,具备白板、屏幕标尺、直角坐标或极坐标显示与测量,具备强大的图像编辑和标注功能的软件。截图可以保存到剪贴板、自动或手动命名的文件(png/gif/jpg/bmp)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11521779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存