请教关于C++中嵌入汇编语句出错的问题
我自己定义一个清零4字节整数倍大小的内存的函数在VC上遇到一个奇怪的错误
void ZeroMem4B(void* p, unsigned int size)
{
_asm
{
mov eax, size //实际是这里有问题
shr eax, 2
mov edi, p //这里报错 error C2400: inline assembler syntex
//error in 'second operand'; found 'new line'
mov ecx, eax
mov eax, 0
rep stosd
}
}
我改成下面的函数体就没问题了,为什么?纳闷阿
void ZeroMem4B(void* p, unsigned int size)
{
unsigned int s = size; //加了这句
_asm
{
mov eax, s //修改
shr eax, 2
mov edi, p
mov ecx, eax
mov eax, 0
rep stosd
}
}
我定义了另外一个函数却没问题
float _fastsqrt(float f)
{
float fResult;
_asm
{
mov eax, f //这里也是直接使用参数,但是没问题
sub eax, 0x3f800000
sar eax, 1
add eax, 0x3f800000
mov fResult, eax
}
return fResult;
}
麻烦大虾解惑阿