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

226
15 декабря 2016, 16:15

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

int m = 1000;
std::vector<int> v(m + 1, 1);
__asm
{
  ???
}
Answer 1

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

 void * firstItem = &v[0];

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

mov eax, firstItem  
add eax, позиция в векторе * 4
mov eax, DWORD PTR [eax] - получить в eax значение

или

mov DWORD PTR [eax], 10 - записать значение в вектор
READ ALSO
Run-Time Check Failure #3 - The variable &#39;x&#39; is being used without being initialized

Run-Time Check Failure #3 - The variable 'x' is being used without being initialized

Пишу программуКод, та часть на которой ломается:

238
Считывание строки из файла и дальнейшая работа со следующей по счету строкой

Считывание строки из файла и дальнейшая работа со следующей по счету строкой

Название, может, криво написал, лучше опишу задание

187
Модификаторы функций и их отсутвие в языковом стандарте

Модификаторы функций и их отсутвие в языковом стандарте

Почему в реализации компилятора есть функции с обратным вызовом с модификаторами (например APIENTRY, PASCAL и тд

257
Баг компилятора при компилировании Bullet Physics

Баг компилятора при компилировании Bullet Physics

Сегодня наконец-то понял, как собрать программу! Нажал на кнопку и "БАЦ!", а компилятор жалуется на:

285