Fichier map

Sujets variés concernant le développement en PureBasic
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Fichier map

Message par CaptainCrunch »

Est il possible de générer un fichier map lors de la compilation ?
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fichier map

Message par Ar-S »

Salut,
Qu'appelles tu un fichier map ? de google map ? de quake ? un fichier texte avec les données de la commande NewMap de pb ?
De la précision dans les questions stp ;)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: Fichier map

Message par CaptainCrunch »

Un fichier qui indique les fonctions avec les adresses respectives

Func XXXXXX 0x000401...
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Fichier map

Message par graph100 »

il faut se le programmer. Et lister les fonctions à la main.
Tu peut te faire un truc du genre :

Code : Tout sélectionner

Macro _q
	"
EndMacro

Macro Map_(_funct_)
	Debug _q#_funct_#_q + " @ " + @_funct_
EndMacro

Procedure test()
	
EndProcedure

Map_(test())
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Fichier map

Message par majikeyric »

Mais dans tous les cas, à quoi ça servira ?
Puisqu'à chaque exécution l'exécutable est relogé en mémoire à des adresse différentes.

A moins que tu veuilles l'offset (le déplacement) d'une fonction par rapport au début de l'éxécutable ???
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Fichier map

Message par graph100 »

ben c'est ça que le @Funct te donne..., mais j'avoue que je n'y vois pas trop l'intérêt.

Ca doit avoir un lien avec les autres post de CaptainCrunch sur la sécurité :o
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Fichier map

Message par comtois »

Un truc comme ça ne convient pas ? (voir l'aide sur 'RunTime')

Code : Tout sélectionner

Runtime Procedure OnEvent()
    Debug "OnEvent"
EndProcedure 

Debug GetRuntimeInteger("OnEvent()") ; Will display the procedure address
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Fichier map

Message par majikeyric »

graph100 a écrit :ben c'est ça que le @Funct te donne...,
L'adresse retournée est un offset par rapport au début du segment de code ? ou c'est l'adresse physique mémoire ?
Je m'y perd avec ces modes d'adressage à la noix... :?

*edit* Après avoir désassemblé un morceau de code, c'est l'offset par rapport à CS.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Fichier map

Message par graph100 »

Comme tu peux enregistrer des adresses de procedure dans une DataSection, pour les exploiter ensuite avec les interfaces, ces adresses sont utilisables une fois que l'exe est produit !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: Fichier map

Message par CaptainCrunch »

Hello, :)

Merci pour vos réponses

Dis moi graph100, tu n'aurais pas un petit exemple pour illustrer la chose ?
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Fichier map

Message par graph100 »

Code : Tout sélectionner

Interface interface_fonction
	DateString.s()
	AfficheDATE()
EndInterface

Structure structure_fonction
	*zz_FunctionTable
	_Function.interface_fonction
	
	date.s
EndStructure


Procedure.s Fonction_DATE_STR(*obj.structure_fonction) ; retourne la date en chaine de caractère
	*obj\date = FormatDate("%yyyy/%mm/%dd", Date())
	
	ProcedureReturn *obj\date
EndProcedure

Procedure Fonction_Requester_DATE(*obj.structure_fonction) ; retourne la date en chaine de caractère
	
	MessageRequester("Date", "La date enregistrée dans *obj est : " + *obj\date)
	
EndProcedure

; création de l'obj
*obj.structure_fonction = AllocateMemory(SizeOf(structure_fonction))
*obj\_Function = *obj
*obj\zz_FunctionTable = ?VTable


; on enregistre les adresses des fonctions
DataSection
	VTable:
	Data.i @Fonction_DATE_STR()
	Data.i @Fonction_Requester_DATE()
EndDataSection


; utilisation 
Debug *obj\_Function\DateString()
*obj\_Function\AfficheDATE()

*obj\date = "2013/05/01"
*obj\_Function\AfficheDATE()


; on peut aussi utiliser un autre pointeur pour acceder à l'interface
; seulement, on ne pourra pas accèder aux autres champs de la structure.
*inter.interface_fonction = *obj

*inter\AfficheDATE()

_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre