导航:首页 > 源码编译 > 编译后程序块过大不适合

编译后程序块过大不适合

发布时间:2024-11-26 04:49:54

㈠ 本科独立用C语言完成没有优化的C语言编译器属于什么水平

我觉得水平还是很高的,但意义恐怕不大。编译器技术是非常成熟的领域,而且由于应用场景的限
制实时,复杂的算法已经自动出局了,你可选的东西是有限的。编译器可能有很多实现的形
式,虚拟机/解释器/静态编译器 等,也有成熟的开源实现。作为本科生,而非专门研究该分支的学生,应该合理分配自己学习的时间,如果做这个编译器就干
掉了大半年,那计网和OS这些课程该咋办? 

我知道很多人会认为没有做编译器优化特指中段优化,不考虑机器码上的优化比较划水。但编
译器优化是一个很复杂的东西:首先它和你用的IR表示有关而且是强烈耦合,SSA IR基本还
好,有开源代码和文献记载,你想要的都能在网上挖到但这怎么体现你的水平是吧。你
要考虑编译器的性能,尽管编译器的后端优化基本上可以纳入到某种PEabstract interpretation的
范畴中。

要不然你可以通过编写插件的方式白嫖例如visual studio code这类软
件的强大编辑功能,如果你写的不是c compiler,你也可以尽量把语法设计得很像c,这样你又能进一步
白嫖其强大的intellisense code,当然仍然有不少人或者应该说团队达到了这一步,到这里,应该卷死
了99.99%的同行应该毫无问题。

㈡ keil编译后code的大小问题

这个很简单,首先先说最后一条,你涉及到了小数,也就是浮点数的计算,在所有的单片机中,有的带有浮点数计算,比如高级的ARM,有些不带,凡是不带浮点数硬件计算模块的,都要通过语言来处理,浮点数的计算是非常复杂的,所以,最后一个代码最大,当然,结果也最精确。
再说第一个,为什么会最小,因为单片机会先计算 625/10000,你认为结果是多少?0.0625?
错,如果你的res是浮点型的,那么,计算的结果可能是 0.0625,如果你的res是整形的,那么,计算的结果是0,而这里,我敢肯定,你的res是整形的,相当于再计算 tem = res*0,结果是0,也就是说,你第一条是个错误的,得到的结果恒0
而第2条语句,先是计算 res*625,再去计算除法,这样,不会出现常数结果,所以耗时比第一条语句大。
如果你的结果要求比较准确,我建议你用第三条语句,虽然费时间。
另外,你完全可以用查表法来完成,而不必要用浮点数计算,毕竟51单片机的能力比较差。

㈢ 用keil编译51程序时,下面的Program Size: data=47.0 xdata=0 code=3092,是什么意思各个值允许最大是多少

data=47.0 编译器编译后,程序总共需要占用47字节的片内RAM空间。注意这个大小仅仅是累加而已,并未考虑各个块之间的空隙,也就是说实际占用的RAM空间可能多于此数值。
xdata=0 程序未使用片外RAM(映射)空间
code=3092 编译器编译出的各个代码块总共大小为3092字节。与前面的data一样,由于各个块之间可能存在空隙,因此实际生成的代码大小可能多于此数值。

阅读全文

与编译后程序块过大不适合相关的资料

热点内容
复盛制冷压缩机 浏览:979
云服务器共享手机流量 浏览:833
星界边境像素压缩 浏览:454
算法分析与设计二手 浏览:981
学编程如何配电脑 浏览:971
怎么看特征找卡密的加密方式 浏览:524
方舟非官方服务器怎么赚钱 浏览:516
明日之后服务器无效是怎么回事 浏览:270
蛋壳公寓app如何查水电表 浏览:718
ad20库中的51单片机怎么找 浏览:624
阿里云服务器有点卡吗 浏览:215
苹果7如何让app后台运行 浏览:170
耐克app预售产品哪里看 浏览:209
补全算法一年级 浏览:131
evd数据调校软件加密 浏览:442
app听课与微信如何设置分屏 浏览:911
加密的excel怎么撤销 浏览:43
java动态数组初始化 浏览:978
编译后程序块过大不适合 浏览:676
李煜pdf 浏览:848