Microchip
直播中

韩俊

7年用户 183经验值
私信 关注
[问答]

使用结构时非常臃肿的装配

我要说的是,我已经多年没有在装配工作了,我做的小事情是为了一个班级项目。我在C中做所有的编码,我现在正在看汇编,因为我得到了将近2US中断等待时间!我正在解码曼彻斯特的一条小溪。我有一个结构数组,以保持所有相关联的变量干净。这是一个数组,因为我有两个同时的曼彻斯特流,用“DUT”表示。第一次进入函数时,我检查我的状态(指示当前包的位)。为此,我使用:分解是22条指令!!!!然后,我必须根据调用的流清除一个中断,所以我使用:dissambly只有3行,这是合理的。此后,还有一些其他的中断清理调用,我使用dissambly是39行来增加状态变量!!!!不应该用39个指令来增加一个变量!发生了什么事????

回帖(7)

陈晨

2019-9-10 07:08:35
什么编译器?什么版本?什么模式?(免费?)什么优化水平?
举报

张娜

2019-9-10 07:13:45
嗯,这些变量是如何定义的?你是否启用了优化?
举报

吕聪

2019-9-10 07:47:17
因此,它计算结构元素的地址两次…
举报

李天竹

2019-9-10 07:55:12
为了得到你的曼切斯特状态,它得到你的DUT并乘以你的Pasl变量的大小,它是0x41A。它是32×32乘法(不知道为什么是32×32,但是PelHAPSIT可以在更高的优化级别上被优化)。然后它增加了曼切斯特状态的偏移量。0x408(32位加法,我也不知道为什么),然后把所有的东西添加到PAS数组的地址(0x16ac)。对于增量,它可能扩展它,并且它计算地址两次(左边一次,右边一次)。我猜如果你把优化打开,它就好了。t使用16x16乘法运算,并较好地处理增量,因此代码更少。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分