Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
ga-mb-it
0 / 0 / 0
Регистрация: 14.09.2011
Сообщений: 4
#1

Помогите с ошибкой. Ассемблерные блоки - C++

14.09.2011, 19:51. Просмотров 436. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста разобраться с ошибкой

Есть header файл с описанием объекта, привожу часть кода
class CBrain {
public:
CBrain( void );
virtual ~CBrain( void );
void SetMemDepth( UINT nMem1, UINT nMem2, UINT nMem3 );
........................................
protected:
........................................
UINT nMemDepth1; // Глубина памяти Mem1 нейрона.
UINT nMemDepth2; // Глубина памяти Mem2 нейрона.
UINT nMemDepth3; // Глубина памяти Mem3 нейрона.

UINT nMemMask1; // Маска памяти Mem1 нейрона.
UINT nMemMask2; // Маска памяти Mem2 нейрона.
UINT nMemMask3; // Маска памяти Mem3 нейрона.
};


И срр файл с описанием методов вышеописанного обекта

void CBrain::SetMemDepth( UINT nMem1, UINT nMem2, UINT nMem3 ) {
__asm {
// Блок обработки данных для Mem1.
mov ebx, this
bsr ecx, nMem1
add ecx, 2
and ecx, 0xfe
mov [ebx].nMemDepth1, ecx
mov [ebx].nMemMask1, ecx

mov eax, 0xffffffff
shl eax, cl
not eax

mov dword ptr [ebx].nMemMask1, eax
........................................
}
}


В строке выделенным красным цветом компилятор сообщает об ошибке:
(60) : error C2410: 'nMemMask1' : ambiguous member name in 'first operand'
Никак не могу понять в чем там проблема ведь в переменную nMemDepth1 все благополучно сохраняется а в nMemMask1 не могу сохранить результат и описаны обе эти переменные одинаково.

П.С. Когда строку с ошибкой комментирую то проект благополучно компилируется без ошибок, а с этой строкой ни как

Добавлено через 21 минуту
Какая то чудесия получается, если я переменную nMemMask1 переименовываю например в nMemMask1A или nMemMask, то все компилируется без ошибок значит проблема в имени. Если кто знает отпишитесь пожалуйста, почему так получается?

Добавлено через 20 минут
Все нашел ошибку у меня была объявлена статическая переменная в другом объекте с тем же именем, может кому пригодится в данной ситуации обращение на ассемблере к переменным объекта надо было строить с указанием имени объекта

Вот правильный вариант СРР файла описанного выше
void CBrain::SetMemDepth( UINT nMem1, UINT nMem2, UINT nMem3 ) {
__asm {
mov ebx, this

// Блок обработки данных для Mem1.
bsr ecx, nMem1
add ecx, 2
and ecx, 0xfe

mov dword ptr [ebx]this.nMemDepth1, ecx

mov eax, 0xffffffff
shl eax, cl
not eax

mov dword ptr [ebx]this.nMemMask1, eax
................................................
}
}


Извините что запачкал форум темой в которой задал вопрос и сам на него ответил, надеюсь что может кому эта информация поможет
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2011, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите с ошибкой. Ассемблерные блоки (C++):

Ассемблерные вставки на Fasm - C++
Возможно ли в C++ ассемблерные вставки писать на Fasm?

Умножить две квадратные матрицы, используя ассемблерные вставки - C++
Зравствуйте! Требуется написать программу умножения двух квадратных матриц используя ассемблерные вставки и сравнить с обычным умножением в...

Помогите с ошибкой - C++ Builder
Вообще в проге при нажатии ВЛЕВО и ВПРАВО жёлтая картинка должна плавно двигаться, но почему то он делает тодин шаг только после...

Помогите разобраться ошибкой Convert - C++ Builder
Не найден псевдоним "Convert" что делать? Может какой нибудь класс надо добавить?

Разбить строку на блоки, а затем эти блоки на отдельные слова - C++ Builder
...доброго времени суток, уважаемые форумчане! Возникла задача - разбить строку на блоки, а затем эти блоки на отдельные слова. Не могу...

Ассемблерные вставки - Visual C++
Здрасти всем.Нужна помощь.Объявления переменных на си,основная логика на ассемблере.Нужно считать с клавиатуру символы,а потом вывести на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 19:51
Привет! Вот еще темы с ответами:

Помогите с ошибкой. - C++
Почему на экран не выводится enterSequence ? Просто программа прекращается на вводе n . #include <iostream> #include <stdio.h> ...

Помогите с ошибкой - Delphi
Кто знает, что с этим можно сделать: Project Timer.exe raised exeption class EInvalidOp with message "Invalid floating point operation"....

Помогите с ошибкой - Delphi
var Form1: TForm1; tablica:array of array of string; kolichestvo:integer; procedure TForm1.Button1Click(Sender: TObject); ...

Помогите с ошибкой - Delphi
Здравствуйте,При написании кода вышла ошибка,в чем проблема? edit15.Text := CheckListBox1.Checek; ИЗ выделенного галочкой строки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru