MASM 表达式与C++ 表达式

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

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

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

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

  • 在 MASM 表达式计算器中,按字面执行所有算术。 在 C++ 表达式计算器中,指针算术会正确缩放,如果不适合,则不允许使用。

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

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

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

另请参阅

MASM 数字和运算符

C++ 数字和运算符

混合表达式示例

符号扩展