Share via


Typen- und Variablengrößen in der Inlineassembly

Microsoft-spezifisch

Die Operatoren LENGTH, SIZE und TYPE haben eine begrenzte Bedeutung in der Inlineassembly. Sie können überhaupt nicht mit dem DUP Operator verwendet werden (da Sie keine Daten mit MASM-Direktiven oder Operatoren definieren können). Sie können sie jedoch verwenden, um die Größe von C- oder C++-Variablen oder -Typen zu finden:

  • Der LENGTH-Operator kann die Anzahl der Elemente in einem Array zurückgeben. Er gibt den Wert 1 für Nicht-Arrayvariablen zurück.

  • Der SIZE-Operator kann die Größe einer C- oder C++-Variablen zurückgeben. Die Größe einer Variablen ist das Produkt seiner LÄNGE und DES TYPs.

  • Der TYPE-Operator kann die Größe eines C- oder C++-Typs oder einer Variablen zurückgeben. Wenn es sich bei der Variablen um ein Array handelt, gibt TYPE die Größe eines einzelnen Elements des Arrays zurück.

Wenn Ihr Programm beispielsweise über ein 8-Element-Array int verfügt,

int arr[8];

die folgenden C- und Assemblyausdrücke liefern die Größe und arr die zugehörigen Elemente.

__asm C Size
LÄNGEnrückstand sizeof(arr)/sizeof(arr[0]) 8
SIZE arr sizeof(arr) 32
TYPE arr sizeof(arr[0]) 4

Ende Microsoft-spezifisch

Siehe auch

Verwenden der Assemblysprache in __asm-Blöcken