Как использовать векторы в ассемблерном коде x86 и SSE
Я не знаю, как получить доступ к вектору STL в x86. Я пытался сделать это так, но у меня есть некоторые ошибки.
mov ebx, stl_vector
mov eax, [ebx] ;Here I want to store the first element of the vector
mov edx, [ebx + 4] ; I want to store the second element of the vector
Я хочу сделать то же самое на языке SSE.
Заранее спасибо!
1 ответ
Решение
STL векторы являются объектами. Если вы не знаете точный макет класса, вы не можете получить к ним доступ напрямую. Вы, вероятно, должны передать указатель на массив и размер отдельно для вашей функции сборки, например asm(vector.data(), vector.size())
поэтому компилятор заботится о вещах с ++.