完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我要说的是,我已经多年没有在装配工作了,我做的小事情是为了一个班级项目。我在C中做所有的编码,我现在正在看汇编,因为我得到了将近2US中断等待时间!我正在解码曼彻斯特的一条小溪。我有一个结构数组,以保持所有相关联的变量干净。这是一个数组,因为我有两个同时的曼彻斯特流,用“DUT”表示。第一次进入函数时,我检查我的状态(指示当前包的位)。为此,我使用:分解是22条指令!!!!然后,我必须根据调用的流清除一个中断,所以我使用:dissambly只有3行,这是合理的。此后,还有一些其他的中断清理调用,我使用dissambly是39行来增加状态变量!!!!不应该用39个指令来增加一个变量!发生了什么事????
|
|
相关推荐
7个回答
|
|
什么编译器?什么版本?什么模式?(免费?)什么优化水平?
|
|
|
|
嗯,这些变量是如何定义的?你是否启用了优化?
|
|
|
|
因此,它计算结构元素的地址两次…
|
|
|
|
为了得到你的曼切斯特状态,它得到你的DUT并乘以你的Pasl变量的大小,它是0x41A。它是32×32乘法(不知道为什么是32×32,但是PelHAPSIT可以在更高的优化级别上被优化)。然后它增加了曼切斯特状态的偏移量。0x408(32位加法,我也不知道为什么),然后把所有的东西添加到PAS数组的地址(0x16ac)。对于增量,它可能扩展它,并且它计算地址两次(左边一次,右边一次)。我猜如果你把优化打开,它就好了。t使用16x16乘法运算,并较好地处理增量,因此代码更少。
|
|
|
|
更好的调试?
|
|
|
|
在调试/跟踪的目的上,我现在有了一些优化。显然,程序集将比优化过程更臃肿。但是,我并没有期待39行来增加一个变量!最终项目将得到优化。我的目标是在不进行优化的情况下足够快地编写它,因此在启用优化的情况下我有大量的空闲时间。帽子是每个16383个元素,变量类型,char。自从我在计算机上切开编码牙齿,我就不知道使用数组和结构时正在进行背景地址计算。使用多核64位GHz处理器,39行汇编代码并不是什么大问题。我开始在我的嵌入式代码中使用结构和数组来清理变量。但是,在单独声明的变量上使用它似乎会带来巨大的速度损失。大约快50%,但不如我想的那么好。现在我知道了,关于结构/数组,我认为我最好的做法是改变为谨慎的变量。
|
|
|
|
你不认为有16位CPU处理32位大型号的地址不会有成本吗?你需要大内存模型吗?如果这样,您可以声明内存项附近。或者用更小的模型来宣布更大的项目。至于优化器,你期望它做什么?你应该能够打开它,看看它的代码行。这就像玩游戏机上的游戏。然后玩一个便宜的。你不能将分辨率设置为最大,帧率为100,32位颜色,然后抱怨游戏播放缓慢。你的问题不是结构,它是大的,没有优化。如果需要更多的速度,则可以构造两个结构A和if语句。如果只是两个项目,你可以有两个指针。代码大小和复杂性与速度有关。
|
|
|
|
只有小组成员才能发言,加入小组>>
5244 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3214 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2261 浏览 5 评论
781浏览 1评论
676浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
602浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
684浏览 0评论
581浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 07:19 , Processed in 1.882058 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号