内联x86 asm在C中除以2

时间:2015-03-12 03:35:21

标签: assembly inline-assembly

我试图用C

转换某些东西
int div
div = div/2;

使用右移(SAR)进入内联ATT x86装配

asm("sar %0" : "=r"(div));

但我无法让它发挥作用。 任何见解将不胜感激

1 个答案:

答案 0 :(得分:3)

通过使用=r,您告诉编译器div中的现有值被asm覆盖。要告诉它你在asm中读取和写入div的值,请使用+r(参见https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html):

asm("sar %0" : "+r"(div));