2010-11-02 5 views
0

J'ai ce code dans C:x86 asm rapide question

int main(){ char a[10]; _asm{ mov DWORD PTR[a],eax;} 

Cela fonctionne bien, mais pourquoi ai-je besoin en fait le

DWORD PTR 

Lorsque la taille DWORD est déjà déclaré à l'aide EAX? Et pour la destination, je n'ai besoin d'aucune taille quand j'ai un pointeur, non? Merci.

Répondre

2

C'est parce que votre code est erroné. La variable est un tableau, pas un pointeur. Déclarez le caractère * et vous n'avez pas besoin du remplacement. Le code est un non-sens bien sûr.

+0

Eh bien, je croyais que a est un pointeur sur le premier élément du tableau. Au moins, vous pouvez le passer aux fonctions qui prennent char * comme argument .... –

+0

Il peut être converti en pointeur. C'est automatique dans le langage C. L'Assemblée est, pense-y, plus stricte. Est-ce que cela a vraiment du sens de convertir un char [10] en un int32_t? Cela prend un casting. Oui, dword ptr est ce casting. –

+0

Weel, si ce n'est pas un pointeur, qu'est-ce qu'un? Merci. –