Bonjour,
j'ai des soucis avec la récuperation de valeurs lorsque je passe du pascal à l'assembleur dans des fonctions tels que celle-ci. Mon objectif est de passer d'un assembleur inclus à une fonction assembleur intégrale, mais ce probleme me freine.En effet soit le compilateur me dit que je fait une erreur de syntaxe, soit il me renvoie une valeur 0... pourtant le guide assembleur delphi est clair:
Ceci me renvoie 0 pourquoi ?, p_PTRBuffer est un "pointer" dans les privates d'un component perso TGVIEW.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 //----------------------------------------------------------------------- Procedure TGView.SetPixel(x,y,c:longint); //----------------------------------------------------------------------- <> var W,H:longword; begin W:=self.p_Buffer.Width; H:=self.p_Buffer.Height; asm push eax // Clipping mov eax,W dec eax cmp eax,x JL @Jclip_SetPixel mov eax,H dec eax cmp eax,y JL @Jclip_SetPixel cmp x,0 JL @Jclip_SetPixel cmp y,0 JL @Jclip_SetPixel // Affichage du pixel mov eax,W mul eax,y add eax,x shl eax,2 pop edx add eax,[edx].TGView.p_PTRBuffer <------------ ça devrais fonctionner mov ecx,c mov dword [eax],ecx @Jclip_SetPixel: end; end;
Par ailleurs je n'arrive pas non plus à acceder à self.p_Buffer.Width ou self.p_Buffer.Height en ASM, J'ai un Tbitmap en sous objet de mon component(TGVIEW) déclaré dans la partie private(p_pBuffer) mais ceci ne fonctionne pas:
Ni ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 push eax .... pop edx mov eax,[edx].TGView.p_pBuffer.Width
un coup de pouce please !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 push eax .... pop edx mov eax,[edx].TGView.p_pBuffer mov edx,[eax].Tbitmap.Width![]()
Partager