游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1171|回复: 2

请教关于C++中嵌入汇编语句出错的问题

[复制链接]

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-4-2 20:12:00 | 显示全部楼层 |阅读模式
我自己定义一个清零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
    }
}

我定义了另外一个函数却没问题
inline float _fastsqrt(float f)
{
        float fResult;
        _asm
        {
                mov eax, f     //这里也是直接使用参数,但是没问题
                sub eax, 0x3f800000
                sar eax, 1
                add eax, 0x3f800000
                mov fResult, eax
        }
        return fResult;
}


麻烦大虾解惑阿

6

主题

396

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2007-4-2 21:32:00 | 显示全部楼层

Re:请教关于C++中嵌入汇编语句出错的问题

size是关键字呀,大哥

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2007-4-2 23:06:00 | 显示全部楼层

Re:请教关于C++中嵌入汇编语句出错的问题

果然。。。不过C++里面没有这个关键字阿

size是汇编里面的关键字?我对汇编不是很了解,只知道一些常用的指令和寻址方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-13 00:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表