gpt4 book ai didi

c - avr内联汇编错误: impossible constraint

转载 作者:行者123 更新时间:2023-11-30 15:34:04 26 4
gpt4 key购买 nike

#include <avr/io.h>

int main(void){

asm volatile("ldi r16, %0\n\t"
"out %1, r16\n\t"
"ldi r16, %0\n\t"
"out %2, r16\n\t"::"M" (0xff),"I" (_SFR_IO_ADDR(DDRB)),"I" (_SFR_IO_ADDR(PORTB)));

while(1) {
asm volatile("cbi %0, %1\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"sbi %0, %1\n\t"::"I" (SFR_IO_ADDR(PORTB)), "M" (0xff));
}
}

编译时:错误:不可能的约束指针设置到asm语句位置:11-9 (asm volatile("cbi %0, %1\n\t")

但是为什么呢?

最佳答案

您缺少 SFR_IO_ADDR(PORTB) 上的前导下划线,因此它被编译为对返回整数的外部函数的调用。如果您启用了警告,您会看到以下内容:警告:函数“SFR_IO_ADDR”的隐式声明

关于c - avr内联汇编错误: impossible constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456661/

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