Expresiones de MASM frente a expresiones de C++
Las diferencias más significativas entre la evaluación de expresiones MASM y la evaluación de expresiones de C++ son las siguientes:
En una expresión MASM, el valor numérico de cualquier símbolo es su dirección de memoria. En una expresión C++, el valor numérico de una variable es su valor real, no su dirección. Las estructuras de datos no tienen valores numéricos. En su lugar, se tratan como estructuras reales y debe usarlas en consecuencia. El valor de un nombre de función o cualquier otro punto de entrada es la dirección de memoria y se trata como puntero de función. Si usa un símbolo que no se corresponde con un tipo de datos de C++ (por ejemplo, un nombre de módulo sin modificar), se produce un error de sintaxis.
El evaluador de expresiones MASM trata todos los números como valores ULONG64. El evaluador de expresiones C++ convierte números en ULONG64 y conserva la información de tipo de todos los tipos de datos.
El evaluador de expresiones MASM permite usar cualquier operador junto con cualquier número. El evaluador de expresiones C++ genera un error si usa un operador junto con un tipo de datos incorrecto.
En el evaluador de expresiones MASM, toda la aritmética se realiza literalmente. En el evaluador de expresiones C++, la aritmética de puntero se escala correctamente y no se permite cuando no es apropiado.
Una expresión MASM puede usar dos caracteres de subrayado ( __ ) o dos puntos dos veces ( :: ) para indicar miembros de una clase. El evaluador de expresiones C++ solo usa la sintaxis de dos puntos. La salida del depurador siempre usa dos puntos.
En una expresión MASM, debe agregar una arroba (@) antes de todo, excepto para los registros más comunes. Si lo omite la arroba, el nombre del registro puede interpretarse como un número hexadecimal o como un símbolo. En una expresión C++, este prefijo es necesario para todos los registros.
Las expresiones MASM pueden contener referencias a líneas de origen. Estas referencias se indican mediante acentos graves ( ` ). No se puede hacer referencia a números de línea de origen en una expresión C++.