为什么这段代码导致整数溢出?

时间:2014-09-16 15:16:10

标签: c++ inline-assembly

我一直在尝试在线组装中的基本算术函数一切正常,除了引起整数溢出的鸿沟,我不明白为什么。

这是我的代码:

int a = 10;
int b = 2;
int c = 0;

int asmdivide(void);

int main(int argc, char* argv[])
{
    asmdivide();
}

int asmdivide()
{
    __asm

    {
        push dword ptr[a]
        push dword ptr[b]
        pop edx
        pop eax
        idiv edx // integer Overflow
        push ecx
        pop dword ptr[c]
    }
    return c;
}

我得到的错误是:

Unhandled exception at 0x010F13EC in Divide Test.exe: 0xC0000095: Integer Overflow.

0 个答案:

没有答案