Как я могу устранить ошибку C2400 в Visual Studio с помощью переменной ptr?C++

Программы на C++. Форум разработчиков
Anonymous
Как я могу устранить ошибку C2400 в Visual Studio с помощью переменной ptr?

Сообщение Anonymous »

Я программирую на C++ с использованием сборки x86, интегрированной с блоком _asm {}, но постоянно сталкиваюсь с той же ошибкой C2400.
Я пытаюсь вычислить первые n простых чисел.
Ошибка: ошибка синтаксиса ассемблерного кода C2400, вставленная во «второй операнд»; найдено "PTR"
Проблема находится в строке 2.

Код: Выделить всё

void primosx86(int n, vector& 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, но, несмотря на то, что он предложил внести изменения в код, я оказался в том же месте и получил ту же ошибку.


Подробнее здесь: https://stackoverflow.com/questions/781 ... called-ptr

Вернуться в «C++»