阳光飞狐

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

 找回密码
 手机注册
查看: 1896|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2019-8-11 16:12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//////////////////////////////////////////////////////////foxfunc.cpp
- D# N8 K% K/ q0 F2 @) _) Z  {5 ?) H
//FoxFunc.cpp : Defines the entry point for the DLL application.
" k& @6 B' J) H( c/ b//
7 Q; u+ p" \& K( F#include<string.h>
. R) G1 f( w1 K) R" l% k#include<stdio.h>
$ O. d, g, j' ^. w# o2 u* X7 \5 t  ^#include<io.h>; T. m* a- k% E3 o3 D  }
#include<math.h>  u- X2 O" ^2 X* R7 r7 l
#include<iostream>  x7 t& L6 l* X' A# C
#include"stdafx.h"
, T5 B9 G9 O( q#include"FoxFunc.h"9 P( w* F2 I4 U) z: T
usingnamespace std;
% Z$ f! d! o8 z$ ~- M, iBOOLAPIENTRY DllMain( HANDLE hModule,
* p/ q' K' f! j! r. R: JDWORDul_reason_for_call,
+ v) n& L1 _& L! l+ F" m+ JLPVOIDlpReserved
  u; s* y- P4 F  V' K6 l, w1 R/ t)& b1 k( Q7 [- A$ M+ y# }: `5 j
{
8 l) g, I: G1 I# _& wswitch(ul_reason_for_call)
3 M6 g3 k& h* i5 Q# Z- I; G{; h  o- A  n* t- f6 D
caseDLL_PROCESS_ATTACH:: F( v2 Y2 @! R# H0 Y. w+ d2 \
caseDLL_THREAD_ATTACH:
) f/ S2 H8 ~& h! S/ H! |6 IcaseDLL_THREAD_DETACH:8 i, Q2 D5 C" D/ ~9 U
caseDLL_PROCESS_DETACH:
' J( j! Z) ?, T5 F, F5 Jbreak;
* a& }9 _, _5 D* `6 ^$ u}. l8 {( Z) G/ P7 {! z  S& ^
returnTRUE;
' R3 M: y* D  G/ N' _}
* d0 p" E3 d* v9 u+ l! b7 t//计算收盘价的均价,一个常数参数,表示计算周期2 {) f7 @, @# S% u! [
//调用方法:" {: _  N. T! e" n" s; D( E
//"FOXFUNC@MYMACLOSE"(5)
% D9 A" @" A! ^& h' G3 y1 e# @# l& o/*& d1 j: }; h9 Q; J5 |( C
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib3 P/ T/ u. ?6 Z( O, t
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
0 O# l2 N2 E/ S+ I9 w, Q*/2 ]6 s8 v5 m$ |, c- Y
extern"C" double __cdecl ppow10(double ,double );
! e! m# `! V7 Y8 ]. H) }. O8 Y//double ppow10(double ,double ); 5 x% U( T! I. s
//call pow10() by __cdecl  B$ ^! H- @! M+ x$ r$ y) @2 y& o0 z) l
//!!!!!!!! use "C" for Microsoft visual C++ compiler
& c5 w# P( b- j7 w" s" X//!!!!!!!! use "C" for Microsoft visual C++ compiler" P$ M. ]  M4 \- a% q
//!!!!!!!! use "C" for Microsoft visual C++ compiler
2 F7 e0 M6 z5 c3 I4 E* f* j//!!!!!!!! use "C" for Microsoft visual C++ compiler
5 G3 J. D# [* v* W: G* f2 n1 D% E//!!!!!!!! use "C" for Microsoft visual C++ compiler( k* |/ {) c1 t" R, l2 R" u6 ?1 X
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)+ j# P; Q0 {1 r# [! `6 y
{. Y0 c% y0 ~2 E$ B: ~
if( // pData->m_pfParam1 && //参数1有效
( w) R' |3 E2 k( Y//pData->m_nParam1Start<0 && //参数1为常数" Y) V7 l0 W: z, o+ u
//pData->m_pfParam2==NULL ) //仅有一个参数
. z7 T1 e* T# {//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4
: n3 p" K. F4 W9 R5 u) V//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&
, g) F" c! Z) G; W//pData->m_pfParam7==NULL)  o% v8 T8 G$ X+ B
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&
& q8 N# ]* o: ~1 N8 V' WpData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
0 L- U( P6 u: n6 P. H3 {3 V$ b7 j&&pData->m_pCalcParam[2].m_nParamStart>=0)
* }: j4 F, X1 ?; s) H: ]{
! o4 L( S! W5 f9 {/ zfloatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0  }/ N( c' Y7 m. M
intnPeriod = (int)fParam; //参数1
  ?' ^5 _5 u" ~/ `//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to 4 Q; Q& f! m0 F& G  w
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to
0 O3 e. Q* F0 M  `3 econstfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
  }) V5 q' N/ g1 Pconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to , n. r! M8 x  _9 Y/ T- f/ ~
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to % e& O5 s* Y7 l  H. Z+ I8 y
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
  K. g+ M$ w- u8 m! O2 E//pData->m_pCalcParam[5].m_fParam); //value
0 r7 Z) C+ I3 K) V5 r//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
5 y  R! H1 [" M7 d: X' B//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
/ x1 C9 x' B5 b: a8 s) X4 ^1 i  f//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;( c- H. `( W: o# L3 S8 F
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;
0 Q( u0 i" }" J//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
' n! z! u  G& D) V7 `( Zif(nPeriod>0)
0 D9 p) D5 L2 v{* W1 R" F. m" K0 f1 q( @
floatfTotal;1 _8 a2 N) e" @  l
inti, j;
+ F0 ]8 D* b% M# v& G3 eintndata = pData->m_nNumData;; g$ Y/ g8 P! ]6 k
//float yy[5000][1];! J. q8 Y9 _" d4 R1 L* W8 j
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效* C. |% V0 Y/ \; d, P
{
# V3 ]1 ?# f8 |- dfTotal= 0.0f;1 z2 G; I$ }8 n' n
doublelngth=5.0;( Q0 ?" J" ?. P9 r8 [
doublectemp=4.0;
$ Z& y6 Y& M! G4 K, D' \9 V//float yy1[5000][1];/ ]! c; k0 n; `! p
for( j = 0; j < nPeriod; j++ ) //累加
- x, o" o1 `/ f: @6 [2 g( l  F/ P{0 W! B8 E5 ]% T( ]* U
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误+ B& r! y! S8 j$ k2 E8 e/ n% j( u" W
}! d6 q0 \+ C2 \9 z6 e! f9 v0 [( z0 p
//pData->m_pResultBuf = fTotal*1.03; //平均
. k* [. A5 _3 Q$ ^2 _$ f7 U5 OfTotal= cpParam3;. m3 E: l9 G, \+ J
pData->m_pResultBuf= fTotal*1.03; //平均- W; i8 y; Q4 G( y7 K* [
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble: a% z( y# `; L+ j$ o
//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value
: V6 u* ~+ `% x5 D. w* y8 _pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload- G1 C- Z! l8 r) s
}4 K) Y& `* E. C% S( D
returnnPeriod-1;
  _& k) L: T, j, ~8 Y}
1 M6 S* A& T; i& k7 k- N9 G. V}
7 O" h' E9 _' t4 y# mreturn-1;
( m- v- W3 U" t/ z9 M7 U}/ i# g- G1 l8 N1 u9 v9 G
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期: X, Z7 s6 f: W! D2 t# Z& E" S
//调用方法:( n4 K) ]8 I% y# I+ B. G9 j& }
//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)/ E0 T" t: e5 {  `9 j& `
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
  C# G* P, l) k# i1 w& H+ H; m{
" e  J5 X7 B! i. }. ]& ^8 ?5 l1 o, Cif(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
9 i) s6 L' q. lpData->m_nParam1Start>=0&& //参数1为序列数) e0 y; a1 f. z2 W
pData->m_pfParam3==NULL)//有2个参数
( {8 d  A6 n8 z1 e# X% o. k( p{
$ k9 ^7 Z! E& M3 e" Aconstfloat* pValue = pData->m_pfParam1; //参数1
* P; u" }" `( \' J$ _9 x5 D  ?$ D/ nintnFirst = pData->m_nParam1Start; //有效值起始位; J+ J$ G! M% Y( s0 T5 ^
floatfParam = *pData->m_pfParam2; //参数2
8 R, k$ \$ m. K4 }" [! qintnPeriod = (int)fParam;
! Y$ @+ g% y0 Q: t/ N- Bif(nFirst >= 0 && nPeriod > 0 )
4 N) c) W7 Z; ]. W+ h{1 `+ w5 T9 ]8 ?# j4 ?
floatfTotal;
7 W9 y$ X4 {1 r! L- a$ K$ n% cinti, j;# s2 y: Y+ n+ o8 n, S8 U4 g
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ ); ?$ ?- G' ^5 r+ E4 S: [% j
{* s3 a9 Z# z# Z% m3 a2 j4 a' G
fTotal= 0.0f;0 L& x$ H: p% l" y9 G
for( j=0; j < nPeriod; j++ ) //累加$ u& j/ e! K2 r+ I9 l
fTotal+= pValue[i-j];
1 i  u$ y. u8 V" N6 ^, p6 cpData->m_pResultBuf= fTotal/nPeriod;//平均  ^; N. j6 [: l( f, A$ T
}4 h# B' N( V  B
returnnFirst+nPeriod-1;; h6 V; U! b4 Y6 `7 t; Q+ T
}
4 O& L0 H: n. X0 t}9 P0 K, j4 {4 `: W9 x( v
return-1;
+ u  O, O( V; s7 d$ x' h" D}
! U1 R5 F; f1 i2 e/ {/ m//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数
$ [+ P5 N6 T3 {" o/*
! [+ ?' h# c. k$ y  u+ N调用方法:' P- l8 ^( i. `4 u
MA1:=MA(CLOSE,3);5 \8 z& |5 ]7 g' p' \5 S
MA2:=MA(CLOSE,6);+ c5 d3 `  q$ _' B/ v; A+ U) x- F
MA3:=MA(CLOSE,12);. `' Q) Q% V# p7 ~3 w5 [
MA4:=MA(CLOSE,24);8 a- {9 s+ l! Q5 L$ K8 |
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
% T7 s9 e) M, _' }& x5 f*/
" Z# Q2 j# i! G# B__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)
* u# a) ^6 ?: W{  l# J. U9 Z) h  R& W
if( pData->m_pCalcParam[0].m_nParamStart >= 0 &&
5 N, b& `6 ]2 E$ \pData->m_pCalcParam[1].m_nParamStart>= 0 &&
" F2 M9 Y0 J+ z7 l2 g6 W8 `- [pData->m_pCalcParam[2].m_nParamStart>= 0 &&6 L% h+ l7 x" e2 [5 G4 H
pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值1 l; f# V% Y! K% A# s: e
{
4 s( ~  d  V% a) w//计算返回的序列的第一个有效值位置
8 Y+ x( o  t$ }intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致9 k  W' l2 O* v0 w6 _
//若不知,则
+ Z9 n* Q( k4 d/ b" ]" m( p/*1 o1 l: n- v  b7 E' Q
intnFirst = pData->m_pCalcParam[0].m_nParamStart;
4 B/ ]1 ]. z! @" v% Fif( nFirst < pData->m_pCalcParam[1].m_nParamStart ) ; r- h7 K, {8 H& v* b' j
nFirst= pData->m_pCalcParam[1].m_nParamStart;
9 v  T  t% c1 h2 pif( nFirst < pData->m_pCalcParam[2].m_nParamStart ) * J3 L. \# ]. r1 x9 q, M' T0 R
nFirst= pData->m_pCalcParam[2].m_nParamStart;
7 n- q9 O1 T1 P9 B) x) Aif( nFirst < pData->m_pCalcParam[3].m_nParamStart ) , Z2 v& N- X5 ]0 y5 S" e7 m
nFirst= pData->m_pCalcParam[3].m_nParamStart;
, }7 E" N* }9 Y*/$ O7 s3 j5 `5 a/ z/ b# @: y1 W
constfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;$ U" |9 e' i8 g
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;
, g- S" m( C2 y" cconstfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;
% q- w0 i0 {& S0 |8 sconstfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;5 X# G) k* o* m: T% E' r
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;6 Y% G) `/ V" u% [3 i
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;
" L' U$ H# T5 c* {" o: R+ D) i//const float* pValue1 = pData->m_pfParam1;% q. G) T3 m& R* t# n
//const float* pValue2 = pData->m_pfParam2;
. ^1 B8 x* R1 B3 W5 x//const float* pValue3 = pData->m_pfParam3;
4 _& z; F: U0 }  p6 J9 O% G//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法) R" _8 x* l1 |9 q' A% A# M
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法% B! @* H: L1 W9 L( p: z
for(int i = nFirst; i < pData->m_nNumData; i++ )* V2 g6 H9 s) c" K
{2 t9 B0 A# |9 ~) ]
pData->m_pResultBuf=
3 v9 g% a3 F6 z. r//(pValue1 + pValue2 + pValue3 )/nNum;4 _9 x4 r2 n# F5 i$ Y  O) O5 t
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;( E" i4 a- P1 e0 u( b% C+ N
}+ @  A5 O: \+ C# e2 X+ ^
returnnFirst;" U7 ~8 W5 |  c0 n. f+ l* \/ [
}& G. n7 K: G& _0 P3 }. P
return-1;
# _' \  w6 U6 d! c}7 J% S$ v+ P3 `7 x. P
- W! {- u" w' d$ i  N: [

, ?$ {1 |7 `4 N! j) G7 G6 b+ u4 Y% ~+ @, U- r; }( ]  n$ j$ i
//////////////////////////////////////////////////////////////pow10.asm9 e3 B* y. r% z  G, Z1 }/ J) W
;*******************************************************, a* v3 c# `6 J" `9 C9 E) i
;* *0 b' H5 V% p* f
;* Delphi Run Library *
* R! A/ O$ p6 t- t' r7 L+ D;* *
$ w. P) y& {. e3 w! U, f$ p;* Copyright (c) 1996,98 Inprise Corporation *
/ m/ h( P: q2 d% @;*--------------------------------------------------------------------------
. p% o2 B3 `2 Q' X;* To compile "tasm32 /ml pow10.asm" *  L6 J% S, k8 g9 {: {
;*--------------------------------------------------------------------------6 J! z  A2 ]4 v
;*******************************************************7 i4 G' B" E+ K. ?7 F$ r5 Z
.386
! B5 l8 K$ _* n. V. a5 t2 P;.MODEL flat,c (error must be in segement block must have segment3 [6 e1 b  E4 ~. ?! D4 _
;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc') t% z9 X6 v; B/ l% q) i; V: V
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC0 l5 v0 u6 J' J& `
;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'' m: Z& c3 a' I1 j/ |
.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'7 P0 E0 m) J) K" I# v" h" B& }
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8# ]( }9 Y0 r4 n
;includeE:\Vsource\masm32\INCLUDE\windows.inc
1 b1 V* ], q; ~6 V/ K. B9 [;includeE:\Vsource\masm32\INCLUDE\user32.inc$ t. ^+ B6 i- _0 H
;includeE:\Vsource\masm32\INCLUDE\kernel32.inc6 w; E; c. p, n- J4 a% a
PUBLICppow10
, U2 _2 Z7 g6 m, U7 H7 {, e.CODE+ @# [- h0 s3 h5 M: ^2 g& I
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD% L$ V$ S. G: k& v4 u
;.if reason==DLL_PROCESS_ATTACH4 H0 s* Z7 W  y' D8 k1 q6 }! W
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK$ J1 h1 {2 p$ l
;.elseif reason==DLL_PROCESS_DETACH) `. d" W1 \3 C
;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK% ^/ D4 J( E% ?
;.elseif reason==DLL_THREAD_ATTACH
% U3 y0 ~- x1 F# h! v;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK2 a5 q0 g, N& L+ @# f
;.else ; DLL_THREAD_DETACH; ^. }: ]& V0 m" |- ]1 I
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK( f/ ~( ]% Q0 `% F
;.endif
1 g7 u4 ?; Q2 L3 L;mov eax,TRUE
% N* q5 l/ z# h9 q' v, L% u;ret6 R- M/ k5 F; [3 q. z6 M! C
;DllEntryEndp) m3 Y$ O9 l7 U' H! W0 w9 ^
;FUNCTION _Ppow10( double val, double pow: ) : Extended;
  \2 @1 a( }+ |;_TEXTSEGMENT WORD PUBLIC 'CODE'- z* K( r7 W1 e
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8; \4 n6 w& R' F1 Z; l9 w3 W
;ppow10 PROC,aVal:* Qword, bVal:Qword# V" y' ]% X" b4 i8 H/ u4 g
ppow10PROC near
4 C$ `1 {5 O; r6 I% u0 V! {' M2 ]XUEQU 8 ; for eip & ebp 1 M7 F5 q9 k: `- K! H
XDEQU 0 ; for edi, esi, ebx, ecx, edx
/ U) t2 m; V* p1 u. c- O9 M" c# Lfp_powerEQU QWORD PTR [ebp+XU+8]
9 C3 `5 _  i. q/ E" \+ _fp_valEQU QWORD PTR [ebp+XU]
4 Z$ U0 o/ S  n" M( ovalEQU QWORD PTR [eBP-XD-8] ; USE STACK
+ }2 X9 \0 A  `- i! u; I5 k: g6 GpowerEQU QWORD PTR [eBP-XD-16] ; USE STACK
5 `! T/ L* s8 T0 L) G3 Rpow10EQU QWORD PTR [eBP-XD-24] ; USE STACK
# |1 K0 \5 y2 V( Y" P- W& T: lFPower10:/ G. w2 g5 z( v) d6 E
pushebp
4 I" i0 Q2 z( W4 D$ y  Y$ gmovebp,esp: x6 a) X( A" @& S, g0 r) f
;push edi' I, q5 |" y5 j1 Q- C
;push esi  o* i* w8 l! e5 N' u/ q
;push eax
/ ?, S# I8 s- g" Y5 r;push edx  G- }2 n+ y& w3 |$ b( C3 z
subesp,24% h# B2 h( K( r; T3 Z7 h" T1 Y7 x
FINIT
4 L# m1 ]$ O0 P% {fldz$ I0 o  H4 N, F" l) }( y
fstval- W. |: F3 `* z2 `, \# W7 V
fstpower& b' r# G+ y  u) [
fstppow10
, D/ }6 b7 Z; o8 a+ p8 [                 MOV    EAX,8                 MOV    EDX,8; fldpi- F. o* @, K: p: s7 n3 ^
              fld      fp_val   ;st(0)=val; fld aVal;st(0)=val
% |/ v* u$ Q. ofstval
4 L! }' K2 k( o1 Z( B4 S1 |;fld Arg2 ;st(0)=power: P6 q: w* a2 K" D$ f( u; `
;fstp power
& W* I% X# b6 j+ b& I. M9 Q;fld val ;st(0)=val+ H) k$ x3 u) P1 K( z! M2 o
;fmul val ;st(0)=val*val
8 o; h7 s  E- C& l  e# K) j% };fmul val ;st(0)=val*va*val0 @& \% t3 y" S' V+ |) ?: G' i; l: |
;fadd st,st(0)! J" H7 `$ m6 z8 t. W% k8 R
;fmul qword ptr [ebp+16] ;st(0)=power/ f7 m$ P! b. \1 T$ k$ ]1 U+ r8 z
;fadd st,st(0)7 T' q) U, X1 K0 X& o4 o
;fwait* Z7 V/ w1 z- a, k7 A4 O
addesp,24/ P# M1 [- s' c9 `3 @6 a3 A" e
;pop edx; e' E- Z. ]  w9 A% f
;pop eax2 T: c# u- R- Y4 `7 b2 r  }
;pop esi
+ S) a6 C+ Z7 j;pop edi
2 ~! W& I/ Y$ s/ nmovesp,ebp
  P% ^' [" f' h5 O# O4 ~popebp
5 y  w# n0 X0 e4 {; u( Z( u' a;leave ; @@@@@@ important don't use leave in vc++ 2010
4 P* t7 C# b/ URET;return value = st(0)
" S7 _* T1 {$ J9 [' b/ y- v% b; fppow10ENDP' q, z' ^+ H& P) M5 t2 `0 z
;_TEXTENDS
* K- R( o. u1 `- W, \6 R" sEND
2 v& Y4 G' K, Q5 W6 g6 z;END DllEntry

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 手机注册

本版积分规则

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

GMT+8, 2026-10-19 20:41 , Processed in 0.115938 second(s), 19 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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