Здравствуйте, Bell, Вы писали:
B>Здравствуйте, gnan, Вы писали:
B>...
B>Ну для начала попробуй сделать конструкто не-inline — вынеси его определение из тела класса в cpp-файл.
void MyASMCode(int a, int b){
asm mov dx,a //int aasm mov dl,b //int b
//...
};
class MyClass{
MyClass(int a, int b){
MyASMCode(int a, int b);
};
~MyClass(){};
};
Re: inline assembly not allowed in inline and template funct
А теперь вопрос — зачем этот mov вообще ? Да еще с 16-битным регистром ?
G>в идеале хотелось бы следующее: G>и параметры int a, int b использовать в asm-операциях
class MyClass{
public :
MyClass(int a, int b){
__asm {
mov eax,a;
mov edx, this
mov [edx],eax; // это может быть совсем неверно !!!
mov ebx, b;
mov [edx+ 4],ebx; // и это тоже может быть совсем неверно !!!
}
};
~MyClass(){};
int m_a, m_b;
};
int _tmain(int argc, _TCHAR* argv[])
{
MyClass m(3,8);
return 0;
}
With best regards
Pavel Dvorkin
Re[2]: inline assembly not allowed in inline and template fu
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, gnan, Вы писали:
G>>при этом возникает ошибка: G>>inline assembly not allowed in inline and template functions
PD>Что за компилятор ?
bc 3.1
void MyASMCode(int a, char b){
asm mov dx,a
asm mov dl,b
};
class MyClass
{
MyClass(int a, char b){
MyASMCode(a, b);
}
~MyClass(){};
};
отл
вот так работает
внимание на функцию void MyASMCode(int a, char b):
dx(2 байта) состоит из dl и dh (по 1 байту)
соответственно и выполнять операции нужно с учетом этого char(1 байт), int(2 байта)
void MyASMCode(int a, char b){
asm mov dx,a // верно asm mov dl,b // верноasm mov dx,b // не верноasm mov dl,a // не верно
};
вотъ
Re[2]: inline assembly not allowed in inline and template fu
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, gnan, Вы писали:
B>...
B>Ну для начала попробуй сделать конструкто не-inline — вынеси его определение из тела класса в cpp-файл.
а все таки есть вариант, чтобы функция void MyASMCode() была внутри класса MyClass ??
а то какая то фигня получается с точки зрения ООП =)
Re[3]: inline assembly not allowed in inline and template fu
Здравствуйте, gnan, Вы писали:
PD>>Что за компилятор ?
G>bc 3.1
Э, батенька, так с этого и надо было начинать. Кто же мог подумать, что ты для MS-DOS пишешь...
G>внимание на функцию void MyASMCode(int a, char b): G>dx(2 байта) состоит из dl и dh (по 1 байту) G>соответственно и выполнять операции нужно с учетом этого char(1 байт), int(2 байта)
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Э, батенька, так с этого и надо было начинать. Кто же мог подумать, что ты для MS-DOS пишешь...
да не со зла я
не моя воля под дос писать)))
G>>внимание на функцию void MyASMCode(int a, char b): G>>dx(2 байта) состоит из dl и dh (по 1 байту) G>>соответственно и выполнять операции нужно с учетом этого char(1 байт), int(2 байта)
PD>Несомненно
G>>[ccode] G>>void MyASMCode(int a, char b){ G>> asm mov dx,a // верно G>> asm mov dl,b // верно G>> asm mov dx,b // не верно
PD>Еще бы
G>> asm mov dl,a // не верно
PD>То же самое.
ну эт я так, для последующих поколений
а то задолбался на форумах натыкаться на "все заработало, ничего не нада" и все, никаких решений