Expressions MASM vs. Expressions C++
Les différences les plus significatives entre l'évaluation des expressions MASM et l'évaluation des expressions C++ sont les suivantes :
Dans une expression MASM, la valeur numérique de tout symbole est son adresse mémoire. Dans une expression C++, la valeur numérique d'une variable est sa valeur réelle, non son adresse. Les structures de données n'ont pas de valeurs numériques. Au lieu de cela, elles sont traitées comme de véritables structures et vous devez les utiliser en conséquence. La valeur d'un nom de fonction ou de tout autre point d'entrée est l'adresse mémoire et est traitée comme un pointeur de fonction. Si vous utilisez un symbole qui ne correspond pas à un type de données C++ (tel qu'un nom de module non modifié), une erreur de syntaxe se produit.
L'évaluateur d'expressions MASM traite tous les nombres comme des valeurs ULONG64. L'évaluateur d'expressions C++ convertit les nombres en ULONG64 et conserve les informations de type de tous les types de données.
L'évaluateur d'expressions MASM vous permet d'utiliser n'importe quel opérateur avec n'importe quel nombre. L'évaluateur d'expressions C++ génère une erreur si vous utilisez un opérateur avec un type de données incorrect.
Dans l'évaluateur d'expressions MASM, toute l'arithmétique est effectuée littéralement. Dans l'évaluateur d'expressions C++, l'arithmétique des pointeurs est correctement mise à l'échelle et n'est pas autorisée lorsque cela est inapproprié.
Une expression MASM peut utiliser deux traits de soulignement ( __ ) ou deux points ( :: ) pour indiquer les membres d'une classe. L'évaluateur d'expressions C++ utilise uniquement la syntaxe des deux points. La sortie du débogueur utilise toujours deux points.
Dans une expression MASM, vous devez ajouter un signe arobase (@) devant tous les registres, sauf les plus courants. Si vous omettez ce signe arobase, le nom du registre pourrait être interprété comme un nombre hexadécimal ou comme un symbole. Dans une expression C++, ce préfixe est requis pour tous les registres.
Les expressions MASM peuvent contenir des références à des lignes de code source. Ces références sont indiquées par des accents graves ( ` ). Vous ne pouvez pas référencer des numéros de ligne de code source dans une expression C++.