阳光飞狐

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

 找回密码
 手机注册

手机动态码快速登录

手机号快速注册登录

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2019-8-11 16:12:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
//////////////////////////////////////////////////////////foxfunc.cpp* C0 ^; b$ t/ {" v
0 F5 P8 I- W3 o$ W4 `* g
//FoxFunc.cpp : Defines the entry point for the DLL application.
* Y/ B2 [! X, q5 P4 v//. F5 T; c0 A- T. h
#include<string.h>
) m" c7 ?% `* \2 l* n$ x; ~#include<stdio.h>
# R. M4 ~" M! U1 [1 R2 x#include<io.h>
  l0 B  F! Q! I. T  v$ l4 i3 X4 e#include<math.h>& a( B7 |5 D" ^9 Z$ w
#include<iostream>/ m3 C. n3 k' T# i1 g$ C  `7 c0 s
#include"stdafx.h": h: T) C, {# l- F
#include"FoxFunc.h"" j  Z1 D/ B* J
usingnamespace std;
3 Y8 f7 z' F3 Y, w8 @  q3 C8 pBOOLAPIENTRY DllMain( HANDLE hModule,
9 k- s7 q' \4 xDWORDul_reason_for_call, $ x/ i- Y1 s4 z& M! p
LPVOIDlpReserved
& ?; v: k8 ^7 r, U- n)
, c- H5 {: P; R2 g{( q$ e4 l5 M" \% C' |! |1 {
switch(ul_reason_for_call): j1 P3 N" C- D
{
- M0 q4 M, Y) W( Z2 k7 OcaseDLL_PROCESS_ATTACH:, [  U5 f+ \; r- L9 d
caseDLL_THREAD_ATTACH:% s2 N$ J: F) {* z: ~3 U; f
caseDLL_THREAD_DETACH:
: Z- A; x( J# K. xcaseDLL_PROCESS_DETACH:1 C# s9 Y, A) `$ k& n
break;
* Q# \2 A1 d, f2 F# S- V9 v}
* T# n- C% g: p8 r" q8 I$ d) preturnTRUE;
2 j# N8 P! k/ F/ v! d; M9 o* o}9 R) D  ~+ ]/ R0 o0 Y: ]8 J: F
//计算收盘价的均价,一个常数参数,表示计算周期8 S& G* f1 f5 |
//调用方法:% R: \$ S* M" u9 K
//"FOXFUNC@MYMACLOSE"(5)
4 V. I( O% M4 d& @4 {" b5 }/*% w# _$ a6 t4 d  g9 d% O" L) d7 N
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib
, e, M" _+ v0 O: A# w# A+ s9 x//extern "C" double ppow10(double ctemp,double length); - - -> both are the same3 y" k+ Q8 B6 {! V
*/
3 F. ]8 M5 D7 S. sextern"C" double __cdecl ppow10(double ,double );: m0 \: X  p1 q6 \* t3 S
//double ppow10(double ,double );
7 d# C' O% ]5 Q+ C//call pow10() by __cdecl
& x2 R) j: k# Z- y  K//!!!!!!!! use "C" for Microsoft visual C++ compiler  T8 e$ [, _/ v( q$ H5 h
//!!!!!!!! use "C" for Microsoft visual C++ compiler+ |' `: r5 _4 `3 R
//!!!!!!!! use "C" for Microsoft visual C++ compiler
% Q& t4 z& z  J4 Q& f1 c/ l//!!!!!!!! use "C" for Microsoft visual C++ compiler
+ Y, J" b; Y, m: W//!!!!!!!! use "C" for Microsoft visual C++ compiler
2 b3 _( N  s1 U5 _- Y* o9 k1 h__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)
6 h) p" h# s. v' |( P8 Q! ^{2 p1 s8 c$ H) [) m+ L  _
if( // pData->m_pfParam1 && //参数1有效# r- ^, i# A2 [9 T7 K2 |6 Z; O* g3 u
//pData->m_nParam1Start<0 && //参数1为常数% i) |6 Z$ t" t2 I) H8 d
//pData->m_pfParam2==NULL ) //仅有一个参数, s: ?) O; x; [5 N9 P3 N
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam4- B+ _* |4 _/ M" o& W2 T+ b6 V, \' I# B
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&8 H5 w2 U& |0 Z/ v
//pData->m_pfParam7==NULL)
+ F( ]+ _* a2 y* t4 n//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&) z( U; U1 Y- c* o2 V
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=03 U) L; g7 ?; {3 B
&&pData->m_pCalcParam[2].m_nParamStart>=0)
4 H& [( X' l3 s+ N# i, U{& p2 `7 I9 s' ?
floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0
& c, p! g9 d6 L: q% @1 E; Y7 d+ qintnPeriod = (int)fParam; //参数1, `2 m! b) {, l  F6 I& u# O4 `
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to
8 M! f! f7 _' Z% y# U) E. Vconstfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to
( ]2 e4 w$ e/ u9 C- f3 Xconstfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
  k* A: o+ i+ U1 Econstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to
, o7 \9 U* l: A5 p. ^//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to
# p0 j2 V1 g( U* F//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam ' ?  l, V) L1 b! e& ^8 T
//pData->m_pCalcParam[5].m_fParam); //value
8 k" ~/ U6 f3 e% k//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
+ I# p9 T& m, h% [/ v7 T//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
1 l3 U3 V8 H9 I8 t" h$ S//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;
) y$ X. h3 f0 f& W+ ^; R//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;# ^) Y* ~! n# V1 K) l6 i7 d. [; V8 l& l
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
$ U+ o+ Y, N8 D  X/ Q& _# A7 r  aif(nPeriod>0)0 A$ ?+ F* w+ Q# n
{) ?* P+ c7 r" z" w* G" M6 M6 f
floatfTotal;
+ M; X$ Z+ M7 p: N, h3 [inti, j;+ i, a& O7 l. `
intndata = pData->m_nNumData;
* d5 b+ P8 r& B" u: N//float yy[5000][1];
9 A* Z% D4 c! |2 G, S- `for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效
7 v7 t# O/ B& ~/ ?{
9 J9 E2 G0 ~7 \0 h- Y# pfTotal= 0.0f;
- C2 `. o6 X3 X, b1 s0 u7 odoublelngth=5.0;
' ^, b+ w1 `7 m" qdoublectemp=4.0;
8 ^  U2 j* d+ E$ X//float yy1[5000][1];
! L2 c' N0 @5 f3 L# ~2 _8 U) Cfor( j = 0; j < nPeriod; j++ ) //累加0 @* p2 K* o' q
{
' c% y% I; f" M' lfTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误
; R( d7 }% S# k2 q$ v}
! N% n1 R  [- z4 l+ V) y//pData->m_pResultBuf = fTotal*1.03; //平均
7 {- a) _" j' L3 P5 xfTotal= cpParam3;
, D7 L. A3 \+ F) IpData->m_pResultBuf= fTotal*1.03; //平均
' l) G- e6 J* m$ T2 H( ^//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble
+ E% a3 @9 i1 P4 c+ T//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value  n5 A0 |$ T5 t; c0 A* O
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload6 S9 g' F2 L) s2 d) |, ]
}
0 C( X: |. P7 Z! e; ~) U( b3 a4 SreturnnPeriod-1;
: m& H! X6 \( k, a1 A}/ L0 p1 l, `( h9 ?* f# {
}2 z" g1 U* i/ V* E) V
return-1;
# O9 l$ u+ ~: \7 S7 O- S}
8 z% ~4 {3 `% f& g4 b$ q//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期7 F- \( H. _9 Q, Z8 w- q; a! T
//调用方法:
) i" p- e( c) c; p* L% j//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5); U! h) J4 d$ E' ]% X& C& D& G$ q
__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
) L0 d5 Z2 q+ c: W+ Z. h" l{7 F3 J: w8 g& R/ @7 a6 B0 c) Q
if(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效# s6 _, s3 r5 b
pData->m_nParam1Start>=0&& //参数1为序列数8 r, c" e/ _' [
pData->m_pfParam3==NULL)//2个参数
+ J. d% F& Q8 z8 Y$ k* A{4 g: A) J, U  D% |) d9 p/ }3 J
constfloat* pValue = pData->m_pfParam1; //参数1
% `8 Q) P& o% l  j. Y2 C) {intnFirst = pData->m_nParam1Start; //有效值起始位3 f# _1 i. h2 l. p1 V5 q
floatfParam = *pData->m_pfParam2; //参数2
/ L6 d& Y8 E: \: ]7 nintnPeriod = (int)fParam;
! A: }! j8 I& L, }+ E! Vif(nFirst >= 0 && nPeriod > 0 )
$ X5 s' {: u, t{% Q6 i8 N2 v2 `' D& J$ D# ~" b
floatfTotal;2 O% V$ ]. S7 Y% {: I% t! l
inti, j;8 o% ~6 C* K: u! j/ k$ u8 S
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
, k. m" [4 N: ]{* W5 Q4 m! f1 a9 F/ j+ Z0 q
fTotal= 0.0f;
% F; T5 e* T" Q7 Dfor( j=0; j < nPeriod; j++ ) //累加. _' t: O% D2 Q& M
fTotal+= pValue[i-j];
1 o& D* F9 r( L3 r' P3 d' [pData->m_pResultBuf= fTotal/nPeriod;//平均
9 s. V. W% V3 m}2 |  {# K* h6 D# Q+ o+ I
returnnFirst+nPeriod-1;& M4 m6 x$ U) @/ Y/ z% X
}- h1 Z0 _9 |( i/ g2 ^
}
$ q; _! N0 e; }9 C: k9 A3 ]% T6 treturn-1;4 V7 k& D4 L/ k* L$ f) H
}% A; r& G. [- W$ d  t
//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数" y' p( G2 F# |) j) k
/*
  X+ e( s9 y8 `- U7 T% @/ y% k调用方法:3 ~' c3 b% B3 p( P# `! k
MA1:=MA(CLOSE,3);2 k- M1 t6 u# L( A
MA2:=MA(CLOSE,6);2 v! [+ L; \: S) [5 z
MA3:=MA(CLOSE,12);
- a/ W' N/ l/ z5 WMA4:=MA(CLOSE,24);0 D0 |6 {' Z' p
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
) H$ v6 x. x& E# U: M*/; S+ H+ G  H  ~5 J- [9 ?* Z  J
__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)5 T" F( b; a* S$ W+ J3 ~
{
+ a2 F$ [4 b- i% K& hif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&: n, S  G. {" Q" `5 n
pData->m_pCalcParam[1].m_nParamStart>= 0 &&
; l! S0 h3 N7 _: y5 N# epData->m_pCalcParam[2].m_nParamStart>= 0 &&
$ H% x: _4 w: z: H" qpData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值
  k' W0 s7 Y1 u' o1 k: v{
  @) N; u0 \9 k, @: }0 M//计算返回的序列的第一个有效值位置9 z5 y- |2 J( i- i) Q
intnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致7 |! X# Z$ g) w
//若不知,则
2 A# {0 t1 M: w$ Y/*% {+ O. _0 ?5 p" K2 M
intnFirst = pData->m_pCalcParam[0].m_nParamStart;' m: |" ^1 t( C8 a1 ~; b
if( nFirst < pData->m_pCalcParam[1].m_nParamStart )
  F6 o6 e6 m' h( o! q+ U7 y: W' }3 bnFirst= pData->m_pCalcParam[1].m_nParamStart;
$ H! l; A' h" W% N8 wif( nFirst < pData->m_pCalcParam[2].m_nParamStart )
4 F7 `' R: d4 J" I8 a( v# u  }" f3 @$ tnFirst= pData->m_pCalcParam[2].m_nParamStart;
" o2 T' t/ H( y& Dif( nFirst < pData->m_pCalcParam[3].m_nParamStart )
# {* U. G5 N. z* \/ C. Q9 z1 HnFirst= pData->m_pCalcParam[3].m_nParamStart;* p8 D  m* W0 t
*/
3 K( K, H8 R5 z  Pconstfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;7 J( C2 Z( J: Z
constfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;
3 g  ~1 P3 {2 M9 Kconstfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam;( M8 L9 n3 s8 ]; {
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;, f! b* _1 n5 j- v5 G$ b/ J
constfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;! S+ H7 a' i# s" c8 {0 A! V
constfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;+ u+ K7 d; X  O$ v
//const float* pValue1 = pData->m_pfParam1;, ^$ N: a/ X& h+ y5 U( |( h
//const float* pValue2 = pData->m_pfParam2;5 Q5 o0 i0 ?7 M3 V
//const float* pValue3 = pData->m_pfParam3;6 y# E/ k! c& |, n3 F4 ?6 v. F8 y
//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法+ R/ F' Z* e5 g0 |, R1 l2 p" j& k
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法3 p( a& `2 ~4 O6 u9 Z: M
for(int i = nFirst; i < pData->m_nNumData; i++ )/ X# @: ?  E$ G( C% O* o8 Y9 f
{
  ~) C  s, |: [& K: w! Q& OpData->m_pResultBuf= $ G: o1 Y( i. ~& @5 h
//(pValue1 + pValue2 + pValue3 )/nNum;/ t/ T- W/ ^  R7 L6 q! h! T6 X
(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
/ f. c/ _1 X, ~  H( z}
  O, M& K/ C2 P' |; f' K1 u2 ]returnnFirst;! o  `0 I, R: N7 s$ @
}
- c# h: c, ^' y7 X+ greturn-1;6 Z$ \# O; w" b5 k2 |
}
" ^* ]1 Q: ^/ @) ^9 F+ p
! |% t. K, D6 K" O- ^% ]5 r0 s
/ ~- j( S9 d  `& b+ A7 G9 d
7 |' @: L/ x& Z3 R& \' h2 J//////////////////////////////////////////////////////////////pow10.asm* ]: \% S# U6 o$ s' m
;*******************************************************
+ ]+ Q4 z! {. s! C/ w( B  U8 S;* *
4 K* ]' x) L( [+ K;* Delphi Run Library */ M8 [0 s) S# }  [& s
;* *6 ^" k& M. a) w" k( K1 Z" [
;* Copyright (c) 1996,98 Inprise Corporation *
) M$ g# b/ R6 _6 ?4 H0 G;*--------------------------------------------------------------------------- j% F) r9 F8 A3 _# s# O3 Y7 `, Z
;* To compile "tasm32 /ml pow10.asm" *
9 T* r7 s3 R) n* K;*--------------------------------------------------------------------------! O) I; o' F5 E2 w4 G% {0 C; N6 d
;******************************************************** f+ {4 ^6 V3 f4 G. U+ b' n/ i
.386
6 u/ [) `; d/ n: D) }2 z( K;.MODEL flat,c (error must be in segement block must have segment5 E1 ?3 b" e" H( T4 c
;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'
4 i% n% a! F# u) a: q. v;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC
8 y! {! U4 R' w6 Z! X* l$ c. K& _;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc') y8 K2 }  r% |2 W$ l/ H6 ^" {
.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'
) N* c7 p3 v8 U# y# S- y;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL8
/ O& _3 ]1 e( E( {; g;includeE:\Vsource\masm32\INCLUDE\windows.inc; P) Q6 s9 Q1 a. B
;includeE:\Vsource\masm32\INCLUDE\user32.inc
1 f- c* L5 V6 [# C+ C' [, D;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
2 d4 h2 d4 s( lPUBLICppow10
: u5 }# a6 f! T9 ^- G.CODE/ r  n' F: R3 L: l5 A
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD( Z" T* u, B3 O0 T/ T& J6 H5 l
;.if reason==DLL_PROCESS_ATTACH
8 t% Y0 o* q- [( w2 y! O;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
& P1 ?5 b/ F7 v; K" u# ];.elseif reason==DLL_PROCESS_DETACH
& a$ x" W: O- O; I4 [# D;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
4 m! ^9 c5 \- |3 S7 C1 `5 [) t;.elseif reason==DLL_THREAD_ATTACH5 V7 ]$ w9 r6 J' T- @' b, \
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
7 J7 g: Z5 ~/ m$ X;.else ; DLL_THREAD_DETACH  [1 e2 R+ W3 s
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK3 @* }+ p- Z& z9 x2 I0 a
;.endif5 e( p# m* L9 _; Q* i5 l
;mov eax,TRUE. [1 n( V* ^- V/ n9 e$ U$ b
;ret: o1 ?% h2 g1 Q
;DllEntryEndp
, W/ ?! d, |( w5 T;FUNCTION _Ppow10( double val, double pow: ) : Extended;
- u  l1 ^* }& u0 q) f" @2 N; {( M3 ?7 z;_TEXTSEGMENT WORD PUBLIC 'CODE'- |% \; C" [% J& Y% q9 P: q( X: g* [
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
8 S) G% @0 ^' }: p5 r;ppow10 PROC,aVal:* Qword, bVal:Qword
; ]& M0 J" t1 q& ?3 {ppow10PROC near
1 U2 F+ }9 H% Y0 r+ g6 EXUEQU 8 ; for eip & ebp ' n/ |. `) l* c  O0 p3 ]
XDEQU 0 ; for edi, esi, ebx, ecx, edx
- I9 Y1 ]( P: J7 {+ ]! rfp_powerEQU QWORD PTR [ebp+XU+8]
& I# I7 u9 h! e, h& S/ Zfp_valEQU QWORD PTR [ebp+XU]
3 i# {0 O: @! y5 U: ]. K- v) hvalEQU QWORD PTR [eBP-XD-8] ; USE STACK
( x" L, K4 T- j; y# tpowerEQU QWORD PTR [eBP-XD-16] ; USE STACK1 f" K: o: Q5 A: b3 D+ {
pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK% O. m% A) x& X& H1 v. Y
FPower10:
7 q. E4 Y* k) ]  @) g7 U0 h: d$ Epushebp2 Q/ M& |& ?: M4 F+ A
movebp,esp# v  C+ n+ h1 G  S  }) p
;push edi# g8 n6 J9 y# \
;push esi5 ^) |& m7 g+ z
;push eax* o& E* D8 j* z, O: N
;push edx( ?9 @1 v0 U! f
subesp,24
# u2 G4 c- o% `2 u; q7 i/ S0 DFINIT4 x$ v0 Z( Z# d& S6 O, m) V
fldz
8 l2 Y" p4 V. Gfstval
, |  R6 ~9 Y% vfstpower  H; I: D' i- h3 j' A* ]
fstppow101 h, n) l  K1 K. p# o, a" m$ K4 [
                 MOV    EAX,8                 MOV    EDX,8; fldpi) u5 P! J8 I  }* Y, x7 H
              fld      fp_val   ;st(0)=val; fld aVal;st(0)=val/ y) q& U" q$ k
fstval
6 y; h3 J" a) T;fld Arg2 ;st(0)=power
3 ]2 H7 B: c+ h' B2 J;fstp power! j  o' u& P  [- A1 _8 p
;fld val ;st(0)=val! O6 N" W- e: V# k/ h
;fmul val ;st(0)=val*val1 v0 Q( K3 Q3 |. c& i) q
;fmul val ;st(0)=val*va*val0 ?8 F4 T% \3 ^9 v# f& z  n# k- h
;fadd st,st(0)
& h' b$ p+ p- H: `- Z1 e;fmul qword ptr [ebp+16] ;st(0)=power' E! [" R6 A4 g7 ]  f1 s- q6 U: ]
;fadd st,st(0)
3 v. v5 w- ~/ G1 m3 q- A4 L+ C;fwait
7 g1 @9 Q, R6 }+ S; eaddesp,242 j" v  H- u- h: f7 G  @9 G
;pop edx$ K7 e% k& q1 K3 ~# H6 m+ s5 T+ D! |
;pop eax
, V4 V2 a& g; P' f* \;pop esi# @) `1 J4 L% @6 m  P. k$ K, t* D
;pop edi  W$ F/ v8 K. [+ A5 a9 r  B1 L
movesp,ebp0 D3 k; [8 S5 c: X8 l( U/ o8 g( i
popebp' l- a' i4 I1 e
;leave ; @@@@@@ important don't use leave in vc++ 2010
! Z5 q. f1 ?* v/ C- i. ]RET;return value = st(0). X: R" f7 e6 \* _* V
ppow10ENDP3 {8 x+ N2 @' }6 U& v# o; n
;_TEXTENDS
( x/ r3 M) k- X4 |END# N) ^4 p7 C$ l2 n/ X
;END DllEntry

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2026-7-20 12:45 , Processed in 0.111739 second(s), 20 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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