这很简单,但我还没有弄清楚。汇编掩码逻辑问题
这个问题是关于一个程序集mmx,但它是纯粹的逻辑。
试想以下情形:
MM0: 04 03 02 01 04 03 02 01 <-- input
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01 <-- copy of input
after pcmpgtw MM0, MM1
MM0: FF FF 00 00 FF FF 00 00 <-- words where MM0 is greater than MM1 (comparing words)
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01
after pand MM0, MM2
MM0: 04 03 00 00 04 03 00 00 <-- almost there...
MM1: 02 02 02 02 02 02 02 02
MM2: 04 03 02 01 04 03 02 01
我想是要知道补MM0的零点为02,我想我会反转MM0在第二步登记,变更FF的00年代和00的到FF的,然后做一个MM1,最后一个或合并这两个。
如果我能得到:
MM3: 00 00 FF FF 00 00 FF FF
then, pand MM2, MM3
MM1: 04 03 00 00 04 03 00 00
MM2: 00 00 02 02 00 00 02 02
finally por MM0, MM1 would give me the desired outcome:
MM0: 04 03 02 02 04 03 02 02 <-- Aha!
总结,我怎么可以得到MM3寄存器为00 00 FF FF 00 00 FF?如何反转这些位,证明在MMX寄存器中只有AND,OR,XOR和NAND指令可用?
任何答案非常感谢。谢谢。
所以......有什么问题吗?看起来你已经自己回答了。 –
在我的问题中,可以阅读:“如果我能够得到”,这意味着我还没有,并正在问你如何。 – nunos