gpt4 book ai didi

c - 为什么编译汇编时出现奇数操作数错误?

转载 作者:行者123 更新时间:2023-12-04 04:01:41 24 4
gpt4 key购买 nike

学习汇编,阅读msp430的BIT指令。尝试编译此代码时:

int main (void)
{
while(1){
__asm__("BIT R2, 3");
}

return 0;
}

它说:错误:奇数操作数:-3

然而,当编写 __asm__("BIT.B R2, 3"); 时,它会起作用。

有人可以解释一下吗?

最佳答案

指令 BIT R2, 3 对目标地址使用符号模式(即程序计数器的偏移量)。如果您想使用立即数 3,则必须使用 BIT R2, #3

BIT 而不是 BIT.B 失败的原因是因为 BIT 执行字操作而您使用的是奇数地址这是非法的。在 MSP430 中,字操作必须字对齐(即偶数地址)。字节操作可以对任何字节地址进行操作,奇数或偶数。

如果您阅读所用 MCU 系列的用户指南,您可以获得非常详细的信息。例如,对于 MSP430x2xxx 系列,您将阅读 https://www.ti.com/lit/ug/slau144j/slau144j.pdf文档、第 3 章或第 4 章,具体取决于您的 MCU 是否具有更新的 20 位地址内核。

关于c - 为什么编译汇编时出现奇数操作数错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62960146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com