Поделиться через


Размеры типов и переменных во встроенной сборке

Блок, относящийся только к системам Майкрософт

Операторы 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

Завершение блока, относящегося только к системам Майкрософт

См. также

Ссылки

Использование языка ассемблера в блоках __asm