【发布时间】:2017-12-27 20:20:50
【问题描述】:
我正在尝试使用内联汇编在 C 中编写向左旋转操作,如下所示:
byte rotate_left(byte a) {
__asm__("rol %0, $1": "=a" (a) : "a" (a));
return a;
}
(其中字节被定义为无符号字符)。
这会引发错误
/tmp/ccKYcEHR.s:363:错误:“rol”的操作数大小不匹配。
这里有什么问题?
【问题讨论】:
-
你在哪里定义
byte? -
使用 AT&T 的语法 src 和 destination 是相反的。也许你的意思是
"rol $1, %0" -
godbolt.org/g/z6Qof7 不需要内联汇编(至少对于 gcc 和 clang)
标签: c x86 inline-assembly att