Вот мой код:
void Graph::PutPixel(DWORD x, DWORD y, DWORD c)
{
__asm
{
Mov Eax, y
Mov Ebx, _width
Mul Ebx
Add Eax, x
Shl Eax, 2 // Multiply by four
Add Eax, _buffer
Mov Edi, Eax
Mov Eax, c
StosD
}
}
Где _buffer и _width - члены класса Graph:
private:
DWORD _width;
DWORD* _buffer;
не работает; Я получаю значение 0 от обеих переменных, но на самом деле они имеют некоторые другие значения.
Я могу это исправить, скопировав переменные класса в локальные переменные и используя их:
void Graph::PutPixel(DWORD x, DWORD y, DWORD c)
{
DWORD bufAddr = (DWORD)_buffer;
DWORD w = _width;
__asm
{
Mov Eax, y
Mov Ebx, w
Mul Ebx
Add Eax, x
Shl Eax, 2 // Multiply by four
Add Eax, bufAddr
Mov Edi, Eax
Mov Eax, c
StosD
}
}
В чем проблема с прямым использованием? Возможно ли это?