Code : Tout sélectionner
ProcedureDLL S08_GetVarL(MyArrayL.l(1), Num.l) ; Commebt
Protected sContent.s, lInc.l
For lInc = 1 To 10
sContent + "ID : " + Str(lInc)+ " - Element : "+Str(MyArrayL(lInc))
Next
MessageRequester("S07_GetVarL", sContent)
ProcedureReturn #True
EndProcedure
Code : Tout sélectionner
;
; PureBasic 4.20 (Windows - x86) generated code
;
; (c) 2008 Fantaisie Software
;
; The header must remain intact for Re-Assembly
;
; String
; StringExtension
; Requester
; FileSystem
; Date
; Object
; SimpleList
; :System
; KERNEL32
; :Import
;
format MS COFF
;
extrn _ExitProcess@4
extrn _GetModuleHandleA@4
extrn _HeapCreate@12
extrn _HeapDestroy@4
;
extrn _PB_FreeSimpleLists@0
extrn _PB_InitRequester@0
extrn _PB_InitSimpleList@0
extrn _PB_MessageRequester@8
extrn _PB_Str@8
extrn _SYS_CopyString@0
extrn _memset
extrn SYS_AllocateString
extrn _SYS_FreeString@4
extrn _PB_StringBase
extrn PB_StringBase
extrn _SYS_InitString@0
;
extrn _PB_StringBasePosition
public _PB_Instance
public _PB_ExecutableType
public _PB_MemoryBase
public PB_Instance
public PB_MemoryBase
public _PB_EndFunctions
public _PB_DEBUGGER_LineNumber
public _PB_DEBUGGER_IncludedFiles
macro pb_public symbol
{
public _#symbol
public symbol
_#symbol:
symbol:
}
macro pb_align value { rb (value-1) - ($-_PB_DataSection + value-1) mod value }
macro pb_bssalign value { rb (value-1) - ($-_PB_BSSSection + value-1) mod value }
public PureBasicStart
;
section '.code' code readable executable
;
;
PureBasicStart:
;
PUSH dword I_BSSEnd-I_BSSStart
PUSH dword 0
PUSH dword I_BSSStart
CALL _memset
ADD esp,12
PUSH dword 0
CALL _GetModuleHandleA@4
MOV [_PB_Instance],eax
PUSH dword 0
PUSH dword 4096
PUSH dword 0
CALL _HeapCreate@12
MOV [PB_MemoryBase],eax
CALL _SYS_InitString@0
CALL _PB_InitSimpleList@0
CALL _PB_InitRequester@0
; :
; ProcedureDLL S08_GetVarL(MyArrayL.l(1), Num.l) ; Commebt
macro MP0{
_Procedure0:
PUSH ebp
PUSH ebx
PS0=24
XOR eax,eax
PUSH eax
PUSH eax
PUSH eax
MOV eax,dword [esp+PS0+0]
MOV dword [esp+0],eax
; Protected sContent.s, lInc.l
; For lInc = 1 To 10
MOV dword [esp+8],1
_For1:
MOV eax,10
CMP eax,dword [esp+8]
JL _Next2
; sContent + "ID : " + Str(lInc)+ " - Element : "+Str(MyArrayL(lInc))
MOV edx,dword [esp+4]
PUSH dword [_PB_StringBasePosition]
CALL _SYS_CopyString@0
MOV edx,_S1
CALL _SYS_CopyString@0
MOV eax,[_PB_StringBasePosition]
PUSH eax
PUSH eax
PUSH dword [esp+20]
CALL _PB_Str@8
POP eax
MOV edx,_S2
CALL _SYS_CopyString@0
MOV eax,[_PB_StringBasePosition]
PUSH eax
PUSH eax
MOV ebx,dword [esp+20]
MOV edx,[esp+12]
MOV ebp,dword [edx]
SAL ebx,2
PUSH dword [ebp+ebx]
CALL _PB_Str@8
POP eax
LEA ecx,[esp+8]
POP edx
CALL SYS_AllocateString
; Next
_NextContinue2:
INC dword [esp+8]
JMP _For1
_Next2:
; MessageRequester("S07_GetVarL", sContent)
PUSH dword [esp+4]
PUSH dword _S3
CALL _PB_MessageRequester@8
; ProcedureReturn #True
MOV eax,1
JMP _EndProcedure1
; EndProcedure
XOR eax,eax
_EndProcedure1:
PUSH dword [esp+4]
CALL _SYS_FreeString@4
ADD esp,12
POP ebx
POP ebp
RET 8
}
_PB_EOP_NoValue:
PUSH dword 0
_PB_EOP:
CALL _PB_EndFunctions
PUSH dword [PB_MemoryBase]
CALL _HeapDestroy@4
CALL _ExitProcess@4
_PB_EndFunctions:
CALL _PB_FreeSimpleLists@0
RET
;
MP0
;
section '.data' data readable writeable
;
_PB_DataSection:
_PB_DEBUGGER_LineNumber: dd -1
_PB_DEBUGGER_IncludedFiles: dd 0
_PB_ExecutableType: dd 0
public _SYS_StaticStringStart
_SYS_StaticStringStart:
_S1: db "ID : ",0
_S3: db "S07_GetVarL",0
_S2: db " - Element : ",0
pb_public PB_NullString
db 0
public _SYS_StaticStringEnd
_SYS_StaticStringEnd:
align 4
align 4
s_s:
dd 0
dd -1
align 4
;
section '.bss' readable writeable
_PB_BSSSection:
align 4
;
I_BSSStart:
_PB_MemoryBase:
PB_MemoryBase: rd 1
_PB_Instance:
PB_Instance: rd 1
;
align 4
PB_DataPointer rd 1
align 4
align 4
align 4
align 4
I_BSSEnd:
section '.data' data readable writeable
SYS_EndDataSection:
----- Shared
Code : Tout sélectionner
format MS COFF
public _S1
public _S3
public _S2
public _PB_BSSSection
public PB_DataPointer
section '.data' data readable writeable
_SYS_StaticStringStart:
_S1: db "ID : ",0
_S3: db "S07_GetVarL",0
_S2: db " - Element : ",0
db 0
_SYS_StaticStringEnd:
section '.bss' readable writeable
_PB_BSSSection:
align 4
PB_DataPointer rd 1
align 4
align 4
align 4
align 4
section '.data' data readable writeable
Code : Tout sélectionner
format MS COFF
extrn _SYS_InitString@0
Public PB_Samples08Windows_Init
PB_Samples08Windows_Init:
CALL _SYS_InitString@0
RET
Code : Tout sélectionner
format MS COFF
public PB_S08_GetVarL
extrn _PB_StringBasePosition
extrn _SYS_CopyString@0
extrn _S1
extrn _PB_Str@8
extrn _S2
extrn SYS_AllocateString
extrn _S3
extrn _PB_MessageRequester@8
extrn _SYS_FreeString@4
_Procedure0:
PB_S08_GetVarL:
PUSH ebp
PUSH ebx
PS0=24
XOR eax,eax
PUSH eax
PUSH eax
PUSH eax
MOV eax,dword [esp+PS0+0]
MOV dword [esp+0],eax
MOV dword [esp+8],1
_For1:
MOV eax,10
CMP eax,dword [esp+8]
JL _Next2
MOV edx,dword [esp+4]
PUSH dword [_PB_StringBasePosition]
CALL _SYS_CopyString@0
MOV edx,_S1
CALL _SYS_CopyString@0
MOV eax,[_PB_StringBasePosition]
PUSH eax
PUSH eax
PUSH dword [esp+20]
CALL _PB_Str@8
POP eax
MOV edx,_S2
CALL _SYS_CopyString@0
MOV eax,[_PB_StringBasePosition]
PUSH eax
PUSH eax
MOV ebx,dword [esp+20]
MOV edx,[esp+12]
MOV ebp,dword [edx]
SAL ebx,2
PUSH dword [ebp+ebx]
CALL _PB_Str@8
POP eax
LEA ecx,[esp+8]
POP edx
CALL SYS_AllocateString
_NextContinue2:
INC dword [esp+8]
JMP _For1
_Next2:
PUSH dword [esp+4]
PUSH dword _S3
CALL _PB_MessageRequester@8
MOV eax,1
JMP _EndProcedure1
XOR eax,eax
_EndProcedure1:
PUSH dword [esp+4]
CALL _SYS_FreeString@4
ADD esp,12
POP ebx
POP ebp
RET 8