Размеры типов и переменных во встроенной сборке
Блок, относящийся только к системам Майкрософт
Операторы LENGTH, SIZE и TYPE имеют ограниченное значение во строенном коде на языке ассемблера. Их невозможно использовать с оператором DUP (поскольку невозможно определить данные с директивами или операторами MASM). Однако их можно использовать для поиска размера переменных или типов C либо C++.
Оператор LENGTH может возвращать число элементов в массиве. Он возвращает значение 1 для переменных, отличных от массива.
Оператор SIZE может возвращать размер переменной C или C++. Размер переменной — это произведение значений LENGTH и TYPE.
Оператор TYPE может возвращать размер типа или переменной C либо C++. Если переменная является массивом, оператор TYPE возвращает размер отдельного элемента массива.
Например, если программа содержит массив int, состоящий из 8 элементов,
int arr[8];
результатом следующих выражений C и сборки является размер массива arr и его элементов.
__asm |
C |
Размер |
---|---|---|
LENGTH arr |
sizeof(arr)/sizeof(arr[0]) |
8 |
SIZE arr |
sizeof(arr) |
32 |
TYPE arr |
sizeof(arr[0]) |
4 |
Завершение блока, относящегося только к системам Майкрософт