MASM 表达式与C++表达式

MASM 表达式计算和C++表达式计算之间的最显著差异如下:

  • 在 MASM 表达式中,任何符号的数值都是其内存地址。 在C++表达式中,变量的数值是其实际值,而不是其地址。 数据结构没有数值。 相反,它们被视为实际结构,必须相应地使用它们。 函数名称或任何其他入口点的值是内存地址,并被视为函数指针。 如果使用的符号不与C++数据类型相符(例如,未修改的模块名称),则会发生语法错误。

  • MASM 表达式计算器将所有数字视为ULONG64值。 C++表达式求值器将数字转换为ULONG64,并保留所有数据类型的类型信息。

  • MASM 表达式计算器使你可以将任何运算符与任意数字一起使用。 如果使用运算符和不正确的数据类型,C++表达式计算器将生成错误。

  • 在 MASM 表达式计算器中,所有算术都按字面执行。 在C++表达式计算器中,指针算术会根据数据类型的大小自动缩放,并且在不合适的情况下是不允许的。

  • MASM 表达式可以使用两个下划线( __ )或两个冒号( :: )来指示类的成员。 C++表达式计算器仅使用双冒号语法。 调试器 输出 始终使用两个冒号。

  • 在 MASM 表达式中,应在除最常见的寄存器外的所有寄存器前添加"@"符号(@)。 如果省略此符号,则寄存器名称可能解释为十六进制数或符号。 在C++表达式中,所有寄存器都需要此前缀。

  • MASM 表达式可能包含对源行的引用。 这些引用由重音符号( ` )标识。 不能引用C++表达式中的源行号。

另请参阅

MASM 数字和运算符

C++数字和运算符

混合表达式示例

签名扩展