Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Khusus Microsoft
Kenyamanan besar rakitan sebaris adalah kemampuan untuk merujuk ke variabel C atau C++ berdasarkan nama. Blok __asm dapat merujuk ke simbol apa pun, termasuk nama variabel, yang berada dalam cakupan tempat blok muncul. Misalnya, jika variabel var C berada dalam cakupan, instruksi
__asm mov eax, var
menyimpan nilai var dalam EAX.
Jika anggota kelas, struktur, atau serikat memiliki nama unik __asm , blok hanya dapat merujuknya menggunakan nama anggota, tanpa menentukan variabel atau typedef nama sebelum operator periode (.). Namun, jika nama anggota tidak unik, Anda harus menempatkan variabel atau typedef nama segera sebelum operator periode. Misalnya, jenis struktur dalam contoh berbagi same_name berikut sebagai nama anggota mereka:.
Jika Anda mendeklarasikan variabel dengan jenis
struct first_type hal;
struct second_type oat;
semua referensi ke anggota same_name harus menggunakan nama variabel karena same_name tidak unik. Tetapi anggota weasel memiliki nama yang unik, sehingga Anda hanya dapat merujuknya menggunakan nama anggotanya:
// 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;
}
Perhatikan bahwa menghilangkan nama variabel hanyalah kenyamanan pengkodian. Instruksi rakitan yang sama dihasilkan apakah nama variabel ada atau tidak.
Anda dapat mengakses anggota data di C++ tanpa memperhatikan pembatasan akses. Namun, Anda tidak dapat memanggil fungsi anggota.
END Khusus Microsoft