inline assembly
10 отговора
313 прегледа
inline assembly
Nqkoi znae li kak se vika metod v inline asm izraz.Napimer:
class A{
public:
A(){}
.
.
void MethodA();
};
class C{
public:
C(){}
.
.
.
void Caller();
private:
void MethodC();
A m_A;
int m_nVar;
.
.
};
void C::Caller(){
__asm{
????????????? ;vikane na MethodC()
???????????? ;vikane na MethodA()
}
}
Za dannite v class C go pravq taka:
//nVar = m_nVar
void Caller(){
int nVar;
__asm{
mov ebx, this
mov eax, [ebx].m_nVar
mov nLocal, eax
}
}
class A{
public:
A(){}
.
.
void MethodA();
};
class C{
public:
C(){}
.
.
.
void Caller();
private:
void MethodC();
A m_A;
int m_nVar;
.
.
};
void C::Caller(){
__asm{
????????????? ;vikane na MethodC()
???????????? ;vikane na MethodA()
}
}
Za dannite v class C go pravq taka:
//nVar = m_nVar
void Caller(){
int nVar;
__asm{
mov ebx, this
mov eax, [ebx].m_nVar
mov nLocal, eax
}
}
Re: inline assembly
Sam si otgovarqm no sega vidqh 4e compilatora ne go pozvolqva.
Moje samo ne predefinirani globalni funkcii.
Taka 4e pitaneto mi ve4e e za nqkakuv alternativen na4in
Moje samo ne predefinirani globalni funkcii.
Taka 4e pitaneto mi ve4e e za nqkakuv alternativen na4in
Re: inline assembly
статична функция ( която сигурно по нищо не се различава от глобалната ) дето да взима като допълнителен параметър указател към обекта и да му привиква метода, който те интересува не върши ли работа?
само идея...
само идея...
Re: inline assembly
Da taka stava
Samo 6te vidq dali si zaslujavat razhodite.
vsimul kak 6te se otrazi na skorostta
10x
Samo 6te vidq dali si zaslujavat razhodite.
vsimul kak 6te se otrazi na skorostta
10x
Re: inline assembly
а за какво ти е чак такава скорост? пък знаеш ли дали компилатора няма да го оптимизира по-добре от теб - пък и с по-малко access violations
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Re: inline assembly
Не се занимавай с глупости. Пиши си на С++. Компилатора ще го оптимизира по-добре от теб. Особено ако си с интелския компилатор.
Re: inline assembly
Zasto ne iskash da polzvash code-a generiran ot compilator-a?
Viz tozi code:
__asm{
mov ebx, this
mov eax, [ebx].m_nVar
mov nLocal, eax
Toi e veche po-baven ot originalnia koito ste se generiara ot compilator-a. Poneze tova e method na class C this e veche v ecx ili ebx registrite. Taka che prisvoiavaneto mu na ebx e bezsmislenno i vsastnost izlishna zaguba na vreme :)
Za da izvikash MethodA ste triabva da znaesh v koi register se ochakva da pristigne this pointer-a (obiknovenno ecx ako niamam greshka) i da go zaredish s m_A predi da izvikash method-a.
Viz tozi code:
__asm{
mov ebx, this
mov eax, [ebx].m_nVar
mov nLocal, eax
Toi e veche po-baven ot originalnia koito ste se generiara ot compilator-a. Poneze tova e method na class C this e veche v ecx ili ebx registrite. Taka che prisvoiavaneto mu na ebx e bezsmislenno i vsastnost izlishna zaguba na vreme :)
Za da izvikash MethodA ste triabva da znaesh v koi register se ochakva da pristigne this pointer-a (obiknovenno ecx ako niamam greshka) i da go zaredish s m_A predi da izvikash method-a.
Re: inline assembly
Da ne goworim, che indeksiraneto s [ebx] wednaga sled kato e zareden ebx na predishnata instrukcija wodi do zadyrzhane na konwejerite.
Откажи се от тая работа. Асемблерът има своето (крайно ограничено) място в съвременните програми, но главно за чисто изчислителни задачи - отляво масив числа, отдясно масив числа, взимаш мотиката и смяташ до хоризонта със SSE2 (щото с ММХ не можеш да постигнеш кой знае какво, а нормалния код с плаваща запетая компилатора ще го докара по-добре).
Откажи се от тая работа. Асемблерът има своето (крайно ограничено) място в съвременните програми, но главно за чисто изчислителни задачи - отляво масив числа, отдясно масив числа, взимаш мотиката и смяташ до хоризонта със SSE2 (щото с ММХ не можеш да постигнеш кой знае какво, а нормалния код с плаваща запетая компилатора ще го докара по-добре).
Re: inline assembly
Bez da zaredq qvno this v nqkoi regisrur na stava!
A ina4e povi6ih skorostta s okolo 6% no predi da izpipam asm koda
tozi procent be6e otricatelen:)
Vsi4ko tova pravq s u4ebna cel.No na practika koda trudno 6te se 4ete
osobeno za golemi proecti
A ina4e povi6ih skorostta s okolo 6% no predi da izpipam asm koda
tozi procent be6e otricatelen:)
Vsi4ko tova pravq s u4ebna cel.No na practika koda trudno 6te se 4ete
osobeno za golemi proecti