阳光飞狐

【阳光飞狐__与财富同行】

 找回密码
 手机注册

手机动态码快速登录

手机号快速注册登录

查看: 1809|回复: 0
打印 上一主题 下一主题

飞狐交易师 (foxtrader) 连结 DLL 的方法 ----- (续)

[复制链接]
跳转到指定楼层
1#
发表于 2019-8-11 16:12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//////////////////////////////////////////////////////////foxfunc.cpp
# ]# j. e9 j7 }. y8 _) J3 S& s# z2 w0 F) P8 j
//FoxFunc.cpp : Defines the entry point for the DLL application.
, `4 b) d* E' i5 b1 }; |//
1 A) V: @( l% K  k8 x4 F9 j" p#include<string.h>
9 m+ ~& D5 X6 |4 r#include<stdio.h>
, Y& c" Z! k. G, K& J#include<io.h>
" I+ q4 V" D+ T0 O7 I# E$ R9 \#include<math.h>
/ X6 o' ^. x2 o5 {* G#include<iostream>( N- W/ b, E/ m$ L9 u3 k
#include"stdafx.h"2 y: b$ \2 J# D. H1 ?# ^
#include"FoxFunc.h"# }+ c+ Q2 q- E) I% I, A0 _# O
usingnamespace std;+ ~' q6 V/ [6 ~" @
BOOLAPIENTRY DllMain( HANDLE hModule,
; S" }; B' J/ S1 }. C/ ]# Q! fDWORDul_reason_for_call,
  }7 |* ]8 r4 e/ D) Y" XLPVOIDlpReserved
0 o5 Q0 G8 P' a. T. v* J)5 H% k" x& e0 F9 v
{0 \: t4 }, y& j4 _! O2 ?3 L) Y, v
switch(ul_reason_for_call). J( l% `) ^* C8 N+ c0 W0 R
{
. L5 @$ U* O) [3 D, o; N  |, DcaseDLL_PROCESS_ATTACH:
# F" \! W6 u9 d6 L8 ^  kcaseDLL_THREAD_ATTACH:! q/ f" e) |- ]$ @7 X, S9 N
caseDLL_THREAD_DETACH:8 z# y2 o6 y) U! ~: N
caseDLL_PROCESS_DETACH:
: c; n' n1 E: Y# }% s9 Sbreak;! ?  B8 G# h7 R* _5 ]( S
}
  M; K. ?: v/ k4 L# l/ xreturnTRUE;
% V1 h; \8 n# p, _) `# K}  _5 e8 I8 Y% m: t6 ^7 v# ?
//计算收盘价的均价,一个常数参数,表示计算周期  {5 T: l# P' Q7 g) x
//调用方法:
. ~7 f9 [5 H' _/ L0 Q8 |//"FOXFUNC@MYMACLOSE"(5): p0 Q$ J% v3 Y
/*7 W/ U* B3 ?* e+ E' e
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib8 S+ V( R4 R, R
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
4 p7 X$ v1 j' }' X*/( K# Y! d! u& Z$ @' c
extern"C" double __cdecl ppow10(double ,double );, {. F0 ]( m' J! B+ L+ p
//double ppow10(double ,double ); : w3 S/ a$ F( K
//call pow10() by __cdecl7 }6 |6 r. y# w5 ^" b0 e4 a
//!!!!!!!! use "C" for Microsoft visual C++ compiler
" A2 A/ B4 a& R- P2 A//!!!!!!!! use "C" for Microsoft visual C++ compiler: K$ R9 `0 j3 }$ M2 V! f) C
//!!!!!!!! use "C" for Microsoft visual C++ compiler
0 i) g4 s& a  S8 B: F  n. `: f. l//!!!!!!!! use "C" for Microsoft visual C++ compiler; {0 L7 \) c9 c( Y' T
//!!!!!!!! use "C" for Microsoft visual C++ compiler  s/ R. X& B, T" a" \7 [- E
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)+ ^/ I8 W% }. {0 `5 V/ i3 ^
{
- e  k+ S9 e1 s$ I# [if( // pData->m_pfParam1 && //参数1有效
' y7 {6 \* C. a2 B% h; r% N- c//pData->m_nParam1Start<0 && //参数1为常数/ g7 M7 Y2 H1 ^, i. @1 s/ s
//pData->m_pfParam2==NULL ) //仅有一个参数0 [+ L4 y1 h1 _" d& U
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4" k2 |# u3 R2 s) T
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&
3 {1 f/ \! J& Y6 \//pData->m_pfParam7==NULL)9 y- W# I9 X5 V. W3 @# [( {; }
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&
8 u( E. e! Q" T/ I0 DpData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
* S- ?$ d3 E9 M' ]7 Z  z8 `&&pData->m_pCalcParam[2].m_nParamStart>=0) / I7 }5 V9 g* t: D7 Z# P8 n
{
0 X( ~1 [/ ?, \: Q/ ^floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0# W+ u4 |% `1 L+ s
intnPeriod = (int)fParam; //参数1
) Q8 M9 y# u( v. Q2 d+ F/ V//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to $ G  Q4 Q2 m: u6 c
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to 7 X& z0 x4 r( X! O! V
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
, ?: o% X, j( r0 i7 yconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to
6 n2 g2 g1 L4 e6 u  t6 P( ^% m//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to , ~- ]7 e, [- `: s  A# W$ m4 q, J
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
2 z3 \% d* w% F5 Z5 ~! {* `0 v+ o//pData->m_pCalcParam[5].m_fParam); //value
2 B' P) O% S1 U- O//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;* X# o3 x% I# `- z) d
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;2 k; J0 J+ z$ G9 X
//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;
; k: H5 u* E* q1 P( t//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;/ ~( y3 B' ^/ h0 W. ~
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
, E2 d% N" R2 |! }: I- ]# m/ d& \' kif(nPeriod>0)
) I4 o! @( D, y! @# i; d{
2 [  h! k8 t3 T& n9 IfloatfTotal;
0 |- h% T3 E* S/ [7 Dinti, j;/ l% ?7 u$ d7 \/ ]
intndata = pData->m_nNumData;
/ h) y& }* x( n- v//float yy[5000][1];
+ G- H0 T! ~, @7 K& b0 u8 efor( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效
. V, }5 |" M! B! B{/ s% `4 F  I4 Q
fTotal= 0.0f;
% O& g/ |6 M( \- P' {1 n  edoublelngth=5.0;
! U6 U2 y) S$ d% d( r$ ]: G$ ^" ?doublectemp=4.0;
9 Y' h; P0 u) K; ^//float yy1[5000][1];. K# {! s  L6 s9 P; o
for( j = 0; j < nPeriod; j++ ) //累加& Q( y! W# A# i' C) g( u
{, w, v8 c; l5 C& A) A
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误
9 r- J* Z; Z2 V- r}/ d1 a" k5 U% A; R8 r
//pData->m_pResultBuf = fTotal*1.03; //平均
- s% ]8 @! P$ I( z0 d+ W* \$ }fTotal= cpParam3;  ?) ~/ A$ M1 M2 {) v
pData->m_pResultBuf= fTotal*1.03; //平均( a0 p$ J4 o: `
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble
: n7 E8 E; X  Q' _//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value
$ X  ?, z" ?9 Q& d# `- qpData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload
, V0 ~: u1 M  ^4 Z}2 X8 h( H; W/ R4 q. s
returnnPeriod-1;7 p4 c% C5 w7 b9 \' q, N6 D
}
) U( o+ G: M% e0 v) Z}
& C" k! u4 D9 s/ b8 B& V  P# greturn-1;
0 W  f6 {; a6 t8 h& o- d! \}5 l' @# E3 w! G% j$ B' c+ G! M  j
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期7 }% r# ]& u/ ~1 M! |" _
//调用方法:
$ z$ \0 O" X' X: q8 E//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)
# F1 N$ ]! Q4 u& r. Q__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
% N: l5 P$ c' v% q. a. |& m- x$ M{
3 ]1 M( f: Z& N+ wif(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
' \# K5 ~% P0 N" ?+ T! _7 z9 tpData->m_nParam1Start>=0&& //参数1为序列数8 ~5 @$ Q' F5 o! c* _# C
pData->m_pfParam3==NULL)//2个参数1 ~$ m; p8 H7 V7 W! ~
{
5 N# b2 R/ x- x7 r* @constfloat* pValue = pData->m_pfParam1; //参数1+ M# ^4 @3 J( i; t. m
intnFirst = pData->m_nParam1Start; //有效值起始位, ^4 E9 E2 V; ~3 x
floatfParam = *pData->m_pfParam2; //参数2) X: A; k$ ~6 y9 K5 o! o- o
intnPeriod = (int)fParam; / r3 k; F6 E/ t% W3 h7 r  s/ o
if(nFirst >= 0 && nPeriod > 0 )5 D7 T( y& `; k
{
# t! i2 E+ X# J4 N. \. |# RfloatfTotal;
: g# w4 w4 D9 }# y% m; t8 d( sinti, j;
6 p0 h4 A+ N; C  X% efor( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
$ E: n, r; Q" u{) L2 H6 H( }& Z8 |/ D( Y2 F" i) |
fTotal= 0.0f;/ P9 b+ [& @- ^* y
for( j=0; j < nPeriod; j++ ) //累加
4 |% g6 A3 v8 X& ]$ r3 ofTotal+= pValue[i-j];' ^4 }3 H- p8 |' ?! ^7 O. r
pData->m_pResultBuf= fTotal/nPeriod;//平均$ M- o9 C" D. X5 Y& W" W
}
5 ^2 [5 h1 ~& F: P$ Q7 V& Z( wreturnnFirst+nPeriod-1;
$ A, z$ P$ p3 p}: {7 C: Y9 p6 k9 P' `3 L; D6 k4 A
}+ u7 u9 K- C/ r" {+ o
return-1;
% i& Q8 i7 o& k}
7 I- g# N" h! z//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数
' v2 I0 n# ]' |- r" m/*% M4 ^) ]( F4 K
调用方法:2 O. R+ p! i' Z2 G& E0 X  H" b
MA1:=MA(CLOSE,3);  n* |! j3 P% s/ L# Z4 k5 |
MA2:=MA(CLOSE,6);
! O  d0 v2 Q# z- E8 _4 qMA3:=MA(CLOSE,12);
! q7 T. |( {( N) UMA4:=MA(CLOSE,24);7 a1 U" _/ D! e5 U  d# v
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
- B9 x. I1 {! @* q- v6 L*/
0 s5 _4 `  E$ P  O8 n( q; c__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData). A: e) y/ L! @+ g" y4 M- E, ?
{
/ X1 s4 p" c8 E( M4 dif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&
3 y! O, H  q3 S) X, j7 `pData->m_pCalcParam[1].m_nParamStart>= 0 &&; }) b' h: n' X: Q5 K( v9 l
pData->m_pCalcParam[2].m_nParamStart>= 0 &&
$ T' l! V1 D( C+ u$ q% _pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值
/ j  S0 s1 o, R' ^1 v/ |- q{
$ V2 T- O/ K# z0 s//计算返回的序列的第一个有效值位置1 [$ x# ~  p" t0 R3 @' o2 q
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致
  B9 X. c$ D, }) ^$ T4 b& \//若不知,则
' X) a% `! V3 H) d6 B/*, E+ O5 |: A1 v: @; J: m
intnFirst = pData->m_pCalcParam[0].m_nParamStart;
; h' \" l) [3 y- _1 }' o/ C; r' iif( nFirst < pData->m_pCalcParam[1].m_nParamStart )
: N! @: i5 u1 `1 H/ wnFirst= pData->m_pCalcParam[1].m_nParamStart;: ^( U5 a) j" P- ~7 P. d2 v
if( nFirst < pData->m_pCalcParam[2].m_nParamStart ) 1 d) G/ G% q4 b) }3 S
nFirst= pData->m_pCalcParam[2].m_nParamStart;3 q, _! ?0 X: U* ]
if( nFirst < pData->m_pCalcParam[3].m_nParamStart ) 1 f: J# b6 V% s& p% j" Q7 }
nFirst= pData->m_pCalcParam[3].m_nParamStart;/ I: B4 ?9 J! X" [$ A
*/
/ [9 w1 Q+ E$ B1 c0 pconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;3 Y- T+ y0 f) }( z, X* s
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;
4 q8 w8 U9 z2 @3 Cconstfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;- p0 l! J' P: K
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;- j' H! {: O' {3 j2 K9 F+ D2 h
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;
3 e+ A( |8 P/ _9 I! cconstfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;9 u+ r. y; y% P2 J  m7 L
//const float* pValue1 = pData->m_pfParam1;
, c7 z  P0 k8 B, K1 g5 \- @//const float* pValue2 = pData->m_pfParam2;- _3 n/ F) `* `# B3 I% [) c0 Z8 E
//const float* pValue3 = pData->m_pfParam3;
. o9 P8 @$ K8 E+ o! O' B8 J0 v0 [: m//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法$ Z4 M" ^  h- P1 G- O
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
. z2 c: G3 z( g8 v2 Xfor(int i = nFirst; i < pData->m_nNumData; i++ )2 A4 D- l: `# W2 r" R; @6 g
{
, z3 B8 D" T; J0 l( apData->m_pResultBuf= . B. S+ O/ G+ X
//(pValue1 + pValue2 + pValue3 )/nNum;, H+ `5 ?. N4 a; g7 I7 |
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;$ C1 S9 z6 ~) Q  |" m6 W# U
}3 Z7 h7 y9 S# n. N! q  H3 P
returnnFirst;( C' Y+ k3 X- `% M- W4 |) B
}
1 |+ ?7 h2 A4 y* K- ], Ureturn-1;/ t( W: r% i: c4 a3 U8 O
}: s) h2 R3 D7 q8 D8 ~( u' `( k) ~

8 v! G: {1 E! z) |& `9 y# ]  l9 d- m) P8 @6 F* z8 x; u

, |: T7 i" j% n& ^0 }//////////////////////////////////////////////////////////////pow10.asm4 a: Q. m8 X2 n- q& l4 f
;*******************************************************' B# J! }, V  a+ A
;* *  a- |- P/ d. h# r
;* Delphi Run Library *0 u# ]/ C; M' M) S5 K
;* *0 @! n# r3 r" y
;* Copyright (c) 1996,98 Inprise Corporation *
: ~4 r1 Z6 q$ l: |# n& B;*--------------------------------------------------------------------------
& _! J, w4 @; S;* To compile "tasm32 /ml pow10.asm" *$ o1 L. D3 m) d  o
;*--------------------------------------------------------------------------
6 s6 X; p) ?& e' g;*******************************************************
- t: s' p, h  ^' R2 |.386
  p+ b6 a+ W  |3 @& R" F) w5 ^1 h. ]: T;.MODEL flat,c (error must be in segement block must have segment0 m* p4 ^  E% C/ ]/ s5 r2 G
;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'0 [0 B# J9 Q5 B( R9 w0 H" u9 V
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC9 A7 x0 f6 F1 G4 ?1 a
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc', u9 a! A/ i* Z1 j4 c4 x
.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'$ C1 u/ c; @6 p; Z8 s+ ~
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8& q8 v% ]: `# V" e' j6 g) S
;includeE:\Vsource\masm32\INCLUDE\windows.inc' y& W6 E4 B2 N: b: F) D, E
;includeE:\Vsource\masm32\INCLUDE\user32.inc
$ u! D9 Q1 x5 C1 J;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
1 ^  Z8 _% Q" A8 wPUBLICppow10
% p0 l% p- ?4 F$ w! C.CODE
: Q8 ]" {! L+ ~0 u& X; M, J  L( m;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
" {. }0 o% a& K;.if reason==DLL_PROCESS_ATTACH
6 K8 v: \- B! `;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
% t' ]5 K- b4 |4 O+ J;.elseif reason==DLL_PROCESS_DETACH9 d9 O7 `2 y, j9 L/ G4 s
;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
! B+ m( D" l/ E;.elseif reason==DLL_THREAD_ATTACH
0 X- g/ R1 k# |: ?+ w) f# H;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
6 @; u5 d9 [+ W;.else ; DLL_THREAD_DETACH5 H" A! w" r4 B) ~. i
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
7 z  E: \: ~; A0 N;.endif
8 L' [: @" w# Z;mov eax,TRUE
8 i; O5 k+ e. y1 S;ret, ^7 F) r5 }! }- x; f% m$ H
;DllEntryEndp% d4 ^. O) a* `  L- G
;FUNCTION _Ppow10( double val, double pow: ) : Extended;
) u7 g2 g* T& f: a' {;_TEXTSEGMENT WORD PUBLIC 'CODE'
; j: x$ B* k! J) B  ~1 J;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL87 o: ~: C& {, v# j  B2 _  n$ h* T9 l- {
;ppow10 PROC,aVal:* Qword, bVal:Qword
" X: ~/ A0 _* `ppow10PROC near; W, R, W3 [$ Z" [" h: N
XUEQU 8 ; for eip & ebp
# {% {/ U% P) o5 n6 `3 u8 DXDEQU 0 ; for edi, esi, ebx, ecx, edx4 r  i( @! W" W
fp_powerEQU QWORD PTR [ebp+XU+8]
! G+ }/ p, ?2 P; H) pfp_valEQU QWORD PTR [ebp+XU] 6 A+ r9 i3 Q$ x! N  {1 t
valEQU QWORD PTR [eBP-XD-8] ; USE STACK
+ V9 R& Z4 t( W0 i# G9 _; i( I& WpowerEQU QWORD PTR [eBP-XD-16] ; USE STACK( X. g" ]( z/ \8 q# _! m
pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK
  \2 I  i6 }  \0 A2 ]' VFPower10:5 s9 U9 r9 {8 p' Z
pushebp
! ~6 i! I/ O3 |, Nmovebp,esp) S( H' w$ V$ S# b- A* X; t
;push edi2 [& {: d9 I8 ?) K
;push esi3 i, Z* I" ]0 @( L8 x/ n; m1 }
;push eax) y' P% p3 ~. v
;push edx
7 s7 A- J# ]5 j$ a% B' |& l" u4 Vsubesp,244 w$ I3 @+ h2 y  N0 Y1 n
FINIT
0 n* c, [5 j& Q. ]fldz" x. y2 [3 m$ \- b- l
fstval5 ^+ m% Y; Z- e1 [# l( C
fstpower
6 O$ ?8 u& s! X6 Y- h% Z1 q! v2 Hfstppow10
; Q6 [, s; u1 i6 F: Z" p4 U3 Y! e                 MOV    EAX,8                 MOV    EDX,8; fldpi* @0 P$ W9 r4 B) E  n+ d, ~5 Z" }4 ~
              fld      fp_val   ;st(0)=val; fld aVal;st(0)=val
  D3 C. m) q. b; B" c# M6 Q; I) tfstval
- @  C6 j" ?  v;fld Arg2 ;st(0)=power' v3 c4 S5 L0 h: b( ]% a0 o
;fstp power
- ~$ O5 ~: ~  y" f5 };fld val ;st(0)=val
- ?8 x2 K) T3 W+ i$ Q- f;fmul val ;st(0)=val*val( ~. _+ R3 E7 b+ m* b0 U1 K: S! y0 y3 n
;fmul val ;st(0)=val*va*val! @- V( B  V0 J0 F7 |& l3 _3 [' z( g, R
;fadd st,st(0)4 \, g5 g6 P. p! ^$ z! g
;fmul qword ptr [ebp+16] ;st(0)=power
7 N6 h+ {4 o5 x6 P;fadd st,st(0)
2 j2 e6 m0 q  w) W* J;fwait
: V7 H9 ~* e5 w  j- \addesp,24" ]) W! y7 I% O- W* j% l/ {# H9 l
;pop edx# x4 |+ R6 X$ K# P
;pop eax/ l. A& q( U; v5 N' F! I
;pop esi. j1 g- }9 P& p2 I4 S, c
;pop edi
' U4 x+ c. n# M* G& N- Tmovesp,ebp. ~( V/ F: N- s- y. u' W7 w4 @
popebp* d* z/ g2 F5 L& W  @+ l0 I5 J/ A
;leave ; @@@@@@ important don't use leave in vc++ 20105 P+ B  C' Z- X4 ~! w, c" ^
RET;return value = st(0)
8 `+ i3 v  I9 r3 Wppow10ENDP
0 ]( E  _7 P' t+ T;_TEXTENDS
! ]& @( |' v, ?6 ~2 V# o4 XEND
) {5 [/ S3 r6 V: p;END DllEntry

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 手机注册 手机动态码快速登录

本版积分规则

QQ|小黑屋|手机版|Archiver|【阳光飞狐】 ( 网站ICP编号:京ICP备06013475号-7 )

GMT+8, 2026-9-4 07:58 , Processed in 0.141339 second(s), 19 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表