Microchip
直播中

柳杨

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

怎么将C优化为ASM?

我有一个中断程序,我正在尝试修剪。我在一个数组中检查一个位,并根据那个位值设置一个输出LED。我写了下面一行,认为它可以很好地翻译成ASM:让我非常沮丧的是,它突然变成了下面的ASM代码:我知道0x20是ledArray[1]的地址,而p是传递的bitMask参数。优化它。任何指导将不胜感激!也许一个好的开始是了解什么是PCSTACKCOMM…这就是我的绊脚石。

回帖(5)

李维兴

2019-11-1 11:22:11
试着用这个替换:&编辑。他的代码较短,但有一个小故障,这是可以忽略不计的LED控制。
举报

张珍岚

2019-11-1 11:35:55
谢谢你们的建议,你们两个!这就相当多地清理了汇编代码。有趣的是Massier-C如何制造更干净的ASM。对于记录,以下是ASM如何清理:由于前一个ANDWF指令已经设置了状态寄存器的零位,所以仍然存在冗余IORLW 0x0指令,但我猜乞丐不能选择。
举报

李维兴

2019-11-1 11:51:55
如果你的毛病没问题,试试试试。
举报

李天竹

2019-11-1 12:00:50
如果您确实想要使用数组(即,索引并不总是ne 1,而是会改变,例如“ledArray”),那么这将产生完全不同的代码。
举报

更多回帖

×
20
完善资料,
赚取积分