我正在使用与块 _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,但即使它建议修改代码,我最终还是在同一个地方并收到了相同的错误。
PTR
是MASM中的保留字。为您的变量选择一个不同的名称。