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
EndProcedureCode : 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

