Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Eine große Hilfe der Inline- Assemblys ist die Fähigkeit, C# oder C++-Variablen anhand ihres Namens zugreifen.Ein __asm-Block kann alle Symbole, einschließlich Variablennamen verweisen, die im Bereich enthalten sind, in dem der Block erscheint.Wenn z. B. C var-Variable im Gültigkeitsbereich befindet, durch die Anweisung
__asm mov eax, var
speichert den Wert von var in EAX.
Wenn eine Klassen-, Struktur- oder Unionmember über einen eindeutigen Namen verfügt, kann ein __asm-Block diesen Member nur mit dem Namen verweisen, ohne dass die Variable oder den Namen angeben typedef vor dem Operator des Punkts (.)**.**Wenn jedoch der Membername nicht eindeutig ist, müssen Sie eine Variable oder einen typedef Namen direkt vor den Punktoperator platzieren.Um beispielsweise die Freigabe von Strukturtypen in der folgenden Beispiel same_name als dem Membernamen.:
Wenn Sie Variablen mit den Typen deklarieren
struct first_type hal;
struct second_type oat;
Alle Verweise auf den Member same_name müssen den Variablennamen verwenden, da same_name nicht eindeutig ist.Wenn der Member weasel über einen eindeutigen Namen verfügt, können Sie ihn nur mithilfe seines Namens der Member zugreifen:
// InlineAssembler_Accessing_C_asm_Blocks.cpp
// processor: x86
#include <stdio.h>
struct first_type
{
char *weasel;
int same_name;
};
struct second_type
{
int wonton;
long same_name;
};
int main()
{
struct first_type hal;
struct second_type oat;
__asm
{
lea ebx, hal
mov ecx, [ebx]hal.same_name ; Must use 'hal'
mov esi, [ebx].weasel ; Can omit 'hal'
}
return 0;
}
Wenn Sie den Variablennamen ist nicht nur eine Art bequemlichkeit.Die gleichen Assemblyanweisungen werden generiert, ob der Variablenname vorhanden ist.
Sie können Member auf Daten in C++ ohne Berücksichtigung Zugriffsbeschränkungen.Sie können jedoch keine Memberfunktionen aufrufen.
Microsoft ENDES bestimmten