2013-04-01 29 views
0

我试图摆脱寄存器中的低位(在做popcnt之前),但似乎无法获得指令正确的语法。我想清除%r8d的值中较低的%rdx位。搜索告诉我计数参数应该是一个8位寄存器,所以目前我在:“后缀或操作数无效'shr'”

shrl %dl, %r8d 

GAS抱怨过这个问题,我真的不知道确切的参数应该是什么,如果这些都是错误的。

+1

没有BMI2,GPRS的变量的变化只能通过'cl'。 Haswell将拥有BMI2。 – harold

回答

1

据英特尔PRM,你应该使用%cl代替%dl

+0

......好吧,这是不直观的,猜测我不应该略过那本手册。谢谢。 – millimoose