int32_t乘以ATTiny2313 clobbers变量

时间:2015-03-14 17:06:27

标签: c avr-gcc

我被ATTiny2313上的一些变量所困扰。逐句评论我的代码行,罪魁祸首似乎是这个函数的乘法:

int32_t bmp085_b5(int32_t ut) {
    int32_t x1, x2;
    x1 = (ut - (int32_t) ac6) * ((int32_t) ac5) >> 15;
    x2 = ((int32_t) mc << 11) / (x1 + (int32_t) md);
    return x1 + x2;
}

评论x1 = ...行(并将对x1的引用更改为ut),或将乘法操作更改为添加操作可修复变量clobbering。具体而言,mc的高位字节为零。我在这里错过了什么?这可能是非常非常明显和/或愚蠢的事情,但我没有看到它......

变量ac5ac6的类型为uint16_tmcmdint16_t

0 个答案:

没有答案