Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Microsoft-specifikus
A __asm blokkok nem használhatnak C vagy C++ típusú operátorokat, például az operátort << . A C és a MASM által megosztott operátorokat, például a * operátort azonban a rendszer szerelvénynyelvi operátorként értelmezi. Külső blokkok esetén a szögletes zárójelek (__asm) tömbindexekként vannak értelmezve, amelyeket a C automatikusan a tömb elemeinek méretére skáláz.
__asm blokkban a MASM-index operátorának tekintik őket, amely méretezés nélküli bájt eltolást eredményez bármilyen adatobjektumból vagy címkéből (nem csak tömbből). Az alábbi kód a különbséget szemlélteti:
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
Az első hivatkozás array nincs skálázva, de a második igen. Vegye figyelembe, hogy a TYPE operátorral konstans alapján végezhet skálázást. A következő utasítások például egyenértékűek:
__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24
array[6] = 0; /* Store 0 at array + 24 */
END Microsoft-specifikus kifejezés