如何使用名为 ptr 的变量解决 Visual Studio 中的 C2400 错误?

问题描述 投票:0回答:1

我正在使用与块 _asm {} 集成的 x86 汇编语言进行 C++ 编程,但我不断遇到相同的错误 C2400。 我正在尝试计算前 n 个素数。

错误:错误 C2400 汇编代码语法错误插入“第二个操作数”;找到“PTR”

问题出在第 2 行。

void primosx86(int n, vector<int>& primos) {
    primos.resize(n);               
    int* ptr = primos.data();       

    __asm {
        mov ecx, n
        lea edi, [ptr]
        mov edi, [edi]
        mov esi, 2
        outer_loop:
        mov eax, esi
            mov ebx, 2
            inner_loop :
            cmp ebx, eax
            jge is_prime
            mov edx, 0
            div ebx
            cmp edx, 0
            je not_prime
            inc ebx
            jmp inner_loop

            is_prime :
        mov[edi], eax
            add edi, 4
            dec ecx
            jz finished
            not_prime :
        inc esi
            jmp outer_loop

            finished :

    }
}

我询问了chatGPT,但即使它建议修改代码,我最终还是在同一个地方并收到了相同的错误。

c++ visual-c++ x86 inline-assembly
1个回答
3
投票

PTR
是MASM中的保留字。为您的变量选择一个不同的名称。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.