Přístup k c nebo C++ __asm bloky dat
Konkrétní společnosti Microsoft
Skvělé pohodlí vložené sestavení je možnost odkazovat podle názvu proměnné c nebo C++.__asm Bloku můžete odkazovat na žádné symboly, včetně názvů proměnných, které jsou v oboru, kde se objeví bloku.Například pokud proměnná c var je v rozsahu instrukce
__asm mov eax, var
uloží hodnotu var v EAX.
Třída, struktura nebo člen union má jedinečný název __asm blok může odkazovat pouze název členu pomocí bez určení proměnné nebo typedef jméno před obdobím (.) operátor.Pokud není jedinečný název členu, však musíte umístit proměnné nebo typedef název bezprostředně před operátorem období.Například typy struktury v následující sdílené položce vzorku same_name jako jejich členské jméno:.
Pokud deklarujete proměnné s typy
struct first_type hal;
struct second_type oat;
všechny odkazy na členské same_name musíte použít název proměnné, protože same_name není jedinečný.Ale člen weasel má jedinečný název, takže můžete odkazovat pomocí pouze jeho název členu:
// 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;
}
Všimněte si, že název proměnné vynechá pouze kódování pohodlí.Stejné pokyny pro sestavení jsou generovány, zda je název proměnné.
Chcete-li přístup k datové členy v jazyce C++ bez ohledu na omezení přístupu.Člen však nelze volat funkce.
Konec konkrétní společnosti Microsoft