我想知道如何在MASM的编译时获得结构的大小。
这是C等效代码。
struct Point
{
int x;
int y;
};
printf("Point Stucture size %d\n", sizeof(struct Point));
答案 0 :(得分:1)
我假设您要在汇编代码中声明结构。
根据masm32文档,您可以使用以下运算符:
LENGTHOF variable
SIZEOF variable
SIZEOF type
LENGTH expression
SIZE expression
描述
LENGTHOF
运算符返回为<variable>
分配的数据项数。SIZEOF
运算符返回为<variable>
分配的总字节数或<type>
的大小(以字节为单位)。对于变量,SIZEOF
等于LENGTHOF
的值乘以每个元素中的字节数。允许
LENGTH
和SIZE
运算符与先前版本的汇编程序兼容。应用于数据标签时,LENGTH
运算符返回DUP
运算符创建的元素数;否则返回1.当应用于数据标签时,SIZE
运算符返回第一个初始值设定项在<variable>
标签处分配的字节数。MASM 6.1中的
LENGTHOF
和SIZEOF
运算符可以更加一致地处理数组。这些运算符返回初始化程序中的数据项数和字节数。
请参阅masm32 / help目录中的masm32.chm。
答案 1 :(得分:1)
MASM提供SIZEOF关键字。
对于像以下那样的点结构:
Point STRUCT
x DWORD ?
y DWORD ?
Point ENDS
您可以像这样使用SIZEOF。
SIZEOF Point
在此示例中, SIZEOF Point
将替换为数字8。