Page 1 sur 1
petit problem avec MOV et un pointeur
Publié : dim. 17/déc./2006 16:36
par cha0s
wala mon code
Code : Tout sélectionner
*Get = AllocateMemory(1)
! MOV byte [p_Get], 10
Debug *Get
Debug PeekB(*Get)
J'ai cherché partout mais je n'arrive pas a affecter 10 a ladresse *Get.
Publié : dim. 17/déc./2006 16:58
par Dr. Dri
Code : Tout sélectionner
*Get = AllocateMemory(1)
!MOV eax, dword [p_Get] ;récupère l'adresse du pointeur
!MOV byte [eax], 10 ;pointe
Debug *Get
Debug PeekB(*Get)
Dri

Publié : dim. 17/déc./2006 16:58
par flaith
salut,
avec :
ca marche mieux

Publié : dim. 17/déc./2006 17:05
par Dr. Dri
non non non parce qu'en faisant ca on modifie l'adresse pointée et on se retrouve soit avec une erreur de segmentation (invalid memory access) soit avec une valeur fausse (pointe pas au bon endroit mais autorisé)
Code : Tout sélectionner
*Get.Byte = AllocateMemory(1)
*Get\b = 10 ;met 10 à l'adresse pointée
!MOV byte [p_Get], 255 ;change l'adresse au lieu de mettre 255
Debug *Get\b ;afficherai 255 si le code était bon
Dri
Publié : dim. 17/déc./2006 17:17
par flaith
ah ??? et ca :
Code : Tout sélectionner
*Get.b = AllocateMemory(SizeOf(BYTE))
*Get = 10 ;met 10 à l'adresse pointée
!MOV byte [p_Get], 255 ;change l'adresse au lieu de mettre 255
Debug *Get ;affiche 255 si le code était bon
Publié : dim. 17/déc./2006 17:22
par Dr. Dri
là tu ne pointe pas tu affiches l'adresse, je te rappelle que *Get est censé contenir une adresse, à quoi sert l'allocatememory sinon ?
Code : Tout sélectionner
*Get.b = AllocateMemory(SizeOf(BYTE))
Debug *Get ;affiche l'adresse pointée
!MOV byte [p_Get], 255 ;l'opération incomplète ici
Debug *Get ;affiche l'adresse pointée
Dri
Publié : dim. 17/déc./2006 17:24
par cha0s
Dr. Dri a écrit :Code : Tout sélectionner
*Get = AllocateMemory(1)
!MOV eax, dword [p_Get] ;récupère l'adresse du pointeur
!MOV byte [eax], 10 ;pointe
Debug *Get
Debug PeekB(*Get)
Dri

merci

Publié : dim. 17/déc./2006 17:39
par flaith
ok, t'as raison
