【发布时间】:2014-11-11 11:49:44
【问题描述】:
我想知道如何在 MASM 的编译时获取结构的大小。
这是 C 等效代码。
struct Point
{
int x;
int y;
};
printf("Point Stucture size %d\n", sizeof(struct Point));
【问题讨论】:
我想知道如何在 MASM 的编译时获取结构的大小。
这是 C 等效代码。
struct Point
{
int x;
int y;
};
printf("Point Stucture size %d\n", sizeof(struct Point));
【问题讨论】:
我假设您将在汇编代码中声明该结构。
根据 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。
【讨论】:
MASM 提供了一个 SIZEOF 关键字。
对于像下面这样的点结构:
Point STRUCT
x DWORD ?
y DWORD ?
Point ENDS
你可以像这样使用 SIZEOF。
SIZEOF Point
SIZEOF Point 在本例中将替换为数字 8。
【讨论】: