阳光飞狐

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

 找回密码
 手机注册

手机动态码快速登录

手机号快速注册登录

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2019-8-11 16:12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//////////////////////////////////////////////////////////foxfunc.cpp0 y. K8 a/ o/ c2 F- i, N

! }8 S+ x! f7 u) {6 _, B//FoxFunc.cpp : Defines the entry point for the DLL application.
$ {$ I6 t- A+ |6 n//
/ k/ P! T7 t3 \8 O  }5 ^#include<string.h>
5 T" j, N5 J$ C  d2 {#include<stdio.h>
" v  M0 f6 F1 [1 X* s#include<io.h>$ I- N9 N. J: R: P- M" R
#include<math.h>
' M: i2 G/ h6 y( _8 j% \3 l#include<iostream>
+ P+ w) i; P9 f/ {#include"stdafx.h"
6 j6 R, v& ^+ g* Z+ K" o, N#include"FoxFunc.h"7 b+ o2 ?5 C% ^- B4 e5 K% k
usingnamespace std;% V3 c3 e! U4 p: p
BOOLAPIENTRY DllMain( HANDLE hModule,
! W% Z4 N( H  ?DWORDul_reason_for_call, 3 [% b2 L" Y- D3 V: H) p
LPVOIDlpReserved
; P6 l4 [( [% [1 b  l# e)7 J7 s$ x1 z* ]7 {; Q
{* _7 D8 N9 r2 _7 G2 k! Y8 |: h" n
switch(ul_reason_for_call)
7 Z7 |/ e" \- V8 H, c: e& r{
% T' E- s( N  m" b7 i* ^3 xcaseDLL_PROCESS_ATTACH:
, O9 w! @7 ]' e* V' YcaseDLL_THREAD_ATTACH:+ V4 B% D8 z. l( C( J: s4 }; q
caseDLL_THREAD_DETACH:& U! `( r+ y0 c5 A
caseDLL_PROCESS_DETACH:% e7 ]3 e; D1 l8 S. N1 N# z
break;# X5 y: k4 n3 L7 Y& \0 h* ^
}7 I# C2 C/ E$ F4 G
returnTRUE;1 c% E& v( t% O- u' Z$ k8 ^. G
}% T8 c- W1 C* C+ u/ D2 n
//计算收盘价的均价,一个常数参数,表示计算周期  g- B5 r  A' m" e- w
//调用方法:0 C! P# t; L2 v/ ]. p: ?% N8 J
//"FOXFUNC@MYMACLOSE"(5)2 g) e5 n$ a7 `: J! Q
/*
9 n' D( s9 `5 H. M; f4 i9 b//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib: R1 ?- d- U$ A& u. w
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same9 t/ e( l9 R: Q* z3 l
*/
8 W& b% l# D2 Sextern"C" double __cdecl ppow10(double ,double );
- |) b2 w( P2 Z8 g//double ppow10(double ,double ); / l- T# ?3 P1 k: @" f! E- N4 I# @
//call pow10() by __cdecl
) |" |8 Y. T1 q//!!!!!!!! use "C" for Microsoft visual C++ compiler
' P, @% g" Y- A$ D: j! v  N% k; \//!!!!!!!! use "C" for Microsoft visual C++ compiler/ d' G7 q4 {" m. O, x) h
//!!!!!!!! use "C" for Microsoft visual C++ compiler! S! g4 o7 j! d. A' {
//!!!!!!!! use "C" for Microsoft visual C++ compiler% t2 j, g9 g0 g0 ]$ w
//!!!!!!!! use "C" for Microsoft visual C++ compiler( ?9 w" u9 W8 s& h# q( c
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)1 M: r; ]# o7 e( e
{
4 w2 n. ]) d- C# p; uif( // pData->m_pfParam1 && //参数1有效
$ [2 ~' w) H* S, ^  ^! K$ R* V//pData->m_nParam1Start<0 && //参数1为常数
& v2 M+ g6 E$ P! a; X//pData->m_pfParam2==NULL ) //仅有一个参数
. K+ _. F; B4 }7 ^% F8 p//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4/ c% {/ A% M  v! \/ L( E
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&
" G9 s% f4 Y7 Y0 I1 ]  ?2 E( i//pData->m_pfParam7==NULL)* f- |& c- V) G
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&
, i( `$ u* I; q" L) RpData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0. m& m+ g+ [. k5 o. N
&&pData->m_pCalcParam[2].m_nParamStart>=0)
, S* x; A+ u/ S1 }7 \* Y2 _! J+ V{
! b" c% F4 b! q- {7 v/ tfloatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0
+ G( h  k/ k1 }7 FintnPeriod = (int)fParam; //参数1
- G+ h6 n  n0 Y//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to 2 i3 l1 g7 S+ h5 s/ c! b
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to : j9 K+ d! T/ t6 U$ Q9 ^
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
6 E* T9 ?7 |9 Q- D3 x8 k' Jconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to ) s$ c+ u/ R8 w/ K0 G
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to
7 {. {6 w* h( }4 L//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
' a3 ^: z# O* J5 n( R4 s( e' `//pData->m_pCalcParam[5].m_fParam); //value
3 G3 y- P6 _( R+ }8 |0 U0 k//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
0 f) E3 U9 q/ m& b( D//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;7 V' _5 L* o* r! B# E
//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;) x& H9 p; F+ R/ I
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;
- ?# [& s- y0 J# \//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;7 ]. b' ~/ R; N% q- Q2 g3 G
if(nPeriod>0)1 s8 K0 W1 Q' t& U
{9 O& K( v" g( }
floatfTotal;' u/ z# M! p0 s, q0 B/ w
inti, j;
3 m- i5 k8 ^1 [. pintndata = pData->m_nNumData;3 S; Q8 y( u1 A, \9 ]
//float yy[5000][1];* M' I4 H1 z( Z: y% K( ~
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效: a/ L1 }0 ?7 D% y' }* Q
{
/ U2 J& w' ?0 X: K. _7 o- IfTotal= 0.0f;
* R4 {% {0 w$ f2 B7 y4 T8 hdoublelngth=5.0;
0 L5 q6 Z! l0 fdoublectemp=4.0;1 Y) \$ S/ y: s+ E0 U6 Y) B
//float yy1[5000][1];5 p% ]! g( `8 O2 Z: g$ [
for( j = 0; j < nPeriod; j++ ) //累加
; `0 N: A+ ]9 t" K. j" i/ V{; N  L. \6 a$ ?# T0 v
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误' U$ y, ^4 Q# t! y  ^" Q* w
}
6 c" f: P: x$ a, p. p' C& v  {//pData->m_pResultBuf = fTotal*1.03; //平均& c8 Q0 L: M: U; R8 `
fTotal= cpParam3;6 @6 z5 l0 L9 W7 k# L0 u- H0 z8 C
pData->m_pResultBuf= fTotal*1.03; //平均7 ?/ S9 Z1 u7 A4 f  n; J0 X
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble6 y( P5 ~4 a$ l& I% `: N9 n
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value
0 f/ g& Z0 k. M% QpData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload
& Q% e& V0 e  @# d' O. L}
# Y4 l: G" y" |. P( d, u( G3 ]returnnPeriod-1;! j* n7 ]& f! Z& W5 e  H1 L3 W
}
- ~! y/ l' C2 {}
3 i& [4 G3 U0 wreturn-1;
6 C5 w, @8 B3 U8 W- `- k: f}7 c% f# Y8 d  M* j. u( O  [
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期3 U3 }8 H! f& \* [8 l8 F  g- ]
//调用方法:
. A( ?0 y$ {0 d6 {//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)  y) W4 Y% w( _& M8 L# v
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
4 a( S# C; P7 H0 R, N{4 F7 D) @: J3 \" n/ j1 \& `
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效, C; l$ Z* ?& k# I
pData->m_nParam1Start>=0&& //参数1为序列数
; m) m  Q( ^! rpData->m_pfParam3==NULL)//2个参数
+ F* m- D! w; O* w1 P4 a$ x! C  `{* m' x  ]9 f0 b9 @! z0 X
constfloat* pValue = pData->m_pfParam1; //参数1  O4 E" v- i! v5 B1 A  g# r
intnFirst = pData->m_nParam1Start; //有效值起始位$ w$ [4 K: p- p
floatfParam = *pData->m_pfParam2; //参数2  Y( |6 L& i- A/ r% N
intnPeriod = (int)fParam; + v5 P* A1 B8 r$ Q2 |9 a  g
if(nFirst >= 0 && nPeriod > 0 )
2 i) U3 c1 a3 p" F{
0 S2 L% C/ g5 {% I8 GfloatfTotal;
& H3 Q8 z5 y" c3 n: f2 Qinti, j;
( p7 e- t! C% }! r( ~6 Pfor( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
+ v  m4 [. Y7 k7 q{
5 g# y: U. u3 L/ S# Y* [- rfTotal= 0.0f;
4 N, Z7 Z, E2 j; I' @. T( Vfor( j=0; j < nPeriod; j++ ) //累加
) m4 |  A, [7 R# w" KfTotal+= pValue[i-j];
! W! T$ w( R2 ^6 mpData->m_pResultBuf= fTotal/nPeriod;//平均
* e( k- p2 D' F; E7 s6 B9 Z7 \0 j}6 U8 @2 k! S  w! N$ i+ x6 E9 F
returnnFirst+nPeriod-1;& {8 P; k3 y1 M- e* z- g: G! q
}$ \' ^/ \& L' |" W( R; \
}
7 v7 F( c  @: i# C7 |return-1;, @1 W4 p; m1 E: s2 c; i& N
}
) d! A9 U0 W7 v% {! \+ E//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数/ w& A3 k: Y% X
/*
, i4 V7 c0 i- p4 Y: ~& u/ P调用方法:
8 B5 z# m5 }: f. I; Q5 ~" [0 ^2 Y( tMA1:=MA(CLOSE,3);
% Y- ^& X" g5 `% jMA2:=MA(CLOSE,6);
8 B7 h: \; ~/ V% W1 N6 b" hMA3:=MA(CLOSE,12);5 t7 Z) s; G3 I
MA4:=MA(CLOSE,24);
) x- B- o/ Y- A8 P3 v8 ]  HMYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);4 P3 H4 ~8 M0 p$ O* V7 F$ g4 x4 n
*/
$ s! H. k8 U6 z! ?6 `; |1 \7 U( K' _8 d__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)1 c$ l! }2 c4 f' O% G0 J
{
! T. }" b  w! G# tif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&  x; R& T0 c5 f: T" N5 U
pData->m_pCalcParam[1].m_nParamStart>= 0 &&7 z1 h. s" A1 p5 v8 j% d( E8 M
pData->m_pCalcParam[2].m_nParamStart>= 0 &&- ^5 j. E, [4 \
pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值
" p0 W7 b" D( S6 n) ^+ _0 Z{# f* I, ~( {8 z/ q% g
//计算返回的序列的第一个有效值位置
$ A" B& R# f# P! t6 KintnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致" P4 t3 M6 S: G
//若不知,则* W; s( ?* y- O& K7 f
/*, P# a0 ?( U/ T" k- P
intnFirst = pData->m_pCalcParam[0].m_nParamStart;
0 ?# q$ K; ^; G# O8 [if( nFirst < pData->m_pCalcParam[1].m_nParamStart ) $ i2 X1 @$ L1 A7 @- ^
nFirst= pData->m_pCalcParam[1].m_nParamStart;7 ^" I3 t$ W. P. e# W4 S8 N
if( nFirst < pData->m_pCalcParam[2].m_nParamStart )
1 a8 q& d: B9 i6 UnFirst= pData->m_pCalcParam[2].m_nParamStart;
# x- h9 @* i. `( qif( nFirst < pData->m_pCalcParam[3].m_nParamStart )
5 o# a4 x' o3 l- ~7 K1 |nFirst= pData->m_pCalcParam[3].m_nParamStart;# U( C$ y: ]$ B, Y6 m+ G
*/
# d+ M  B1 ?' Aconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;
1 n$ }. G% P- A$ Q$ D% econstfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;, J% M8 Y+ z+ z+ g7 m- [6 f
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;
0 A1 r/ w  P9 w3 b9 n& Econstfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;7 W1 N; g0 r( O& ]8 ^4 F
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;$ c3 @* G' \* O( l/ l) i/ S
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;
2 _. {3 L: E* t" @% L! ~$ S& C//const float* pValue1 = pData->m_pfParam1;8 A* r, u. n- D: e6 i+ O9 ~
//const float* pValue2 = pData->m_pfParam2;
& Z1 V' M9 h+ E  I- J. o; A8 j//const float* pValue3 = pData->m_pfParam3;
; l! O7 h! H; d/ F9 S5 o" ]* w//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
3 N8 `7 U6 z8 _9 I! J1 {intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法3 Z9 B) S( x- u
for(int i = nFirst; i < pData->m_nNumData; i++ )
3 A) Q9 v9 e, ~  X( {  Y{4 m: T& p3 C. h3 g9 K
pData->m_pResultBuf= . T) R- P' o6 p+ u6 P
//(pValue1 + pValue2 + pValue3 )/nNum;. E! J. b, r' u. m. X& W0 d9 R9 A$ J
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
) y0 ^7 B1 E& d# [$ N7 Y, u8 U8 b}& y6 I% i# E0 |7 V/ K% ?
returnnFirst;) l, a- Y( Y' I; q- \
}. c/ \! G% q- |) W& F; l
return-1;
9 C5 g1 O% X0 Z9 o8 O& _: C}
6 ^* _' f/ U  ]$ q  h2 e2 `  b; {! k$ M# c9 U& Z
0 f: w8 {- l$ v; A( C7 j1 b6 q
# W' c; w; D% T2 ?4 E# a6 n1 O
//////////////////////////////////////////////////////////////pow10.asm8 D# y2 x/ e2 w( a
;*******************************************************$ Y3 B  [/ p* t2 `) I" e; m
;* *
+ i# t9 Y5 U$ c;* Delphi Run Library *
1 o+ E1 g% y7 `5 q$ C* N- M$ W% M6 d+ B;* *" t' C4 e1 `- e# l7 W  R4 _
;* Copyright (c) 1996,98 Inprise Corporation *$ v# `9 W" ~5 |% I
;*--------------------------------------------------------------------------
1 L+ A; P1 X1 i0 J;* To compile "tasm32 /ml pow10.asm" *
3 _( B9 r' u2 x8 g7 R$ T4 h;*--------------------------------------------------------------------------
! F2 Q3 T8 }8 F. z+ C  o$ w/ n( n9 i;*******************************************************
; |3 C( Q" T& j.386& K" s$ p' s$ P  l
;.MODEL flat,c (error must be in segement block must have segment+ @1 ]! K6 m6 l& m  D
;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'8 h% w( k  u. k( n3 n
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC2 h5 d  ~6 o5 I1 P
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
& s4 s7 H1 I% e/ K) Z, U/ R& M- r4 R.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'
# B& P, S1 I6 |/ S$ M( }5 Z4 {;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8" y( ~0 y  U, M$ ~
;includeE:\Vsource\masm32\INCLUDE\windows.inc
8 I0 @- X) ^6 g+ X: S) `  n;includeE:\Vsource\masm32\INCLUDE\user32.inc
- o$ K( {, e0 @" B  T( F' Z5 ~2 V;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
+ I( M5 a8 l. G8 L$ w: CPUBLICppow10
9 O' }. w" ?& u$ Z.CODE3 a8 t5 ~! o1 T! x  Q/ f3 D
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
: }# W* \2 N2 }' i;.if reason==DLL_PROCESS_ATTACH
1 }$ n0 j! H4 J3 g;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
# p8 ?* O. M) I7 u" h2 n4 w;.elseif reason==DLL_PROCESS_DETACH$ m: h3 B" Y8 o/ Z& W" v" P
;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
$ z: h; B; L6 {0 B- Q' ]! @;.elseif reason==DLL_THREAD_ATTACH/ b" G# K9 N5 P. L; }* T! w' N* c: ~
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK$ c" o  I0 t6 D0 y2 y; f
;.else ; DLL_THREAD_DETACH
+ H% s9 \# Y$ y) d6 ^;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
- u( Q' a, d/ L) l;.endif
4 w$ P( g4 D3 J$ B;mov eax,TRUE  F$ \% H' k3 q5 n5 i# K8 Z5 G2 B
;ret$ |, _6 J: Y: X9 a! T" v' v" W
;DllEntryEndp
0 F! C& }- {9 r5 \0 x;FUNCTION _Ppow10( double val, double pow: ) : Extended;; A& ~* ~5 u0 R( S. I. ^  j
;_TEXTSEGMENT WORD PUBLIC 'CODE'7 @5 E7 c% S" Y8 Z0 e5 B; k
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
/ l2 L' Y" Z  m' h( ^* ]: i;ppow10 PROC,aVal:* Qword, bVal:Qword3 t- {2 e$ E9 s1 ]
ppow10PROC near& `2 O; I+ }5 }
XUEQU 8 ; for eip & ebp & T3 G7 z$ K; l+ d
XDEQU 0 ; for edi, esi, ebx, ecx, edx' I  E. \, C8 ?
fp_powerEQU QWORD PTR [ebp+XU+8]
% ~8 U! A1 y' L$ Q' l/ v) A5 Efp_valEQU QWORD PTR [ebp+XU]
/ C6 E8 N; t/ avalEQU QWORD PTR [eBP-XD-8] ; USE STACK
2 ?4 {* J2 _1 `; d, p" v3 _3 R7 f& I: ypowerEQU QWORD PTR [eBP-XD-16] ; USE STACK
* R9 g* S* W! w+ ~! Dpow10EQU QWORD PTR [eBP-XD-24] ; USE STACK" A. T9 `) N9 d' ~+ r
FPower10:
: c0 p( f' x" {pushebp# d) W5 t7 y7 g; b7 l- o
movebp,esp# g5 j( Z. m$ ]9 o& q4 p! J
;push edi: y: F% s3 p' Q5 }, o1 i0 s; J+ t
;push esi
4 F6 Y: `. X* E8 U;push eax+ \9 @8 x7 }. n; \
;push edx
7 S% J+ {  ?+ S5 o( {, N1 lsubesp,24
1 [; t3 V( [5 A4 UFINIT
! Q. l6 W6 Y! [  efldz
2 v3 ?8 [% K7 |% k: A  i3 h2 B3 xfstval1 ^! X* H( N3 R+ z0 f( z7 f
fstpower" v; {- f8 h: ]- d% b3 j
fstppow10% B6 a- D$ q; B! _4 l
                 MOV    EAX,8                 MOV    EDX,8; fldpi
: [) }. l8 D/ @5 M% e# L' L* S3 F              fld      fp_val   ;st(0)=val; fld aVal;st(0)=val* G! t8 o6 }% Z  }. x
fstval! L# G0 a' d; g, v* S6 R
;fld Arg2 ;st(0)=power
; r9 H: Q* j! R. V4 a8 R;fstp power
6 k; a! q: v  ~) A' d;fld val ;st(0)=val
0 y! p6 ?) I, ^# j7 c;fmul val ;st(0)=val*val
! ^7 E# E' U) e% D0 B;fmul val ;st(0)=val*va*val
) D: Z2 u9 d, O;fadd st,st(0)  q8 X7 t, `! j3 e" @) x! t5 w' g4 |9 o$ z
;fmul qword ptr [ebp+16] ;st(0)=power% K4 a% y2 l1 F0 E+ Q9 M
;fadd st,st(0); U3 m5 E1 m  B/ h# w- y
;fwait& `" r$ }. ?' B- W: V# E. l5 y5 d
addesp,24( k) ^; M# g: u. V* r  R
;pop edx" y! D  ]4 C6 k- L# `" R
;pop eax
) P" @9 a3 M% _$ };pop esi% D3 j  D4 R6 T
;pop edi! s0 {7 V6 C  t( X. y1 t
movesp,ebp7 z# T& U2 f0 O9 ?. ^5 B  t$ h
popebp
, _7 l1 a& |5 Y& B;leave ; @@@@@@ important don't use leave in vc++ 2010  ?/ G& t6 ?' H! O1 A+ Y5 Y# k
RET;return value = st(0)* J; C; \: O; W
ppow10ENDP8 K$ D$ n1 c) ^9 ~+ H
;_TEXTENDS7 J' w0 ]7 o' m/ l8 Z! K8 p
END
/ p4 B* n8 J) [: Z;END DllEntry

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2026-7-21 07:13 , Processed in 0.121495 second(s), 22 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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