用于在 C 中除以 2 的内联 x86 asm
Inline x86 asm for dividing by 2 in C
我正在尝试转换 C 中的内容
int div
div = div/2;
使用右移 (SAR) 进入内联 ATT x86 程序集
asm("sar %0" : "=r"(div));
但我无法让它工作。
任何见解将不胜感激
通过使用 =r
,您告诉编译器 div 中的现有值已被 asm 覆盖。要告诉它您正在 asm 中读取和写入 div 的值,请使用 +r
(请参阅 https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html):
asm("sar %0" : "+r"(div));
我正在尝试转换 C 中的内容
int div
div = div/2;
使用右移 (SAR) 进入内联 ATT x86 程序集
asm("sar %0" : "=r"(div));
但我无法让它工作。 任何见解将不胜感激
通过使用 =r
,您告诉编译器 div 中的现有值已被 asm 覆盖。要告诉它您正在 asm 中读取和写入 div 的值,请使用 +r
(请参阅 https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html):
asm("sar %0" : "+r"(div));