Я пытаюсь вычислить первые 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 :
}
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... called-ptr