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 特定