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

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

Операторы LENGTH, SIZE и TYPE имеют ограниченное значение в встроенной сборке. Их невозможно использовать с оператором DUP (поскольку невозможно определить данные с директивами или операторами MASM). Однако их можно использовать для поиска размера переменных или типов C либо C++.

  • Оператор LENGTH может возвращать количество элементов в массиве. Он возвращает значение 1 для переменных, отличных от массива.

  • Оператор SIZE может возвращать размер переменной C или C++. Размер переменной — это продукт его LENGTH и TYPE.

  • Оператор TYPE может возвращать размер типа или переменной C++ или C++. Если переменная является массивом, ТИП возвращает размер одного элемента массива.

Например, если у вашей программы есть массив 8 элементов int ,

int arr[8];

результатом следующих выражений C и сборки является размер массива arr и его элементов.

__asm C Size
LENGTH arr sizeof(arr)/sizeof(arr[0]) 8
SIZE arr sizeof(arr) 32
TYPE arr sizeof(arr[0]) 4

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

См. также

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