Как обратиться к элементу вектора в ассемблерной вставке?

Рейтинг: 1Ответов: 1Опубликовано: 22.11.2014

Как обратиться к элементу вектора в ассемблерной вставке c++ (vs2012)?

int m = 1000;

std::vector<int> v(m + 1, 1);

__asm
{
  ???
}

Ответы

▲ 2

В с++ коде получить указатель на первый элемент вектора

 void * firstItem = &v[0];

Дальше в ассемблере типа

mov eax, firstItem  
add eax, позиция в векторе * 4

mov eax, DWORD PTR [eax] - получить в eax значение

или

mov DWORD PTR [eax], 10 - записать значение в вектор