我正在使用 SDCC 为 STM8 微控制器进行编译。编译以下文件会导致看似不必要的div
指令——这在 STM8 上非常慢。
char a[1];
char b;
void foo() __interrupt(1) {
char c = a[0];
b = c >> 0;
}
void main() {
}
sdcc -mstm8 file.c
在以下程序集中编译结果:
_foo:
clr a
div x, a
ld a, _a+0
ld _b+0, a
iret
该功能似乎按预期工作,但是我不明白为什么需要前两条指令。