gpt4 book ai didi

c++ - 括号中的 g++ 内联汇编不匹配

转载 作者:行者123 更新时间:2023-12-03 07:00:16 25 4
gpt4 key购买 nike

g++ 向我提示以下代码中缺少括号:

                                              1                   2 3
v v v
__asm__ volatile("inb %1, %0" : : "=a" (result) : "Nd" (portnumber) );
^ ^ ^
1 2 3
如您所见,括号是匹配的,并且有三个左括号和三个右括号。
还要了解更多信息,我正在关注 youtube 教程

最佳答案

你有一个额外的 :在输出 之前,所以你最终在输入部分得到了你的输出声明。 以及该错误的原因:您的输入操作数声明,其中编译器需要 clobber 列表。 clobber 列表只能包含字符串文字(寄存器名称和 "memory" 和/或 "cc" 1),而不是 () .

    __asm__ volatile("inb %1, %0" 
: "=a" (result) // output
: "Nd" (portnumber) // input
// : "memory" // optional, clobber list
);
您可能想要一个 "memory" clobber 列表以确保这是有序的。内存访问。或者不,如果你确定它不需要。
脚注 1:x86 上的 asm 语句隐含地破坏了条件代码, "cc" .如果您愿意,可以将其用于文档。但你不想要它,因为 inb不接触 EFLAGS。

关于c++ - 括号中的 g++ 内联汇编不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64762476/

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