【问题标题】:Get structure size within MASM在 MASM 中获取结构大小
【发布时间】:2014-11-11 11:49:44
【问题描述】:

我想知道如何在 MASM 的编译时获取结构的大小。

这是 C 等效代码。

struct Point
{
  int x;
  int y;
};

printf("Point Stucture size %d\n", sizeof(struct Point));

【问题讨论】:

    标签: assembly masm masm32


    【解决方案1】:

    我假设您将在汇编代码中声明该结构。
    根据 masm32 文档,您可以使用以下运算符:

    LENGTHOF variable
    
    SIZEOF variable
    
    SIZEOF type
    
    LENGTH expression
    
    SIZE expression
    

    说明

    LENGTHOF 运算符返回分配给<variable> 的数据项数。 SIZEOF 运算符返回分配给<variable> 的总字节数或<type> 的大小(以字节为单位)。对于变量,SIZEOF 等于 LENGTHOF 的值乘以每个元素中的字节数。

    LENGTHSIZE 运算符允许与以前版本的汇编器兼容。当应用于数据标签时,LENGTH 运算符返回由 DUP 运算符创建的元素数;否则返回 1。当应用于数据标签时,SIZE 运算符返回由<variable> 标签处的第一个初始化程序分配的字节数。

    MASM 6.1 中的LENGTHOFSIZEOF 运算符处理数组的一致性更高。这些运算符返回数据项的数量和初始化器中的字节数。

    请参阅 masm32/help 目录中的 masm32.chm。

    【讨论】:

      【解决方案2】:

      MASM 提供了一个 SIZEOF 关键字。

      对于像下面这样的点结构:

      Point STRUCT
      x DWORD ?
      y DWORD ?
      Point ENDS
      

      你可以像这样使用 SIZEOF。

      SIZEOF Point
      

      SIZEOF Point 在本例中将替换为数字 8。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-13
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多