jetzt ist mir in FASM aufgefallen, die erstellte dll ist immer knapp 4x so groß wie der allozierte Speicher.
Das ist doch nicht im Sinne des Erfinders???
Ich dachte damit wird "nur" Speicher im RAM angefordert und reserviert.
Aber in der dll???
Mache ich etwas falsch?
Beispiel einer 1MB dll:
Spoiler anzeigen
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32ax.inc' ;includes
;************Hier die in der DLL verwendeten Funktionen für den Export eintragen
section '.edata' export data readable writable
export 'sharedmem.DLL',\ ;Dateiname, Zeilentrenner ist ,\
GetPointer,'GetPointer' ;Funktion
;weitere Sektionen je nach Anforderung der Funktionen
section '.data' data readable writeable shareable
_mem dd 1000000 dup 0 ;1 MB Speicher
;section für die Funktionen
section '.code' code readable executable
;DllEntryPoint wird beim Laden der DLL aufgerufen
;um "bombensicheres" Errorhandling zu haben, Funktion anpassen!
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE ;hart aber herzlich^^
ret
endp
;******************Ab hier fangen die Benutzer-Funktionen an **********
proc GetPointer
;ab hier folgt der Code, wie er z.B. von AssembleIt verarbeitet wird
use32
mov eax,_mem ;Startadresse variable
ret
endp
section '.reloc' fixups data discardable