bonjour
je voudrais savoir comment traduire ce code asm en c++ (vs2005)::?
en vous remerciant d'avance pour vos réponses..:DCode:
1
2
3
4
5
6
7test STRUCT next DWORD ? test ENDS invoke GlobalLock, current assume eax:ptr test mov [eax].next, edx
Version imprimable
bonjour
je voudrais savoir comment traduire ce code asm en c++ (vs2005)::?
en vous remerciant d'avance pour vos réponses..:DCode:
1
2
3
4
5
6
7test STRUCT next DWORD ? test ENDS invoke GlobalLock, current assume eax:ptr test mov [eax].next, edx
Bonjour,
Cela indique que le retour de GlobalLock est un pointeur vers la structure test. C'est spécifique à l'assembleur MASM.Code:
1
2 assume eax:ptr test
En gros quelque chose comme ça pour donner l'idée générale (sans savoir ce qu'est "current" et ce que vaut edx) :
Code:
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 #include <iostream> #include <windows.h> typedef struct _test { DWORD next; } test, *ptest; int main() { HGLOBAL current = GlobalAlloc(GPTR, sizeof(_test) ); LPVOID hMem = GlobalLock(current); ptest Ptest = reinterpret_cast<ptest>(hMem); Ptest->next = 8; // edx = 8 std::cout << "valeur de next : " << Ptest->next; return 0; }
Ton truc ne me semble pas vraiment être de l'assembleur. Les notions de structures n'apparaissent qu'avec des langages de plus haut niveau.
C'est bien de l'assembleur pour processeur de la famille X86. La syntaxe utilisée est une syntaxe Intel et plus particulièrement, c'est celle de MASM.Citation:
Envoyé par loufoque
Tous les assembleurs couramment utilisés (tout du moins pour x86) ont une syntaxe de déclaration et d'utilisation de structures, ainsi que d'autres construction de haut niveau (if-then-else, while, etc.).Citation:
Les notions de structures n'apparaissent qu'avec des langages de plus haut niveau.
Je parle bien sûr au niveau du source. Si l'on désassemble le code source compilé, on retrouve évidemment une syntaxe "pure".