在MASM中获取结构大小

时间:2014-11-11 11:49:44

标签: assembly masm masm32

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

这是C等效代码。

struct Point
{
  int x;
  int y;
};

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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

MASM提供SIZEOF关键字。

对于像以下那样的点结构:

Point STRUCT
x DWORD ?
y DWORD ?
Point ENDS

您可以像这样使用SIZEOF。

SIZEOF Point
在此示例中,

SIZEOF Point将替换为数字8。