阳光飞狐

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

 找回密码
 手机注册

手机动态码快速登录

手机号快速注册登录

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2019-8-11 16:12:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
//////////////////////////////////////////////////////////foxfunc.cpp
! Z* l) e* `: p) M$ u
4 @9 s& f& M7 J! A& i8 u# y* G+ ]//FoxFunc.cpp : Defines the entry point for the DLL application.
$ A5 ~& c3 R, p) b& R//
, T0 n, `+ p, e: n#include<string.h>/ E2 z' O: S0 o) U0 [
#include<stdio.h>
+ n+ Y+ A* x4 ?9 w  e#include<io.h>
1 o# z! f3 P4 U' J* G4 h( W9 \#include<math.h>
# i  Q, j8 `/ m) j; A! |' K#include<iostream>
% |# [. d( ^5 @#include"stdafx.h"" x; g8 U4 V+ A# l/ a% ?' ~, l/ F
#include"FoxFunc.h"
0 s( _6 c# A3 ?8 Kusingnamespace std;
, K( S6 s0 k4 s# tBOOLAPIENTRY DllMain( HANDLE hModule, 0 E( |. c( ~5 F" e: b
DWORDul_reason_for_call, . Z# f" A. u3 d
LPVOIDlpReserved
# e, N  n4 f5 ]! x; S3 y8 v)& G4 k4 W/ @1 }/ t( d8 q2 }8 V. {
{
, B+ t7 j6 _& z, V+ Lswitch(ul_reason_for_call)1 h- H% B! z% ~: U# V& _
{
& ^0 T+ ^1 Q# H" ?6 O- K/ g' I' DcaseDLL_PROCESS_ATTACH:
3 A! c* ?; a6 e1 v4 m, F7 T  ^, mcaseDLL_THREAD_ATTACH:
/ }' H9 ?8 P% f" m& dcaseDLL_THREAD_DETACH:
$ t0 l- N. y( z  T( \$ Y) McaseDLL_PROCESS_DETACH:
( }3 e: T! I; w" zbreak;/ N. |8 n& q3 R/ Y* S* u/ X
}9 y% R# d" G# ~" L" o. [- z
returnTRUE;8 V8 p3 [5 Z) O5 d9 Q
}
) P% l- q# C% p//计算收盘价的均价,一个常数参数,表示计算周期
; O0 b7 R# d9 z3 e/ M//调用方法:$ x) o7 ?2 V& D) q
//"FOXFUNC@MYMACLOSE"(5)
6 ]- w* f1 T* |# v% z' X/*
8 }6 R4 s8 j9 D( O5 {5 P//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib
7 _# ]6 m# i2 M/ Q  a//extern "C" double ppow10(double ctemp,double length); - - -> both are the same
; ^+ y6 u. K! o  E% h! }% }*/( R- g8 B* N/ w/ N1 c7 G
extern"C" double __cdecl ppow10(double ,double );
) G% d+ L4 A1 L7 d//double ppow10(double ,double ); * p; h; {$ Q: n& N" H+ a. t
//call pow10() by __cdecl
2 \$ t0 u5 @1 I- Z8 M//!!!!!!!! use "C" for Microsoft visual C++ compiler
- u5 a4 g9 [3 y, E4 Z; S' N//!!!!!!!! use "C" for Microsoft visual C++ compiler
% J  v0 J) n. T5 d) S//!!!!!!!! use "C" for Microsoft visual C++ compiler
# e, @2 c, e9 Z* w( `# {# H//!!!!!!!! use "C" for Microsoft visual C++ compiler8 {1 e1 r$ a* }+ y7 Z
//!!!!!!!! use "C" for Microsoft visual C++ compiler) S3 u* ^1 Y, ?& P6 t0 b' g
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)# M/ s* V% F+ M+ Q- x
{
; f6 e) o  d: w' ]# fif( // pData->m_pfParam1 && //参数1有效3 g8 S; M% f3 }5 g9 [. y7 ^
//pData->m_nParam1Start<0 && //参数1为常数
- O) ~3 ?. z! l" R0 N//pData->m_pfParam2==NULL ) //仅有一个参数
( [4 h; `/ Z1 b( f% Q# A, }//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4
0 p7 C  Y1 u9 q8 d//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&& G  O& u% ^+ ]( h
//pData->m_pfParam7==NULL)
% ?; B2 c3 A1 ^' p6 H% ]5 `) W//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&- q1 z: q6 E8 r, V9 U
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0
5 N8 p6 n2 t- Z; I$ L3 g1 U, R4 {&&pData->m_pCalcParam[2].m_nParamStart>=0)
0 ^5 g$ g6 K" r9 t- A& c{
  {$ l( Z1 w- m0 |" ?% y; VfloatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0; o& q2 E" n  @! u! r/ {, B3 u
intnPeriod = (int)fParam; //参数10 ]7 `9 O2 r% \8 k! E. l% O' c
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to 2 h+ O2 \. H  H- B- h* j0 _3 E
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to 5 p: F$ t4 _5 T/ p, P
constfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to ' u6 C: ]+ N/ g$ K3 l% X# n1 O
constfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to ; D# W# h5 ?0 A: G0 |8 B1 {+ C$ p$ m, g
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to
8 s5 A5 o1 [$ h! v& G- |' t/ K//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam / M0 p( I2 c4 x5 j0 M( q
//pData->m_pCalcParam[5].m_fParam); //value( h. R( f% j9 l2 s- R
//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
  I) C& l; Q5 ^1 e$ Y//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;( L5 z: L( f4 x
//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;( K; _7 [5 ^: m/ Q
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;3 U7 ?8 k! f- G# P: {4 O# }9 n1 [# B
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
8 a( p# z. F5 J% {& Y1 m9 lif(nPeriod>0)
; ]! N- K! c/ s{& D1 o5 k! {: a( U4 ]
floatfTotal;
8 t; R* D& e6 F, Linti, j;: Y, e$ s+ Q8 v4 W
intndata = pData->m_nNumData;
, e( f& ^+ W/ l$ r. e//float yy[5000][1];
; }1 C) P" Z, T* V+ Z5 R/ P& Kfor( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效$ v7 k1 ?6 U4 |; G) Y/ {' x
{
# M; D1 r: S7 ^& qfTotal= 0.0f;
# P- ?- p1 w7 l* a( Cdoublelngth=5.0;
" i( X: K; V: _+ J2 I) Odoublectemp=4.0;# F& D  }9 X5 C) [6 c1 Z5 g
//float yy1[5000][1];' u" z7 H6 i: d/ o. _6 v$ x- Z
for( j = 0; j < nPeriod; j++ ) //累加, U1 Y. T. f8 w$ G0 w) @. ]
{% q, {: P- @9 h5 A8 X" G* b% \1 F
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误3 J5 V' O3 _, u" Z1 m
}/ r- w8 P" w* }7 r- l
//pData->m_pResultBuf = fTotal*1.03; //平均
% F  W7 h9 K- a8 f- s! T& J( r: Y4 Z$ NfTotal= cpParam3;
7 M% z* g) d/ lpData->m_pResultBuf= fTotal*1.03; //平均
3 a" F0 s9 u2 N) N( G* ^//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble
7 h1 f7 v! ?% h6 E; e3 v//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value' j+ {- y8 r, U  C/ N3 I
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload, G) \' t, X5 t( [8 d, s& Y! u: y" e
}5 s# K) t9 R' p2 n% }2 v2 }
returnnPeriod-1;4 @% k# J2 A6 V+ {. ?9 e3 G  u
}
7 O4 H5 c, S: S  N  Z4 t}2 L0 w5 t4 ^6 V
return-1;5 O' ?' J; ]0 M) @: y/ J6 F7 C) N
}8 c. f5 `0 F% ~
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期
% `7 d* `3 G: c, ]" F" [//调用方法:
+ {+ b; K$ B4 B% w8 r* @//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)6 U4 }' H0 q/ B" T
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
, {4 A. E5 `4 W/ I& A: X" O" e{0 A. d6 U6 z$ N; B
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效5 [$ q4 W$ W6 _7 A" `: t
pData->m_nParam1Start>=0&& //参数1为序列数
& A; m4 @' ~9 v2 n7 KpData->m_pfParam3==NULL)//2个参数* h2 \; }+ I7 y: R9 w- [' X) k
{
; ]" Q) e& w# ]* L9 ^constfloat* pValue = pData->m_pfParam1; //参数1
1 t5 o- I* \6 V. |" zintnFirst = pData->m_nParam1Start; //有效值起始位. M/ |/ B& ~4 P* |+ }' X4 \
floatfParam = *pData->m_pfParam2; //参数20 @7 v6 D$ y- n& J
intnPeriod = (int)fParam;
) u1 A' H5 h, a9 pif(nFirst >= 0 && nPeriod > 0 ); o7 R; f/ d$ ~6 T7 s  F4 |! J
{
- J" J( I7 y3 V% `  z- ZfloatfTotal;
- `' E& g- I1 U9 m/ E3 Y% _4 }4 ]inti, j;
5 @6 ~4 F# |2 @% B- Ifor( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
; f4 U8 m5 Y$ m) ^% H, p{$ K" J1 {% |& k5 i
fTotal= 0.0f;
8 Y, z- l1 P; n7 U1 H0 H! w4 K6 u) Vfor( j=0; j < nPeriod; j++ ) //累加
: d( O1 p1 f/ W3 L0 wfTotal+= pValue[i-j];& y" ~  e/ K" B9 V4 A, m
pData->m_pResultBuf= fTotal/nPeriod;//平均3 ~. P9 }3 F0 M& |* Q, _
}) P9 p0 O  W2 I' O
returnnFirst+nPeriod-1;; |! F* V) C' c
}
$ q. C3 e, y' m2 H; y}( _8 v8 S# m, r0 F% ]7 k5 _
return-1;% g( q" T% G& o  K8 d) I
}
  a5 x, |. @! X3 L& H3 }! E, w4 H8 C//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数, u+ ]' K; {# h% f/ h% f
/*0 U1 @5 Z; c0 I7 z& O& |3 Y
调用方法:
+ ]; I7 a" Z! \7 [0 I' f2 {2 vMA1:=MA(CLOSE,3);
$ p+ Z1 W. m2 s5 VMA2:=MA(CLOSE,6);
( w/ d3 z' q, k0 KMA3:=MA(CLOSE,12);. [' H; n" \. q+ K- c, N6 B) _4 h) J
MA4:=MA(CLOSE,24);
+ P: R0 ]* {0 {( k4 z* p0 B, YMYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);& X, w2 T4 B( o% B3 Q7 H( T
*/
# y( X& e/ P" n) ^; l5 u__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)* E2 v, j! t' j: O
{
; Q$ a9 @5 s' @( S/ L1 F0 G0 J6 bif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&* Y* T$ C2 b9 J# r, p6 G7 ?3 R5 z
pData->m_pCalcParam[1].m_nParamStart>= 0 &&/ `* g! O5 k" V7 z- M. e
pData->m_pCalcParam[2].m_nParamStart>= 0 &&
, @, \6 t" s, F, Y  [+ U: T4 {pData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值; X4 p% a6 f; h0 c+ v
{
8 r$ @& F9 e7 h8 z4 m//计算返回的序列的第一个有效值位置
3 U% j9 ]/ l; IintnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致
8 w7 ~7 P. ~. ~- A//若不知,则
% g# Z9 f/ \$ }" Y/ i* g& ?/*/ i# l& I- O) b+ N( @
intnFirst = pData->m_pCalcParam[0].m_nParamStart;
0 x% @. U4 K- F2 J7 gif( nFirst < pData->m_pCalcParam[1].m_nParamStart ) ( R8 T7 n$ l4 c
nFirst= pData->m_pCalcParam[1].m_nParamStart;
+ g* |8 a( s# P& d& O; v/ Wif( nFirst < pData->m_pCalcParam[2].m_nParamStart ) % |5 B& `' K- \
nFirst= pData->m_pCalcParam[2].m_nParamStart;
6 q% q( k- K9 I* I; R0 pif( nFirst < pData->m_pCalcParam[3].m_nParamStart )
: p# {! ?5 ?3 Q+ {& e6 @  O! enFirst= pData->m_pCalcParam[3].m_nParamStart;( s( n, G  n/ [' I( q5 p5 Z
*/& c9 d, {3 B! n( b5 r  [: S
constfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;
* A3 F. e0 V( w, V) Pconstfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;& w% i4 N. }1 y
constfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;
9 A& h, z  y. [$ L: nconstfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;
: E4 O; p: ^$ R' Dconstfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;
5 ~+ f/ G2 y3 z, ?5 |6 T  w9 Dconstfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;" Q4 q; o* F* \9 `* X: m) n. \6 L
//const float* pValue1 = pData->m_pfParam1;
0 S) {; S4 E! A' z//const float* pValue2 = pData->m_pfParam2;
+ ?7 L9 o# S' K. }//const float* pValue3 = pData->m_pfParam3;
7 q! T) _8 h4 @) B( P" {! J//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法2 u' j8 i' }+ K- i8 f- Z: D6 c1 F
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
. f; c7 r6 a; C. m5 O# Cfor(int i = nFirst; i < pData->m_nNumData; i++ )
) B" m$ [* R* c$ G1 T6 i{$ N3 o1 ?- V( C2 Q8 i
pData->m_pResultBuf= 8 }) p( J: W+ Z+ U* S' e
//(pValue1 + pValue2 + pValue3 )/nNum;% Q! A1 F6 V- N, z; G( p
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
* [% {, f1 m1 Y1 W$ r$ z5 M8 T}9 J9 @5 b2 R3 R3 Z
returnnFirst;# y* G0 T8 X2 B$ n0 ]7 p
}- z  e9 C4 D1 x+ S8 e3 o, B
return-1;/ R, ~" K9 q! X
}
3 A" w5 I4 U) g( V" _0 U  k3 w% i, G7 }( F. @( X7 ^0 @

% h9 }8 S# u) `, b* F) ^
& e+ e, t% T9 h" Y8 a  T$ Q0 [0 ~3 @//////////////////////////////////////////////////////////////pow10.asm
9 H; z8 L' J. [0 x7 t5 [;*******************************************************3 V5 O" r4 W: f  `, S, [
;* *
! p# C- a# n% `' L) W6 p) };* Delphi Run Library *
* [, X, Y  [# Z  n6 x4 G  _+ p" y* s1 Z5 d;* *4 ]% n9 O+ I: w) F# J5 e
;* Copyright (c) 1996,98 Inprise Corporation *# m! L+ E9 M/ R8 y6 }- b5 b& L9 u
;*--------------------------------------------------------------------------4 r+ `  [7 Z, o6 a2 Y2 Y# b
;* To compile "tasm32 /ml pow10.asm" *( e2 y6 @, n! e
;*--------------------------------------------------------------------------5 E7 j* h8 o% K) J& d0 r
;*******************************************************
& ^6 B6 J8 `, D9 Q3 u.386. n* g  i/ T7 x3 D( Y9 C
;.MODEL flat,c (error must be in segement block must have segment# T$ r$ V7 \, r# O2 m: Q- r7 B5 z6 }
;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'0 {7 ?8 c0 {, {1 [1 s
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC
9 R9 A4 u5 U6 r- |9 B1 s- O, z;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'
4 l1 n2 }5 B5 p2 `2 ^2 n.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'1 Q: N( X  w  A: E* B5 p
;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
/ ~) E/ R) W0 r& };includeE:\Vsource\masm32\INCLUDE\windows.inc
, X' i/ C. V- N5 q9 h. J6 V1 u7 ~;includeE:\Vsource\masm32\INCLUDE\user32.inc
, U8 W, d0 e1 B% [  @, z! [;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
) c5 E# o) @6 C+ l0 |  yPUBLICppow10
/ B; s7 U' H9 Z) \& T: k.CODE7 o, ?) O$ |2 `. R: t
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD0 X3 `) v/ ~: [# D, e& Q6 b: P
;.if reason==DLL_PROCESS_ATTACH# W( ^4 N( K6 |
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK/ U% q9 H9 c- K) T$ m! e; c
;.elseif reason==DLL_PROCESS_DETACH6 {9 ~% i5 A% w8 R. K
;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
/ H5 V' W; F' a, W;.elseif reason==DLL_THREAD_ATTACH' g5 X  t' i+ S  K# B2 r7 q; ^; k
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
: y* j  {8 T) @) }2 W# j7 D. Y# |;.else ; DLL_THREAD_DETACH
; z; |9 ^6 X7 ^8 \6 x  M;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK7 a- ^; O3 X! Q1 f( z$ C) f
;.endif
, \2 E( k1 l& h7 U4 p1 k! B' ]& H;mov eax,TRUE
+ }: E9 m* N8 E) v0 S7 O6 _+ v' l;ret
; O! P3 q' e; \, E6 d;DllEntryEndp$ i* I, ~' H* ^& h
;FUNCTION _Ppow10( double val, double pow: ) : Extended;
, n$ S) h, U0 h* {;_TEXTSEGMENT WORD PUBLIC 'CODE'
0 }' L; D$ i5 U" [9 [9 G;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
( n6 H; d2 s' m3 P7 v& };ppow10 PROC,aVal:* Qword, bVal:Qword- _/ V. f4 Z+ L
ppow10PROC near
: E6 l0 H6 \0 M" w! j2 E1 O3 PXUEQU 8 ; for eip & ebp
( O9 I2 I3 F- a. G: FXDEQU 0 ; for edi, esi, ebx, ecx, edx
8 m3 r: J. L( E( h& D+ U. t$ afp_powerEQU QWORD PTR [ebp+XU+8]
3 z5 i0 c5 V# ~% f, o9 Dfp_valEQU QWORD PTR [ebp+XU] . p% J2 O* k( T6 I, k, J2 f
valEQU QWORD PTR [eBP-XD-8] ; USE STACK. \) T8 O- |. q! k# w9 u6 S
powerEQU QWORD PTR [eBP-XD-16] ; USE STACK& y) v9 d! {7 u3 R1 P4 Y% `3 Z
pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK
# Q& U7 r  @  B' CFPower10:6 K) U5 g4 E+ ~0 _# d6 F  G
pushebp' t  X/ m# Y* M: i* c/ u# ?
movebp,esp" i1 D) }& E1 R
;push edi
) l* |- E! b0 H( {5 S& u;push esi
1 ~- L3 P  Y+ T; ]4 [' c;push eax, ]: C' x- d3 O  {+ `, f
;push edx! Y8 _8 j/ f) e8 W: B8 v
subesp,24# g, ^" y3 j4 ^' s% N$ P
FINIT' Y1 Z9 C% {0 z  V" f  f
fldz$ P6 c& ^8 R4 j/ e. M$ V
fstval% h, f- f; e1 A0 s
fstpower9 V: `# y/ M6 m, P+ q2 H& L# K
fstppow10
' {& H  ~4 H) I' j/ z, P; |, S3 c                 MOV    EAX,8                 MOV    EDX,8; fldpi
2 c% K% u4 O% W# }0 U) S              fld      fp_val   ;st(0)=val; fld aVal;st(0)=val
; E# d8 z2 u( f$ E& f2 [fstval0 z6 E) m; \7 T
;fld Arg2 ;st(0)=power
- ^4 Z9 O7 k3 ~9 M1 }6 V* e7 Z;fstp power
1 E2 O4 f+ Y) \  M;fld val ;st(0)=val
0 D8 ?1 j3 E" e- j;fmul val ;st(0)=val*val
( V, R0 J6 @- u4 a) y;fmul val ;st(0)=val*va*val
+ q5 H2 i. }$ i3 t. I;fadd st,st(0)6 A& J5 A$ }! v  a4 S4 K
;fmul qword ptr [ebp+16] ;st(0)=power3 O. m4 H7 X/ q- ^+ _* |
;fadd st,st(0)
0 \- X; O" H; y( Z; @;fwait1 C( o9 W; Z  h- p0 |- S
addesp,24) U7 O2 V6 H+ B0 K
;pop edx  o7 n6 u1 C6 w% i# Z
;pop eax: P' |* z8 v! T/ h1 }
;pop esi( D6 P" J/ J. D5 ^2 @; G- E
;pop edi
1 t8 V# l7 u( g# [2 ]8 C1 B, hmovesp,ebp/ W) t! _3 t6 o* w! `8 w$ |; w
popebp6 U* ]- F9 @$ n3 p
;leave ; @@@@@@ important don't use leave in vc++ 20108 A2 d7 G1 @- W0 l/ y& x5 ~) q/ N
RET;return value = st(0)* u! x0 ^4 c% r
ppow10ENDP5 |5 t' R# {1 c6 j% l4 M
;_TEXTENDS
7 G$ h6 O3 ?* }) UEND" H, C+ D* d( [- G/ ?% [7 |$ ]
;END DllEntry

评分

1

查看全部评分

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

本版积分规则

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

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

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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