使用__asm的运算符块

Microsoft 专用

__asm 块中不能使用 C 或 C++ 特定运算符,如 AMP_LTAMP_LT 运算符。但是, C 和 MASM 共享的运算符,如 * 运算符,被解释为汇编语言的运算符。例如,在 __asm 外块,方括号 ([]) 被解释为将数组下标, C 自动缩放到元素的大小数组的。在 __asm 块,它们被视为 MASM 索引运算符,为从任何数据对象或标签 (不仅仅是数组) 中未字节偏移量。下面的代码阐释差异:

int array[10];

__asm mov array[6], bx ;  Store BX at array+6 (not scaled)

array[6] = 0;         /* Store 0 at array+24 (scaled) */

第一个对 array 不缩放,不过,第二是。请注意可以使用 类型 运算符实现基于常数的缩放。例如,下面的语句等效:

__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24

array[6] = 0;                   /* Store 0 at array + 24 */

关闭 Microsoft 特定

请参见

参考

使用C或C++在__asm块