阳光飞狐

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

 找回密码
 手机注册

手机动态码快速登录

手机号快速注册登录

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2019-8-11 16:12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//////////////////////////////////////////////////////////foxfunc.cpp1 J# u1 U; i7 k

) x+ p( e  k' |+ e% O% C1 @//FoxFunc.cpp : Defines the entry point for the DLL application.
: D% a& O9 r8 ?7 {8 B4 O//
- H. U$ i  H- {. {6 b0 `$ f# I#include<string.h>
6 d* A& c# j7 X8 l#include<stdio.h>
& j" X- m& q9 A+ z/ a8 {#include<io.h>" e9 R* N8 y  [2 ]
#include<math.h>
2 T6 m" H7 l3 ^4 u1 ?: U. D#include<iostream>
5 W9 Y7 S# C, ~* f  O4 `#include"stdafx.h"; X' b; B2 I8 ~" c( n0 k& f
#include"FoxFunc.h"
, D# j6 f8 c% q9 W, n4 Wusingnamespace std;
8 n* M5 D) {+ W  s) xBOOLAPIENTRY DllMain( HANDLE hModule,
/ s  y& W  }! i  KDWORDul_reason_for_call, 5 Q+ f: V; \% q0 ^- d3 k2 P
LPVOIDlpReserved
, Z+ O% L+ X2 g: W9 @. F)! q& l3 e4 j- w! R" H1 T" F
{0 p' B+ ^& g' `. ]- O5 t
switch(ul_reason_for_call)
+ w2 y8 y, I7 g* t1 }! m! Y{
3 i1 x5 c/ E9 @0 A( EcaseDLL_PROCESS_ATTACH:
: J" B; g3 |- l7 kcaseDLL_THREAD_ATTACH:+ M0 O8 J4 }; s( ]+ \" j
caseDLL_THREAD_DETACH:
! P  t# R! j+ H- y) hcaseDLL_PROCESS_DETACH:
  ^' L+ E" V1 T5 a+ h2 _4 E2 b3 Zbreak;) b" k" F/ U! F( s, b$ _
}0 l9 U# p& g0 R% m  A
returnTRUE;
3 t9 ~% ^# Q5 Q) L6 e. v}
" y- W- d& W* L8 v//计算收盘价的均价,一个常数参数,表示计算周期( O: r, ^% S7 M2 z; |: i0 ^
//调用方法:; s& L, I9 V" a4 k! g
//"FOXFUNC@MYMACLOSE"(5)
( P4 F! \1 @6 @% e8 c  h: Z# x/*# ?# G& ]4 o' W( H. L; D/ l5 C! a
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib! p! J1 f0 ]1 ]( R
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
" I  a( O3 n9 U% `*/; Q4 N, m2 Y7 d" C  @/ B  V; ]; o; Q
extern"C" double __cdecl ppow10(double ,double );  d. ]# j4 [5 U5 S
//double ppow10(double ,double );
: q, o- }2 N% q. z( q3 \//call pow10() by __cdecl# U! w( U" E3 u$ a6 b4 y
//!!!!!!!! use "C" for Microsoft visual C++ compiler5 Q+ ^: B; }( s2 J  a: c" y
//!!!!!!!! use "C" for Microsoft visual C++ compiler% p) |3 a& ]& L, K- e( U
//!!!!!!!! use "C" for Microsoft visual C++ compiler! `- r: o9 t% v9 G) q; a: W8 U
//!!!!!!!! use "C" for Microsoft visual C++ compiler
# R4 c2 @( V- ~* j1 z0 M- o8 K//!!!!!!!! use "C" for Microsoft visual C++ compiler- z: K- y' b& w2 d& X
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData), _1 W2 r3 f/ ^4 ^
{
1 `+ B# k* w- fif( // pData->m_pfParam1 && //参数1有效" E+ V2 |' F$ z4 \
//pData->m_nParam1Start<0 && //参数1为常数
, }) K! d$ @9 g6 D$ n+ ?//pData->m_pfParam2==NULL ) //仅有一个参数1 p1 b( d' N2 c
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4
6 _$ T' Q9 g6 g9 i% f//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&6 d8 L) c# [+ I2 w0 ]8 h* h: C
//pData->m_pfParam7==NULL)
3 V/ G8 k. S+ p* H: q' V! U//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&% Z( j4 Y$ O- n: X; n; s' O, A
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
' x. m6 `  t8 }7 d6 t3 o5 c! r&&pData->m_pCalcParam[2].m_nParamStart>=0)
/ f6 Y2 O* s, }3 A{
  _( `  }. [& R0 f' u2 D  C2 zfloatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0; v" }3 f5 u; Y3 R  C3 r% n
intnPeriod = (int)fParam; //参数10 W9 D. m7 L) ]9 J3 ]+ P
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to ) q' U* d; O0 x- E7 I1 K8 C
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to 0 H1 I4 i0 L8 E* N2 i* v
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to - V4 M  M0 @- a# J
constfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to % p/ i, k: v1 T
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to
0 c7 |; S' x; K  G//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
$ _1 \  [' e5 b: w  s$ {$ |//pData->m_pCalcParam[5].m_fParam); //value
1 R# Z, I' k* Y, p7 [//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;0 {% j! v7 B; M4 K; E/ S& `
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
( y* T/ P/ Z/ f- }# x//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;, d: ^; N' J- ^: v, ]0 j" j1 o
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;* {% t$ x; o) G; ^! [0 _  l
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
, ?1 Z% S' z) d$ cif(nPeriod>0)( h$ E9 ?/ G+ _; R  [3 I. S
{  a0 R3 ^3 u' M1 Z0 F6 ~, p  V
floatfTotal;  S5 \7 X' j1 H2 q- c
inti, j;" `" e! x$ ?8 U/ V% j. s
intndata = pData->m_nNumData;
$ y. U7 d+ H. b6 V( r# \* V//float yy[5000][1];
" m- s: H# \" gfor( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效
7 |3 I% c3 p4 n) P{  \1 Y4 `" d% o
fTotal= 0.0f;
0 Y9 }, ?' U4 W0 wdoublelngth=5.0;) _& ]2 e) L+ b9 Y, @9 v4 c6 [) P
doublectemp=4.0;
7 _( |0 f& s- T; G! \6 o//float yy1[5000][1];6 I& a. t0 P! e' I" s" R
for( j = 0; j < nPeriod; j++ ) //累加8 {* e6 D% ~* W: ^' t" R0 D
{
" N5 ]  w( o( ~  c9 f( O) bfTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误
; l, l$ {8 Z  g9 A3 ?  W. i}" O  K0 T2 a) Q; d% z, N* E7 W
//pData->m_pResultBuf = fTotal*1.03; //平均
* }( |& Y) A: p- D  p, WfTotal= cpParam3;+ D: Q4 `9 d" t; n6 O  i
pData->m_pResultBuf= fTotal*1.03; //平均
. T) j7 [. f, t) K//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble
1 ]2 |) B& M2 V& g3 p$ J//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value5 _* m4 q, f- w! |0 j
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload# m! p' W& O+ l! e1 Y+ j8 x
}- C: \+ W( j2 H9 C4 l% P
returnnPeriod-1;% h2 p+ k8 O! A
}
. f+ K* J, S: s$ o3 e( @2 D}& ?' d" f+ `) M
return-1;
$ |2 f; F* s1 G( ]0 j}/ h4 H# L" x  x" A
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期  |/ U+ m! w8 X4 |; b+ |' E; b2 c0 Q* \
//调用方法:# n8 p+ M; e( J+ B5 Q
//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)0 i: w7 U6 ~' m5 F" a2 _& T6 [
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)9 r5 f* y# [8 |5 d% A
{/ V# [; V- B: J1 t
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
2 y8 L6 T( Y. ?pData->m_nParam1Start>=0&& //参数1为序列数
5 M2 K) B( n6 Y% DpData->m_pfParam3==NULL)//2个参数" p: R& m+ b9 [. v7 q
{
# ]( g2 V" s: Iconstfloat* pValue = pData->m_pfParam1; //参数10 B7 s% Z8 }; n5 r0 K
intnFirst = pData->m_nParam1Start; //有效值起始位
) f  D+ ?# ?4 R! Z- WfloatfParam = *pData->m_pfParam2; //参数2
5 x1 k6 o/ M* w! D( Y' ~6 E6 V* NintnPeriod = (int)fParam;
. m2 i) P3 }* `- F  w; Rif(nFirst >= 0 && nPeriod > 0 )
2 I9 L. T( ]. T{
* b3 {, [3 [2 ~* ^1 p+ A& TfloatfTotal;: E3 ~& U) Z; Y
inti, j;! \/ r6 ^0 f# Z/ H* q( @! v
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )# E! N+ g7 e9 E) }' Z" W0 e4 h
{( \: B* ^2 j. p" N# q# U# G; s! ]) R  }
fTotal= 0.0f;( D$ J" f; C, T  I
for( j=0; j < nPeriod; j++ ) //累加
" J. _, n+ {2 Z1 X# LfTotal+= pValue[i-j];
% i# Z5 j/ v( m: ^4 \pData->m_pResultBuf= fTotal/nPeriod;//平均
8 k  `" O1 x4 V# i( |2 b}
( C- D& g+ t: ZreturnnFirst+nPeriod-1;5 o6 w2 A7 `7 X- y8 Q' n4 X
}1 Q8 e7 o. z6 z& O
}
% L3 w/ v* @. T2 c4 ireturn-1;
$ k& {+ B! {  ]/ k5 x. L* m0 B}
% v- v* o1 X' r" A//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数! ?  u6 k/ @1 h' z% U
/*& L8 @. F" @1 _% R/ X
调用方法:2 R% \) C' Y0 m& ]# P
MA1:=MA(CLOSE,3);
/ `" r  j8 c3 S8 F) _+ qMA2:=MA(CLOSE,6);4 p, L0 |5 L: w: J
MA3:=MA(CLOSE,12);3 g# S" {, G) l6 y/ _& D
MA4:=MA(CLOSE,24);
* J  R" J! r4 ^5 SMYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);% U! T8 u( ~& l3 _) t
*/( I8 r& W" e; }4 H# |9 C
__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)
4 h' q4 Y8 Z' O" d{
3 ~) B9 s' U2 |( X) Vif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&
/ w. n; d9 O4 A, {pData->m_pCalcParam[1].m_nParamStart>= 0 &&6 F7 Q) o" }2 I4 m# P9 L3 S- T
pData->m_pCalcParam[2].m_nParamStart>= 0 &&5 [$ G+ S$ ^. V/ j, j" w
pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值; x( t& W/ ^' P( u9 g$ x
{' R/ t! @# ^) \4 ^9 M- E
//计算返回的序列的第一个有效值位置5 ]) f; f4 R# _5 R
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致+ e6 ]$ i- I. C$ P) p! z
//若不知,则# t% x8 E7 g9 D, a0 W- p
/*
# K& g2 X% T' k& yintnFirst = pData->m_pCalcParam[0].m_nParamStart;
: X- G& S" J( Q, Tif( nFirst < pData->m_pCalcParam[1].m_nParamStart ) , ?( U; _8 g) D" Y) n6 z8 M2 @# Z
nFirst= pData->m_pCalcParam[1].m_nParamStart;
: x& X1 X+ G+ `" Q: i0 Yif( nFirst < pData->m_pCalcParam[2].m_nParamStart )
# s2 ?0 _9 z  M0 t3 o, l' {( [nFirst= pData->m_pCalcParam[2].m_nParamStart;
" L  D5 @  q: M8 u9 bif( nFirst < pData->m_pCalcParam[3].m_nParamStart )
# ]/ x. L7 f* C' ^; E( KnFirst= pData->m_pCalcParam[3].m_nParamStart;/ b+ H8 J( O. B) _' i6 T  \( t
*/
# S8 E  b: n2 K) sconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;5 B7 R8 l, C% Y6 s  S* b1 \  Q5 _
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;4 I" T; p+ O9 `) i# W5 r
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;0 ]7 L5 ?$ p9 v6 D% L5 V
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;
9 W& r. U! z5 }& ?8 K, Uconstfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;. m+ z6 j  V8 u) Q
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;
* z, H% w1 X2 \  x//const float* pValue1 = pData->m_pfParam1;9 f6 `5 C: q5 ?1 g8 P4 w
//const float* pValue2 = pData->m_pfParam2;7 b* i5 D4 D( d' d+ ?3 ~7 @+ X
//const float* pValue3 = pData->m_pfParam3;9 k! {' [+ N* w3 Q) u
//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
0 o! F6 H: G- @# ZintnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法6 J$ Y7 n9 Q( Z2 h0 w( `
for(int i = nFirst; i < pData->m_nNumData; i++ )) }; v1 O* Y( y
{
; l, M: z3 ~; p$ d; r" O1 z! e5 e9 x; `pData->m_pResultBuf=   @. _2 O4 t+ d3 w8 x* F
//(pValue1 + pValue2 + pValue3 )/nNum;, G2 R8 i/ u% ^. a3 {7 X
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;0 g) [; U3 D# M  y! A5 W' j
}; P! i9 h) h2 S2 P- G+ i
returnnFirst;
+ J5 y) N2 Z) |4 [}; U9 t8 y. |: Z2 R
return-1;- T! A- V& W$ V0 K* E1 {
}" [7 R  o0 U; Z. ]0 J1 x2 M! d% m7 u

% w. }' A5 l: B) m0 L
9 n- ]9 V  a; K
/ D2 W: S: i" G% H//////////////////////////////////////////////////////////////pow10.asm; Z8 Y+ o- u/ H1 k- o
;*******************************************************/ I* f3 z9 }$ G/ }4 F/ w) k
;* *
( x& N7 a- X: ^7 P4 I;* Delphi Run Library *
* D# j  K% \2 `5 J( [8 H;* *; ]1 |  B3 ^3 p
;* Copyright (c) 1996,98 Inprise Corporation *. N0 K) J9 @  i
;*--------------------------------------------------------------------------3 j3 C" o* x+ r- O7 {# \
;* To compile "tasm32 /ml pow10.asm" *
. `) J) J0 C% n+ G( c( U) n;*--------------------------------------------------------------------------# A0 x9 |1 V" ^' B6 [% J" J5 e  y
;*******************************************************
, q$ l( ^! z' C3 o0 g.386: [  A9 ~: `0 W6 N) M: f* |3 |
;.MODEL flat,c (error must be in segement block must have segment
4 F7 W8 ~- K, y) s1 o;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'% m3 F$ U* x3 v! A8 g
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC
. s7 U% J$ c* ^1 h+ b;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc') N6 l  y# X) a
.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'2 x6 b0 j4 Z  ~( C( M, m  Y/ C: X
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
0 f; Z4 W* L* b3 Y% @7 b0 I% H) W;includeE:\Vsource\masm32\INCLUDE\windows.inc
4 l! m5 R  {' l8 R1 D;includeE:\Vsource\masm32\INCLUDE\user32.inc8 M0 p2 f% c# c+ M4 L1 g, }. x& \
;includeE:\Vsource\masm32\INCLUDE\kernel32.inc4 H# t3 x2 }2 F
PUBLICppow10
' T8 x; n0 ]  Z; I.CODE
3 ~  n5 {+ K5 O2 t' ~;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
- j$ S8 L2 u$ K;.if reason==DLL_PROCESS_ATTACH
( |& i3 ]. n, G; U8 j;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK6 S8 O5 n, ~* e9 u9 B/ P
;.elseif reason==DLL_PROCESS_DETACH
0 K0 M5 O+ _, N;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
' ^* i6 C& D! ]# t/ |;.elseif reason==DLL_THREAD_ATTACH
- f0 D- I/ f% j5 v+ W9 N  c;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK/ m; U( G' y" A1 f: ~
;.else ; DLL_THREAD_DETACH
& L/ T1 [9 X5 p+ @" q0 C- K% y;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
" }1 R- H( p) u: f) h  r;.endif
8 W" a6 ?+ S8 D0 {  Z;mov eax,TRUE- C! D! n" v9 [0 f- N( @, V
;ret
) ]! e& S# e  V$ h. L;DllEntryEndp
! f& N8 W% r, L. y. X( J- s;FUNCTION _Ppow10( double val, double pow: ) : Extended;
  f1 Q, E+ \. i9 C  {! K;_TEXTSEGMENT WORD PUBLIC 'CODE'1 a$ G& a! h6 B8 {8 I7 ?
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
5 U$ j, m8 H7 ^8 H  a) f& c  Y" M;ppow10 PROC,aVal:* Qword, bVal:Qword
6 E( E- p+ W) y* @ppow10PROC near
0 P) _8 J/ }; i$ b$ ?  y- jXUEQU 8 ; for eip & ebp & i8 R8 I% [9 `4 o- D8 T) y0 A) X1 a
XDEQU 0 ; for edi, esi, ebx, ecx, edx
( g3 B6 k. Y% Y' pfp_powerEQU QWORD PTR [ebp+XU+8]
( m. b0 U: }0 U4 }, ^5 C) rfp_valEQU QWORD PTR [ebp+XU] ! I* U5 `/ c: Z2 Q$ c) Q6 b
valEQU QWORD PTR [eBP-XD-8] ; USE STACK
7 v8 z  B  P! m$ B. h$ `4 ipowerEQU QWORD PTR [eBP-XD-16] ; USE STACK/ w+ L' ?8 ^8 T% H
pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK
) e* I5 ]3 L$ C- L7 x' wFPower10:; P( y) ~& x3 a/ G& x) a6 I
pushebp
0 |: w9 g& d/ q' _0 ~; G* |4 V( K& {movebp,esp! Y" u1 U  n" C! n. t1 b
;push edi
: i; P; h/ e8 V% s" [' ]  r;push esi5 n; @; M7 z) Z( @& _
;push eax4 c1 ^# v8 D# x
;push edx
" ~% k4 V0 d7 q% xsubesp,24
4 t! _- S4 Q5 |: z3 f2 {6 Q0 EFINIT
$ _' X8 M" n/ N: V, G$ q4 |fldz
  _' F+ z; Y( K' @4 zfstval
! c. R8 f3 f/ O7 ^, B9 p5 mfstpower
, P, ?7 _- z: ?! \) i0 A+ i8 Lfstppow10* R9 S3 ]. d' s. z  R2 O3 A
                 MOV    EAX,8                 MOV    EDX,8; fldpi
% f$ h$ b  j/ V) H# w8 y              fld      fp_val   ;st(0)=val; fld aVal;st(0)=val
+ h4 ~+ l- A' `7 kfstval
/ p" q8 E0 C7 K% B, t: y5 `+ j# a;fld Arg2 ;st(0)=power( B' I6 I" F* Q3 [' L. z
;fstp power
2 [$ I! j, x! O- o4 I3 i1 S# ];fld val ;st(0)=val
+ i  l3 _/ Y  W: U( B;fmul val ;st(0)=val*val
/ O" p5 Q2 v1 {' X. k) Z" K7 Z3 M" E;fmul val ;st(0)=val*va*val* a* @% D* ^; f3 D0 N
;fadd st,st(0)
8 O& G# F5 w& x- ]- R2 s;fmul qword ptr [ebp+16] ;st(0)=power
: l4 w, v# ]" M/ m- d;fadd st,st(0)
6 R1 [) H0 W4 Y2 t" M$ R& @( l1 |! H;fwait
9 X0 p3 Q* d# O) s% m& L2 O8 Faddesp,244 i; e, y% m* D8 e# M8 i
;pop edx* |8 O, p2 ~# J3 o
;pop eax
+ g# u- K7 |5 @;pop esi
# p0 Z& G: A9 Q1 m;pop edi
! {! Q3 \5 g6 u% ]movesp,ebp
2 u' ^# s8 W/ ^$ Z& Gpopebp7 `4 M( H( I1 d% U
;leave ; @@@@@@ important don't use leave in vc++ 2010
/ j# c) j2 u2 RRET;return value = st(0)9 R+ b6 v$ C6 Q+ d; ?3 |! }
ppow10ENDP
8 H. r9 ]  B* e- l7 f/ J;_TEXTENDS
& o% t+ K- p$ Q; b) m- hEND
5 `8 d1 O" ~4 r0 V1 o;END DllEntry

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2026-6-3 00:05 , Processed in 0.126127 second(s), 20 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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