and dword ptr [edi], not (1 shl 2)
你是否介意指出描述这种方言的文学和/或在其他方言中提供相同的语法?对这条线的解释对我自己的启发也很有帮助。
FWIW,我试图将这种方言中的指令移植到coreboot,我认为这是一种GNU方言。当我尝试使用此指令进行组合时,我从i386-elf-gcc中得到以下错误:
./src/drivers/intel/fsp/cache_as_ram.inc: Assembler messages:
./src/drivers/intel/fsp/cache_as_ram.inc:74: Error: junk `PTR [edi]' after expression
./src/drivers/intel/fsp/cache_as_ram.inc:74: Error: too many memory references for `and'
答案 0 :(得分:3)
Microsoft宏汇编程序(ml.exe)[也称为MASM或MASM32]了解此构造。
等于:
and dword ptr [edi], 0fffffffbh
如何?
1 shl 2
等于4(向左移动1个两个位置:基数2中的100
或基数10中的4
因此我们有not 4
(您将基数2中的所有位都反转为100)
在基数2中给出11111111111111111111111111111011
(我们在32位上)
这等于0fffffffbh
(0x0fffffffb;十进制为4294967291
)